"""
Admin configuration for the accounts app.
"""
from django.contrib import admin
from django.contrib.auth.admin import UserAdmin
from django.utils.html import format_html
from apps.accounts.models import CustomUser


@admin.register(CustomUser)
class CustomUserAdmin(UserAdmin):
    """Admin configuration for CustomUser model."""
    list_display = ('username', 'email', 'cnic', 'full_name', 'role', 'is_active', 'date_joined')
    list_filter = ('role', 'is_active', 'is_staff')
    search_fields = ('username', 'email', 'full_name', 'cnic')
    ordering = ('-date_joined',)
    readonly_fields = ('reset_password_button',)

    def reset_password_button(self, obj):
        if obj and obj.pk:
            url = f'/admin/accounts/customuser/{obj.pk}/password/'
            return format_html(
                '<a href="{}" class="button" style="'
                'background:#e74c3c;color:#fff;padding:6px 16px;'
                'border-radius:4px;text-decoration:none;font-weight:bold;'
                'font-size:13px;display:inline-flex;align-items:center;gap:6px;">'
                '&#128273; Reset Password'
                '</a>',
                url,
            )
        return '—'
    reset_password_button.short_description = 'Password Reset'

    fieldsets = (
        (None, {
            'fields': ('username', 'password', 'reset_password_button'),
        }),
    ) + UserAdmin.fieldsets[1:] + (
        ('Custom Fields', {
            'fields': (
                'full_name', 'role', 'phone_number', 'cnic',
                'age', 'qualification', 'last_degree', 'work_experience',
                'reference_name', 'reference_mobile',
                'prefer_certificate_privacy',
                'bio', 'profile_picture',
            )
        }),
    )

    add_fieldsets = UserAdmin.add_fieldsets + (
        ('Custom Fields', {
            'fields': ('full_name', 'role', 'phone_number', 'cnic')
        }),
    )
