from django.contrib import admin
from django.contrib.auth.admin import UserAdmin

from .models import CustomUser, LoginOTP


@admin.register(CustomUser)
class CustomUserAdmin(UserAdmin):
    model = CustomUser
    list_display = (
        "id",
        "username",
        "email",
        "role",
        "is_active",
        "is_staff",
        "is_superuser",
        "created_at",
    )
    list_filter = ("role", "is_active", "is_staff", "is_superuser", "created_at")
    search_fields = ("username", "email", "first_name", "last_name")
    ordering = ("id",)
    readonly_fields = ("created_at", "updated_at", "last_login", "date_joined")

    fieldsets = UserAdmin.fieldsets + (
        (
            "CRM Role",
            {
                "fields": (
                    "role",
                    "created_at",
                    "updated_at",
                )
            },
        ),
    )

    add_fieldsets = UserAdmin.add_fieldsets + (
        (
            "CRM Role",
            {
                "fields": (
                    "email",
                    "role",
                )
            },
        ),
    )


@admin.register(LoginOTP)
class LoginOTPAdmin(admin.ModelAdmin):
    list_display = ("id", "user", "expires_at", "is_used", "attempts", "created_at")
    list_filter = ("is_used", "expires_at", "created_at")
    search_fields = ("user__username", "user__email")
    readonly_fields = ("created_at", "updated_at")
