help-desk/backend/chat/views/message_views.py

35 lines
1.5 KiB
Python

from rest_framework import viewsets, status
from rest_framework.response import Response
from chat.services.message_service import message_service
from chat.serializers.message_serializers import MessageSerializer, MessageCreateSerializer
from rest_framework.permissions import IsAuthenticated
from drf_spectacular.utils import extend_schema, extend_schema_view
@extend_schema_view(
list=extend_schema(tags=['2. Application Service']),
create=extend_schema(tags=['2. Application Service']),
)
class MessageViewSet(viewsets.GenericViewSet):
"""View สำหรับจัดการข้อความที่อยู่ภายใต้ Ticket"""
permission_classes = [IsAuthenticated]
def list(self, request):
ticket_id = request.query_params.get('ticket_id')
messages = message_service.get_ticket_messages(ticket_id=ticket_id)
serializer = MessageSerializer(messages, many=True)
return Response(serializer.data)
def create(self, request):
serializer = MessageCreateSerializer(data=request.data)
serializer.is_valid(raise_exception=True)
new_message = message_service.create_and_send_message(
ticket_id=serializer.validated_data['ticket'].id,
sender=request.user,
content=serializer.validated_data['content'],
message_type=serializer.validated_data['message_type']
)
response_serializer = MessageSerializer(new_message)
return Response(response_serializer.data, status=status.HTTP_201_CREATED)