import requests
import logging
from django.conf import settings

logger = logging.getLogger(__name__)


def send_sms(phone_numbers, message, sender_id=None):
    """
    Send an SMS via MboaSMS API.

    Args:
        phone_numbers: list of phone number strings (e.g. ["+237670000000"])
        message: the SMS text content
        sender_id: optional sender ID override (defaults to settings.MBOASMS_SENDER_ID)

    Returns:
        dict with keys: success (bool), message (str), data (dict|None)
    """
    api_key = settings.MBOASMS_API_KEY
    if not api_key:
        logger.error("MBOASMS_API_KEY is not configured")
        return {"success": False, "message": "SMS API key not configured", "data": None}

    url = f"{settings.MBOASMS_BASE_URL}/api/v1/developer/sms/send"
    headers = {
        "X-API-Key": api_key,
        "Content-Type": "application/json",
    }
    payload = {
        "phoneNumbers": phone_numbers,
        "message": message,
        "senderId": sender_id or settings.MBOASMS_SENDER_ID,
    }

    try:
        response = requests.post(url, json=payload, headers=headers, timeout=30)
        result = response.json()

        if response.status_code == 200 and result.get("success"):
            logger.info(f"SMS sent: {result.get('successCount', 0)} succeeded, {result.get('failedCount', 0)} failed")
            return {"success": True, "message": result.get("errorMessage") or "SMS sent", "data": result}
        else:
            logger.error(f"SMS failed ({response.status_code}): {result}")
            return {"success": False, "message": result.get("errorMessage") or result.get("message", "Unknown error"), "data": result}
    except requests.exceptions.RequestException as e:
        logger.error(f"SMS request error: {e}")
        return {"success": False, "message": str(e), "data": None}
