from django.contrib import admin
from .models import RaffleEvent, RaffleEntry


class RaffleEntryInline(admin.TabularInline):
    model = RaffleEntry
    extra = 0
    readonly_fields = ['registration_code', 'full_name', 'scanned_at', 'ip_address']
    can_delete = True
    ordering = ['-scanned_at']


@admin.register(RaffleEvent)
class RaffleEventAdmin(admin.ModelAdmin):
    list_display = ['name', 'slug', 'is_active', 'is_archived', 'entry_count', 'created_at']
    list_filter = ['is_active', 'is_archived']
    search_fields = ['name', 'slug']
    readonly_fields = ['slug', 'created_at', 'updated_at', 'entry_count']
    inlines = [RaffleEntryInline]

    def entry_count(self, obj):
        return obj.entry_count
    entry_count.short_description = 'Entries'


@admin.register(RaffleEntry)
class RaffleEntryAdmin(admin.ModelAdmin):
    list_display = ['full_name', 'registration_code', 'event', 'scanned_at', 'ip_address']
    list_filter = ['event']
    search_fields = ['registration_code', 'full_name']
    readonly_fields = ['scanned_at', 'ip_address']
    ordering = ['-scanned_at']
