from rest_framework import serializers
from .models import Event, EventCategory


class EventCategorySerializer(serializers.ModelSerializer):
    class Meta:
        model = EventCategory
        fields = ['id', 'name', 'code', 'description', 'created_at']


class EventSerializer(serializers.ModelSerializer):
    category_name = serializers.CharField(source='category.name', read_only=True)
    registration_count = serializers.ReadOnlyField()
    is_at_capacity = serializers.ReadOnlyField()

    class Meta:
        model = Event
        fields = [
            'id', 'name', 'category', 'category_name', 'event_type', 'description',
            'start_date', 'end_date', 'location', 'is_paid', 'amount',
            'is_active', 'is_archived', 'archived_at', 'is_registerable',
            'max_capacity', 'parent_event', 'registration_count', 'is_at_capacity',
            'self_checkin_enabled', 'self_checkin_lat', 'self_checkin_lng', 'self_checkin_radius_m',
            'created_at', 'updated_at',
        ]


class EventListSerializer(serializers.ModelSerializer):
    category_name = serializers.CharField(source='category.name', read_only=True)
    registration_count = serializers.ReadOnlyField()

    class Meta:
        model = Event
        fields = [
            'id', 'name', 'category', 'category_name', 'event_type',
            'start_date', 'end_date', 'location', 'is_paid', 'amount',
            'is_active', 'is_archived', 'is_registerable',
            'max_capacity', 'registration_count',
            'self_checkin_enabled', 'self_checkin_radius_m',
        ]
