"""
Historico de notificaciones (congelado).

Este modelo era la unica auditoria que habia y solo guardaba destinatario,
cuerpo, tipo y estado. Tenia tres limitaciones que lo hacian poco util:

* obligaba a crear una fila en `Numbers` por cada destinatario, lo que no
  encaja con el correo (una direccion no es un numero de telefono);
* no guardaba el identificador del proveedor, asi que no habia forma de
  relacionar un envio con lo que decia el panel de Twilio o de SendGrid;
* el estado se escribia como "Enviada" al llamar al proveedor y ya no cambiaba
  nunca, de modo que un mensaje rebotado seguia constando como enviado.

Lo sustituye `NotificationMessage`, que cubre los tres canales y recibe los
cambios de estado por webhook.

Este modelo se conserva **solo de lectura** para no perder el historico que ya
existe. No se escribe nada nuevo aqui. Se puede eliminar cuando el historico
deje de hacer falta.
"""

from django.db import models

from notifications.models.numbers import Numbers


class Notifications(models.Model):
    to = models.ForeignKey(Numbers, on_delete=models.CASCADE, verbose_name="Para")
    body = models.TextField(verbose_name="Cuerpo")
    type = models.IntegerField(
        choices=[(1, "SMS"), (2, "WhatsApp"), (3, "Email")], verbose_name="Tipo"
    )
    status = models.IntegerField(
        choices=[(1, "Enviada"), (2, "Recibida"), (3, "Error"), (4, "Pendiente")],
        verbose_name="Estatus",
    )
    created_at = models.DateTimeField(
        auto_now_add=True, verbose_name="Fecha de creación"
    )
    updated_at = models.DateTimeField(
        auto_now=True, verbose_name="Fecha de actualización"
    )

    class Meta:
        verbose_name = "Notificación (histórico)"
        verbose_name_plural = "Notificaciones (histórico)"

    def __str__(self):
        return f"{self.to} -> {self.type}"
