from django.contrib import admin
from .models import ICICTRegistrant, AttendanceDay, DailyAttendance, AttendanceConfiguration, WorkshopFeedback, FeedbackConfiguration


@admin.register(ICICTRegistrant)
class ICICTRegistrantAdmin(admin.ModelAdmin):
    list_display = ['registration_id', 'name', 'email', 'payment_status', 'created_at']
    list_filter = ['payment_status', 'created_at']
    search_fields = ['name', 'email', 'registration_id', 'affiliation']
    ordering = ['registration_id']
    readonly_fields = ['created_at', 'updated_at']


@admin.register(AttendanceDay)
class AttendanceDayAdmin(admin.ModelAdmin):
    list_display = ['day_number', 'title', 'date', 'is_active', 'created_at']
    list_filter = ['is_active', 'date']
    search_fields = ['title', 'description']
    ordering = ['day_number']


@admin.register(DailyAttendance)
class DailyAttendanceAdmin(admin.ModelAdmin):
    list_display = ['registrant', 'attendance_day', 'checked_in_at', 'ip_address']
    list_filter = ['attendance_day', 'checked_in_at']
    search_fields = ['registrant__name', 'registrant__email', 'registrant__registration_id']
    ordering = ['-checked_in_at']
    readonly_fields = ['checked_in_at', 'ip_address', 'user_agent']


@admin.register(AttendanceConfiguration)
class AttendanceConfigurationAdmin(admin.ModelAdmin):
    list_display = ['current_day', 'attendance_enabled', 'updated_at']
    readonly_fields = ['updated_at']
    
    def has_add_permission(self, request):
        # Only allow one configuration instance
        return not AttendanceConfiguration.objects.exists()
    
    def has_delete_permission(self, request, obj=None):
        # Don't allow deletion of the configuration
        return False


@admin.register(WorkshopFeedback)
class WorkshopFeedbackAdmin(admin.ModelAdmin):
    list_display = ['participant_email', 'participant_name', 'overall_rating', 'content_quality', 'presenter_effectiveness', 'venue_facilities', 'submitted_at']
    list_filter = ['overall_rating', 'content_quality', 'presenter_effectiveness', 'venue_facilities', 'submitted_at', 'session_type']
    search_fields = ['participant_email', 'participant_name', 'what_liked_most', 'suggestions_improvement']
    ordering = ['-submitted_at']
    readonly_fields = ['submitted_at', 'ip_address']
    
    fieldsets = (
        ('Participant Information', {
            'fields': ('registrant', 'participant_name', 'participant_email', 'is_anonymous')
        }),
        ('Session Details', {
            'fields': ('attendance_day', 'session_type')
        }),
        ('Ratings', {
            'fields': ('overall_rating', 'content_quality', 'presenter_effectiveness', 'venue_facilities')
        }),
        ('Feedback Comments', {
            'fields': ('what_liked_most', 'suggestions_improvement', 'additional_topics', 'general_comments')
        }),
        ('Metadata', {
            'fields': ('submitted_at', 'ip_address'),
            'classes': ('collapse',)
        })
    )


@admin.register(FeedbackConfiguration)
class FeedbackConfigurationAdmin(admin.ModelAdmin):
    list_display = ['feedback_enabled', 'current_feedback_day', 'allow_anonymous_feedback', 'updated_at']
    readonly_fields = ['updated_at']
    
    fieldsets = (
        ('Feedback Settings', {
            'fields': ('feedback_enabled', 'current_feedback_day', 'feedback_message')
        }),
        ('Privacy Settings', {
            'fields': ('allow_anonymous_feedback',)
        }),
        ('Metadata', {
            'fields': ('updated_at',),
            'classes': ('collapse',)
        })
    )
    
    def has_add_permission(self, request):
        # Only allow one configuration instance
        return not FeedbackConfiguration.objects.exists()
    
    def has_delete_permission(self, request, obj=None):
        # Don't allow deletion of the configuration
        return False
