from django.contrib import admin
from .models import (
    Notification, NotificationCategory, NotificationTag, 
    NotificationTagRelation, SiteStatistic
)


class NotificationTagInline(admin.TabularInline):
    model = NotificationTagRelation
    extra = 1
    verbose_name = "Tag"
    verbose_name_plural = "Tags"


@admin.register(NotificationCategory)
class NotificationCategoryAdmin(admin.ModelAdmin):
    list_display = ('name', 'description', 'color_code')
    search_fields = ('name',)
    list_filter = ('name',)


@admin.register(Notification)
class NotificationAdmin(admin.ModelAdmin):
    list_display = (
        'title', 'category', 'priority', 'is_featured', 
        'is_active', 'published_date', 'created_at'
    )
    list_filter = (
        'category', 'priority', 'is_featured', 'is_active', 
        'published_date', 'created_at'
    )
    search_fields = ('title', 'description', 'content')
    prepopulated_fields = {'slug': ('title',)}
    readonly_fields = ('created_at', 'updated_at')
    inlines = [NotificationTagInline]
    
    fieldsets = (
        ('Basic Information', {
            'fields': ('title', 'slug', 'description', 'content')
        }),
        ('Categorization', {
            'fields': ('category', 'priority')
        }),
        ('Status & Visibility', {
            'fields': ('is_active', 'is_featured', 'published_date')
        }),
        ('Additional Information', {
            'fields': ('external_link', 'attachment')
        }),
        ('SEO', {
            'fields': ('meta_description',),
            'classes': ('collapse',)
        }),
        ('Timestamps', {
            'fields': ('created_at', 'updated_at'),
            'classes': ('collapse',)
        }),
    )
    
    date_hierarchy = 'published_date'
    ordering = ('-published_date', '-created_at')


@admin.register(NotificationTag)
class NotificationTagAdmin(admin.ModelAdmin):
    list_display = ('name',)
    search_fields = ('name',)


@admin.register(SiteStatistic)
class SiteStatisticAdmin(admin.ModelAdmin):
    list_display = ('name', 'value', 'order', 'is_active')
    list_filter = ('is_active',)
    search_fields = ('name', 'description')
    list_editable = ('order', 'is_active')
    ordering = ('order', 'name')
    
    fieldsets = (
        ('Basic Information', {
            'fields': ('name', 'value', 'description')
        }),
        ('Display Settings', {
            'fields': ('icon', 'order', 'is_active')
        }),
    )
