from rest_framework import serializers from apps.support.models import SupportRoom, SupportMessage class SupportMessageSerializer(serializers.ModelSerializer): sender_name = serializers.SerializerMethodField() timestamp_ms = serializers.SerializerMethodField() class Meta: model = SupportMessage fields = ( 'id', 'room', 'sender_type', 'sender_name', 'content', 'is_read', 'created_at', 'timestamp_ms', ) read_only_fields = fields def get_sender_name(self, obj: SupportMessage) -> str: if obj.sender_type == SupportMessage.SenderType.SUPPORT: if obj.sender and obj.sender.fullname: return obj.sender.fullname return 'Support Specialist' if obj.sender and obj.sender.fullname: return obj.sender.fullname return 'You' def get_timestamp_ms(self, obj: SupportMessage) -> int: if not obj.created_at: return 0 return int(obj.created_at.timestamp() * 1000) class SendSupportMessageSerializer(serializers.Serializer): content = serializers.CharField( required=True, allow_blank=False, max_length=4000, trim_whitespace=True, ) class SupportRoomSerializer(serializers.ModelSerializer): class Meta: model = SupportRoom fields = ( 'id', 'status', 'unread_by_user', 'last_message_at', 'created_at', ) read_only_fields = fields