# quiz/serializers.py
from rest_framework import serializers
from .models import Country, Category, QuestionAnswer, UserQuizPerformance, Feedback

class CountrySerializer(serializers.ModelSerializer):
    class Meta:
        model = Country
        fields = ['id', 'name', 'created_at']

class CategorySerializer(serializers.ModelSerializer):
    country = serializers.PrimaryKeyRelatedField(queryset=Country.objects.all())
    question_count = serializers.SerializerMethodField()

    class Meta:
        model = Category
        fields = ['id', 'country', 'name', 'created_at', 'question_count']

    def get_question_count(self, obj):
        return obj.questionanswer_set.count()

class QuestionAnswerSerializer(serializers.ModelSerializer):
    country = CountrySerializer()
    category = CategorySerializer()

    class Meta:
        model = QuestionAnswer
        fields = ['id', 'country', 'category', 'question_text', 'option_a', 'option_b', 'option_c', 'option_d', 'correct_option','difficulty','language', 'created_at']

class UserQuizPerformanceSerializer(serializers.ModelSerializer):
    user = serializers.StringRelatedField()
    country = CountrySerializer()
    category = CategorySerializer()

    class Meta:
        model = UserQuizPerformance
        fields = '__all__'
        read_only_fields = ['id', 'quiz_attempted_at', 'best_score', 'best_time', 'total_attempts']

class FeedbackSerializer(serializers.ModelSerializer):
    class Meta:
        model = Feedback
        fields = ['id', 'country', 'category', 'question', 'user_email', 'description', 'created_at']

    def to_representation(self, instance):
        representation = super().to_representation(instance)
        representation['country'] = CountrySerializer(instance.country).data
        representation['category'] = CategorySerializer(instance.category).data
        representation['question'] = QuestionAnswerSerializer(instance.question).data
        return representation