from rest_framework import serializers
from apps.calls.models import UserMessage
from django.contrib.auth import get_user_model


User = get_user_model()

class MessageSerializer(serializers.ModelSerializer):
    recipient_name = serializers.CharField(source='recipient.profile.full_name')
    recipient_id = serializers.IntegerField(source='recipient.id', read_only=True)

    class Meta:
        model = UserMessage
        fields = [
            'id',
            'customer_name',
            'customer_number',
            'subject',
            'body',
            'is_read',
            'recipient_name',
            'recipient_id',
            'created_at'
        ]

        read_only_fields = ['id', 'recipient_name']


class MessageDetailSerializer(serializers.ModelSerializer):
    recipient_id = serializers.IntegerField(source='recipient.id', read_only=True)
    recipient_name = serializers.CharField(source='recipient.profile.full_name')

    class Meta:
        model = UserMessage
        fields = [
            'id',
            'recipient_id',
            'recipient_name',
            'customer_name',
            'customer_number',
            'subject',
            'body',
            'is_read',
            'read_at',
            'created_at',
        ]

        read_only_fields = ['is_read', 'read_at', 'created_at']

class MessageCreateSerializer(serializers.Serializer):
    recipient = serializers.PrimaryKeyRelatedField(
        queryset=User.objects.all()
    )
    customer_name = serializers.CharField(max_length=255)
    customer_number = serializers.CharField(max_length=20)
    subject = serializers.CharField(max_length=255, required=False, allow_blank=True)
    body = serializers.CharField(required=False, allow_blank=True)
