from rest_framework import serializers

from .models import Dispute, DisputeMessage


class DisputeMessageSerializer(serializers.ModelSerializer):
    sender = serializers.SerializerMethodField()

    class Meta:
        model = DisputeMessage
        fields = ["id", "sender", "message", "created_at"]

    def get_sender(self, obj):
        return {
            "id": obj.sender.id,
            "phone": obj.sender.phone,
            "name": obj.sender.name,
        }


class DisputeDetailSerializer(serializers.ModelSerializer):
    deal_code = serializers.CharField(source="deal.code", read_only=True)
    messages = DisputeMessageSerializer(many=True, read_only=True)
    raised_by = serializers.SerializerMethodField()

    class Meta:
        model = Dispute
        fields = [
            "id",
            "deal_code",
            "status",
            "reason_category",
            "reason_detail",
            "tier",
            "ai_recommendation",
            "resolution",
            "resolution_type",
            "resolved_at",
            "raised_by",
            "messages",
        ]

    def get_raised_by(self, obj):
        return {
            "id": obj.raised_by.id,
            "phone": obj.raised_by.phone,
            "name": obj.raised_by.name,
        }
