import uuid

from django.db import models


class Call(models.Model):
    class Provider(models.TextChoices):
        MCUBE = "mcube", "MCube"

    class Direction(models.TextChoices):
        OUTBOUND = "outbound", "Outbound"
        INBOUND = "inbound", "Inbound"

    id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)

    provider = models.CharField(max_length=20, choices=Provider.choices, default=Provider.MCUBE, db_index=True)
    direction = models.CharField(max_length=20, choices=Direction.choices, default=Direction.OUTBOUND, db_index=True)

    bot = models.ForeignKey(
        "agents.AgentConfig",
        on_delete=models.SET_NULL,
        null=True,
        blank=True,
        related_name="calls",
    )

    custnumber = models.CharField(max_length=64, db_index=True)
    exenumber = models.CharField(max_length=64, blank=True, default="")
    gid = models.CharField(max_length=64, blank=True, default="1")

    # Telephony provider identifiers
    provider_call_id = models.CharField(max_length=128, null=True, blank=True, db_index=True)  # e.g. MCube callid/sid

    status = models.CharField(max_length=32, blank=True, default="", db_index=True)
    metadata = models.JSONField(default=dict, blank=True)
    last_error = models.TextField(blank=True, default="")

    created_at = models.DateTimeField(auto_now_add=True)
    updated_at = models.DateTimeField(auto_now=True)

    class Meta:
        db_table = "calls_call"
        ordering = ["-created_at"]

