"""
One-off: MLBB Philippines cheapest package via run_auto_order (smile_auth.json).
Does not modify Brazil code paths. Usage:
  python tools/run_ph_mlbb_smoke_order.py
  set GAME_ID / SERVER_ID env to override defaults.
"""

from __future__ import annotations

import os
import sys
from decimal import ROUND_HALF_UP, Decimal
from pathlib import Path

ROOT = Path(__file__).resolve().parents[1]
sys.path.insert(0, str(ROOT))
os.chdir(ROOT)


def main() -> None:
    try:
        from dotenv import load_dotenv

        load_dotenv(ROOT / ".env")
    except ImportError:
        pass

    game_id = (os.environ.get("GAME_ID") or "").strip()
    server_id = (os.environ.get("SERVER_ID") or "").strip()
    if not game_id or not server_id:
        print("[smoke] Set GAME_ID and SERVER_ID (MLBB User ID and Zone ID).")
        sys.exit(1)
    url = "https://www.smile.one/ph/merchant/mobilelegends"

    from currency import parse_php_amount_from_text
    from order_automation import run_auto_order
    from scraper_playwright import run_game_packages_cached

    print(f"[smoke] Scraping packages: {url}")
    data = run_game_packages_cached(url, bypass_cache=True)
    rows = data.get("packages") or []

    best_row = None
    best_cents: int | None = None
    for p in rows:
        pt = (p.get("price_text") or "").strip()
        amt = parse_php_amount_from_text(pt)
        if amt is None:
            continue
        c = int((amt * Decimal(100)).quantize(Decimal("1"), rounding=ROUND_HALF_UP))
        if c <= 0:
            continue
        if best_cents is None or c < best_cents:
            best_cents = c
            best_row = p

    if not best_row or best_cents is None:
        print("[smoke] ERROR: no PHP package found")
        sys.exit(1)

    li = str((best_row.get("smile_li_id") or "")).strip()
    name = (best_row.get("name") or "").strip()
    print(f"[smoke] Cheapest: php_cents={best_cents} li_id={li!r} name={name[:60]!r}")

    result = run_auto_order(
        url,
        package_brl_cents=None,
        package_php_cents=best_cents,
        package_name=name,
        package_index=None,
        form_data={"game_id": game_id, "server_id": server_id},
        smile_li_id=li or None,
    )
    print("[smoke] Result:", result)


if __name__ == "__main__":
    main()
