# services/creator.py
from datetime import datetime
from typing import Dict, Any, Tuple, Optional


def creator_can_post_now(creator_info: Dict[str, Any]) -> Tuple[bool, Optional[str]]:
    if not creator_info:
        return False, "Unable to verify TikTok creator status."

    if creator_info.get("posting_disabled") is True:
        return False, "Posting is currently disabled for this TikTok account."
    if creator_info.get("publish_disabled") is True:
        return False, "Publishing is temporarily disabled for this TikTok account."
    if creator_info.get("can_post") is False:
        return False, "This TikTok account cannot publish at this moment."
    if creator_info.get("can_publish") is False:
        return False, "This TikTok account cannot publish at this moment."
    if creator_info.get("can_make_more_posts") is False:
        return False, "Daily posting limit reached. Please try again later."

    return True, None


def parse_publish_at_iso_to_ts(publish_at: str) -> int:
    """
    Requiere ISO8601 con offset (ej: 2026-01-24T09:00:00+01:00).
    """
    publish_at = (publish_at or "").strip()
    if not publish_at:
        raise ValueError("missing_publish_at")
    dt = datetime.fromisoformat(publish_at)
    if dt.tzinfo is None:
        raise ValueError("publish_at must include timezone offset (e.g. +01:00)")
    return int(dt.timestamp())
