from __future__ import annotations

from datetime import datetime, timedelta, timezone

from app.schemas.remnawave import RemnawaveUser


def make_remote_user(
    *,
    user_uuid: str,
    user_id: int,
    short_uuid: str,
    username: str,
    telegram_id: int | None,
    expire_at: datetime | None = None,
    traffic_limit_bytes: int = 0,
) -> RemnawaveUser:
    now = datetime.now(timezone.utc).replace(microsecond=0)
    expire = expire_at or (now + timedelta(days=30))

    return RemnawaveUser.model_validate(
        {
            "uuid": user_uuid,
            "id": user_id,
            "shortUuid": short_uuid,
            "username": username,
            "status": "ACTIVE",
            "trafficLimitBytes": traffic_limit_bytes,
            "expireAt": expire.isoformat().replace("+00:00", "Z"),
            "telegramId": telegram_id,
            "email": None,
            "description": None,
            "tag": "BOT",
            "hwidDeviceLimit": None,
            "externalSquadUuid": None,
            "trojanPassword": f"trojan-{user_id}",
            "vlessUuid": f"00000000-0000-0000-0000-{user_id:012d}",
            "ssPassword": f"ss-{user_id}",
            "lastTriggeredThreshold": 0,
            "subRevokedAt": None,
            "subLastUserAgent": None,
            "subLastOpenedAt": None,
            "lastTrafficResetAt": None,
            "createdAt": now.isoformat().replace("+00:00", "Z"),
            "updatedAt": now.isoformat().replace("+00:00", "Z"),
            "subscriptionUrl": f"https://example.com/sub/{short_uuid}",
            "activeInternalSquads": [
                {
                    "uuid": "11111111-1111-1111-1111-111111111111",
                    "name": "VPN",
                }
            ],
            "userTraffic": {
                "usedTrafficBytes": 0,
                "lifetimeUsedTrafficBytes": 0,
                "onlineAt": None,
                "firstConnectedAt": None,
                "lastConnectedNodeUuid": None,
            },
        }
    )
