from rest_framework import serializers
from apps.calls.models import Notification


class CallNotificationSerializer(serializers.Serializer):
    """Nested serializer for call information in notifications"""
    id = serializers.IntegerField(read_only=True)
    caller_name = serializers.CharField(read_only=True, allow_null=True)
    from_number = serializers.CharField(read_only=True)


class NotificationSerializer(serializers.ModelSerializer):
    recipient_name = serializers.CharField(source='recipient.profile.full_name')
    recipient_id = serializers.IntegerField(source='recipient.id', read_only=True)
    call_id = serializers.IntegerField(source='call.id', read_only=True, allow_null=True)
    call = CallNotificationSerializer(read_only=True, allow_null=True)

    class Meta:
        model = Notification
        fields = [
            "id",
            "notification_type",
            "title",
            "message",
            "is_read",
            "read_at",
            "created_at",
            'recipient_id',
            "recipient_name",
            "call_id",
            "call",
        ]

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