# pyrefly: ignore [missing-import]
from telethon import events
from database.manager import DatabaseManager
from utils.sms_parser import parse_payment_sms
# pyrefly: ignore [missing-import]
from aiohttp import web
import json
import asyncio

db = DatabaseManager()

# --- Web API for Android App ---
async def handle_api_payment(request):
    try:
        data = await request.json()
        # Expecting: {"text": "SMS body here", "sender": "bKash"}
        text = data.get("text", "")
        sender = data.get("sender", "Unknown")
        
        payment = parse_payment_sms(text, sender=sender)
        if payment:
            amount, txnid, method = payment
            await db.add_payment(txnid, amount, method)
            print(f"[API-PAY] Logged {method}: {txnid} | {amount} (From: {sender})")
            return web.json_response({"status": "success", "txnid": txnid})
        
        return web.json_response({"status": "ignored", "reason": "Scam or invalid format detected"}, status=400)
    except Exception as e:
        return web.json_response({"status": "error", "msg": str(e)}, status=500)

async def handle_resolve_key(request):
    key_code = request.query.get("key")
    if not key_code:
        return web.json_response({"status": "error", "msg": "Key required"}, status=400)
    
    key_data = await db.get_license(key_code.upper())
    if key_data:
        return web.json_response({
            "status": "success", 
            "url": key_data['url']
        })
    
    return web.json_response({"status": "error", "msg": "Invalid Key"}, status=404)

async def start_api_server():
    app = web.Application()
    app.router.add_post('/sms', handle_api_payment)
    app.router.add_get('/resolve', handle_resolve_key)
    runner = web.AppRunner(app)
    await runner.setup()
    site = web.TCPSite(runner, '0.0.0.0', 5000)
    await site.start()

async def start_payment_api(client):
    await start_api_server()
