import httpx
import os
from app.utils.logging import logger

FONNTE_TOKEN = os.getenv("FONNTE_TOKEN")

async def send_whatsapp_otp(phone_number: str, otp_code: str) -> bool:
    """Mengirimkan kode OTP ke nomor pelanggan menggunakan Fonnte API."""
    if not FONNTE_TOKEN or FONNTE_TOKEN == "your_fonnte_api_token_here":
        logger.warning("WhatsApp token (FONNTE_TOKEN) tidak ditemukan di konfigurasi atau masih default.")
        # Kembalikan True untuk keperluan testing lokal jika token kosong (mocking)
        return True
        
    # Format nomor telepon tujuan agar sesuai standard internasional Indonesia (62...)
    # Sesuai dengan pertanyaan di Implementation Plan, ini hanya trim whitespace dasar
    # dan mengganti awalan 0 menjadi 62.
    target_phone = phone_number.strip().replace(" ", "").replace("-", "")
    if target_phone.startswith("0"):
        target_phone = "62" + target_phone[1:]
        
    url = "https://api.fonnte.com/send"
    headers = {
        "Authorization": FONNTE_TOKEN
    }
    payload = {
        "target": target_phone,
        "message": f"Kode OTP verifikasi check-in FTTH Anda adalah: *{otp_code}*. Berlaku selama 5 menit. Jangan bagikan kode ini kepada siapapun.",
    }
    
    try:
        async with httpx.AsyncClient() as client:
            response = await client.post(url, headers=headers, data=payload, timeout=10.0)
            res_data = response.json()
            
            if response.status_code == 200 and res_data.get("status") is True:
                logger.info(f"OTP berhasil dikirim ke {target_phone} via WhatsApp.")
                return True
            else:
                logger.error(f"Gagal mengirim WhatsApp OTP ke {target_phone}. Response: {res_data}")
                return False
    except Exception as e:
        logger.error(f"Error saat mengirim SMS/WhatsApp: {e}", exc_info=True)
        return False
