from django.contrib import admin
from .models import Registration, PaymentProof


class PaymentProofInline(admin.TabularInline):
    model = PaymentProof
    extra = 0
    readonly_fields = ['uploaded_at']


@admin.register(Registration)
class RegistrationAdmin(admin.ModelAdmin):
    list_display = ['full_name', 'registration_code', 'email', 'event', 'status', 'payment_status', 'has_attended', 'registered_at']
    list_filter = ['status', 'payment_status', 'has_attended', 'event']
    search_fields = ['full_name', 'email', 'registration_code']
    readonly_fields = ['registration_code', 'registered_at', 'updated_at']
    date_hierarchy = 'registered_at'
    inlines = [PaymentProofInline]
    actions = ['approve_registrations', 'approve_payments']

    def approve_registrations(self, request, queryset):
        queryset.update(status='approved')
        self.message_user(request, f'{queryset.count()} registration(s) approved.')
    approve_registrations.short_description = 'Approve selected registrations'

    def approve_payments(self, request, queryset):
        queryset.update(payment_status='approved')
        self.message_user(request, f'{queryset.count()} payment(s) approved.')
    approve_payments.short_description = 'Approve payment for selected registrations'


@admin.register(PaymentProof)
class PaymentProofAdmin(admin.ModelAdmin):
    list_display = ['registration', 'uploaded_at', 'reviewed', 'reviewed_at']
    list_filter = ['reviewed']
    readonly_fields = ['uploaded_at']
