"""
Proveedor de consola para SMS y WhatsApp.

No envia nada: registra el mensaje y devuelve exito. Sirve para desarrollo y
para las pruebas automatizadas, donde llamar a Twilio de verdad seria lento,
costoso y una fuente de fallos intermitentes.
"""

from __future__ import annotations

import logging
import uuid

from notifications.channels.common import SendResult
from notifications.channels.messaging.base import MessagingPayload, MessagingProvider

logger = logging.getLogger("notifications.channels.console")


class ConsoleMessagingProvider(MessagingProvider):
    name = "console"
    channels = ("sms", "whatsapp")

    def send(self, payload: MessagingPayload) -> SendResult:
        message_id = f"SM{uuid.uuid4().hex}"
        logger.info(
            "Mensaje simulado (proveedor de consola)",
            extra={
                "channel": payload.channel,
                "provider_message_id": message_id,
                "to": payload.to,
                "template_sid": payload.template_sid,
                "longitud_cuerpo": len(payload.body),
            },
        )
        return SendResult.ok(self.name, message_id, status_code=201)
