52 lines
1.8 KiB
Python

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}"