from django.contrib import admin
from .models import Notification, NotificationPreference, UserNotificationPreference, CategoryNotificationPreference, FollowRequest


@admin.register(Notification)
class NotificationAdmin(admin.ModelAdmin):
    list_display = ['id', 'recipient', 'sender', 'notification_type', 'is_read', 'created_at']
    list_filter = ['notification_type', 'is_read', 'created_at']
    search_fields = ['recipient__username', 'sender__username', 'content']
    readonly_fields = ['created_at']
    ordering = ['-created_at']


@admin.register(NotificationPreference)
class NotificationPreferenceAdmin(admin.ModelAdmin):
    list_display = ['user', 'notify_on_follow', 'notify_on_like', 'notify_on_comment']
    search_fields = ['user__username']


@admin.register(UserNotificationPreference)
class UserNotificationPreferenceAdmin(admin.ModelAdmin):
    list_display = ['user', 'target_user', 'notify_on_new_post']
    search_fields = ['user__username', 'target_user__username']


@admin.register(CategoryNotificationPreference)
class CategoryNotificationPreferenceAdmin(admin.ModelAdmin):
    list_display = ['user', 'category', 'notify_on_new_post']
    search_fields = ['user__username', 'category__title']


@admin.register(FollowRequest)
class FollowRequestAdmin(admin.ModelAdmin):
    list_display = ['id', 'requester', 'target', 'status', 'created_at']
    list_filter = ['status', 'created_at']
    search_fields = ['requester__username', 'target__username']
    readonly_fields = ['created_at', 'updated_at']
    ordering = ['-created_at']
