"""
Административная панель для уведомлений.
"""
from django.contrib import admin
from django.utils.html import format_html
from .models import Notification, NotificationPreference, NotificationTemplate, ParentChildNotificationSettings


@admin.register(Notification)
class NotificationAdmin(admin.ModelAdmin):
    """Административная панель для уведомлений."""
    
    list_display = [
        'title', 'recipient', 'notification_type', 'channel',
        'status_badge', 'priority', 'created_at'
    ]
    list_filter = [
        'notification_type', 'channel', 'priority', 'is_read',
        'is_sent', 'created_at'
    ]
    search_fields = [
        'title', 'message', 'recipient__email',
        'recipient__first_name', 'recipient__last_name'
    ]
    date_hierarchy = 'created_at'
    readonly_fields = ['created_at', 'sent_at', 'read_at']
    
    def status_badge(self, obj):
        """Отображение статуса."""
        if obj.is_read:
            return format_html(
                '<span style="background-color: #6B7280; color: white; padding: 3px 10px; border-radius: 3px;">Прочитано</span>'
            )
        elif obj.is_sent:
            return format_html(
                '<span style="background-color: #10B981; color: white; padding: 3px 10px; border-radius: 3px;">Отправлено</span>'
            )
        else:
            return format_html(
                '<span style="background-color: #F59E0B; color: white; padding: 3px 10px; border-radius: 3px;">Ожидает</span>'
            )
    status_badge.short_description = 'Статус'


@admin.register(NotificationPreference)
class NotificationPreferenceAdmin(admin.ModelAdmin):
    """Административная панель для настроек уведомлений."""
    
    list_display = [
        'user', 'enabled', 'email_enabled', 'telegram_enabled',
        'in_app_enabled', 'quiet_hours_enabled'
    ]
    list_filter = ['enabled', 'email_enabled', 'telegram_enabled', 'quiet_hours_enabled']
    search_fields = ['user__email', 'user__first_name', 'user__last_name']


@admin.register(NotificationTemplate)
class NotificationTemplateAdmin(admin.ModelAdmin):
    """Административная панель для шаблонов уведомлений."""
    
    list_display = ['notification_type', 'is_active', 'updated_at']
    list_filter = ['is_active']
    search_fields = ['notification_type']


@admin.register(ParentChildNotificationSettings)
class ParentChildNotificationSettingsAdmin(admin.ModelAdmin):
    """Административная панель для настроек уведомлений родителя для детей."""
    
    list_display = ['parent', 'child', 'enabled', 'updated_at']
    list_filter = ['enabled', 'created_at']
    search_fields = [
        'parent__user__email',
        'parent__user__first_name',
        'parent__user__last_name',
        'child__user__email',
        'child__user__first_name',
        'child__user__last_name'
    ]
    readonly_fields = ['created_at', 'updated_at']
    raw_id_fields = ['parent', 'child']
