help-desk/backend/helpdesk/repositories/ticket_repository.py
2025-12-01 05:43:37 +07:00

29 lines
1.4 KiB
Python

from typing import Optional
from helpdesk.models import Ticket
from django.db.models import QuerySet
from django.core.exceptions import ObjectDoesNotExist
class TicketRepository:
def get_ticket_by_id(self, ticket_id: int) -> Optional[Ticket]:
"""ดึง Ticket ตาม ID (คืนค่า None หากไม่พบ)"""
try:
return Ticket.objects.select_related('creator', 'assigned_to').get(pk=ticket_id)
# ดักจับ ObjectDoesNotExist แล้วคืนค่า None เพื่อให้ TicketService ตรวจสอบ if ticket is None และโยน TicketNotFoundError แทน
except ObjectDoesNotExist:
return None
def get_unified_inbox_list(self) -> QuerySet[Ticket]:
"""
ดึงรายการ Ticket ทั้งหมด จัดเรียงตามการอัปเดตล่าสุด
(สำหรับหน้า Unified Inbox)
"""
return Ticket.objects.all().select_related('creator', 'assigned_to').order_by('-last_message_at')
def update_ticket(self, ticket: Ticket, update_data: dict) -> Ticket:
"""อัปเดตฟิลด์ที่ต้องการของ Ticket instance"""
for key, value in update_data.items():
setattr(ticket, key, value)
ticket.save()
return ticket