import requests
from app import celery
from config import Config
from bot.razer_bot import run_topup

@celery.task(bind=True, max_retries=2)
def process_topup(self, data: dict):
    order_id  = data.get("order_id")
    player_id = data.get("player_id")
    category  = data.get("category")

    result = run_topup(player_id, category)

    if result["success"]:
        _update_woocommerce(order_id, status="completed", note="✅ تم الشحن بنجاح")
    else:
        # أعد المحاولة مرتين قبل الفشل النهائي
        try:
            raise self.retry(countdown=30, exc=Exception(result["error"]))
        except Exception:
            _update_woocommerce(
                order_id,
                status="failed",
                note=f"❌ فشل الشحن: {result['error']}"
            )

    return result

def _update_woocommerce(order_id, status, note):
    if not order_id:
        return
    try:
        requests.put(
            f"{Config.WC_URL}/orders/{order_id}",
            auth=(Config.WC_KEY, Config.WC_SECRET),
            json={"status": status, "customer_note": note},
            timeout=10
        )
    except Exception as e:
        print(f"WC update failed: {e}")
