from django.contrib import admin
from .models import Event, EventCategory


@admin.register(EventCategory)
class EventCategoryAdmin(admin.ModelAdmin):
    list_display = ['name', 'code', 'created_at']
    search_fields = ['name', 'code']


@admin.register(Event)
class EventAdmin(admin.ModelAdmin):
    list_display = ['name', 'category', 'start_date', 'end_date', 'location', 'is_paid', 'is_active', 'is_archived', 'is_registerable']
    list_filter = ['category', 'is_active', 'is_archived', 'is_paid', 'is_registerable']
    search_fields = ['name', 'location']
    date_hierarchy = 'start_date'
    readonly_fields = ['archived_at', 'created_at', 'updated_at']
    fieldsets = (
        ('Event Details', {'fields': ('name', 'category', 'event_type', 'description', 'start_date', 'end_date', 'location', 'parent_event')}),
        ('Registration', {'fields': ('is_registerable', 'max_capacity', 'is_paid', 'amount')}),
        ('Status', {'fields': ('is_active', 'is_archived', 'archived_at')}),
        ('Timestamps', {'fields': ('created_at', 'updated_at')}),
    )

    actions = ['archive_events', 'unarchive_events']

    def archive_events(self, request, queryset):
        for event in queryset:
            event.archive()
        self.message_user(request, f'{queryset.count()} event(s) archived.')
    archive_events.short_description = 'Archive selected events'

    def unarchive_events(self, request, queryset):
        for event in queryset:
            event.unarchive()
        self.message_user(request, f'{queryset.count()} event(s) unarchived.')
    unarchive_events.short_description = 'Unarchive selected events'
