from rest_framework import serializers
from .models import LuckyDip, LuckyDipPrize, LuckyDipEntry

class LuckyDipSerializer(serializers.ModelSerializer):
    user_entries = serializers.SerializerMethodField()

    def get_user_entries(self, obj):
        request = self.context.get('request')
        if request and request.user.is_authenticated:
            return LuckyDipEntry.objects.filter(lucky_dip=obj, user=request.user).count()
        return 0

    class Meta:
        model = LuckyDip
        fields = [
            'id', 'name', 'entry_amount', 'max_members', 'current_members',
            'is_active', 'draw_date', 'announcement_title', 'announcement_message',
            'is_drawn', 'max_slots_per_user', 'user_entries',
        ]

class LuckyDipAdminSerializer(serializers.ModelSerializer):
    class Meta:
        model = LuckyDip
        fields = '__all__'

class LuckyDipPrizeSerializer(serializers.ModelSerializer):
    product_name = serializers.CharField(source='product.name', read_only=True)
    product_category = serializers.CharField(source='product.category', read_only=True)

    class Meta:
        model = LuckyDipPrize
        fields = ['id', 'lucky_dip', 'position', 'product', 'product_name', 'product_category', 'quantity']

class LuckyDipEntrySerializer(serializers.ModelSerializer):
    class Meta:
        model = LuckyDipEntry
        fields = ['id', 'lucky_dip', 'user', 'entry_number', 'created_at']
