35 lines
1.5 KiB
Python
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)
|
|
|