from django.db import models
from django.conf import settings
from django.utils.translation import gettext_lazy as _

# Constants สำหรับสถานะ
class TicketStatus(models.TextChoices):
    OPEN = 'OPEN', _('Open')
    IN_PROGRESS = 'IN_PROGRESS', _('In Progress')
    RESOLVED = 'RESOLVED', _('Resolved')
    CLOSED = 'CLOSED', _('Closed')

class Ticket(models.Model):
    """โมเดลหลักสำหรับ Ticket/Case"""

    # ฐานข้อมูลจะอ้างอิง User model หลักของ Django (CustomUser)
    creator = models.ForeignKey(
        settings.AUTH_USER_MODEL,
        on_delete=models.SET_NULL,
        null=True,
        related_name='created_tickets'
    )
    assigned_to = models.ForeignKey(
        settings.AUTH_USER_MODEL,
        on_delete=models.SET_NULL,
        null=True, blank=True,
        related_name='assigned_tickets'
    )
    title = models.CharField(max_length=255)
    status = models.CharField(
        max_length=20,
        choices=TicketStatus.choices,
        default=TicketStatus.OPEN
    )
    created_at = models.DateTimeField(auto_now_add=True)
    updated_at = models.DateTimeField(auto_now=True)

    # ฟิลด์สำคัญสำหรับการรวมเป็น Unified Inbox
    last_message_at = models.DateTimeField(
        null=True, blank=True
    )
    last_message_content = models.CharField(
        max_length=255, null=True, blank=True
    )
    is_read = models.BooleanField(
        default=False # สถานะอ่านล่าสุดโดย Agent
    )

    class Meta:
        ordering = ['-updated_at'] # จัดเรียงตามการอัปเดตล่าสุด

    def __str__(self):
        return f"TKT-{self.id}: {self.title}"