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

from .models import User


@admin.register(User)
class UserAdmin(BaseUserAdmin):
    """Admin configuration for the Telegram-only user model."""

    model = User
    list_display = (
        "telegram_user_id",
        "username",
        "first_name",
        "last_name",
        "credit_balance",
        "referral_code",
        "referred_by",
        "is_staff",
        "is_active",
    )
    list_filter = ("is_staff", "is_superuser", "is_active")
    search_fields = (
        "telegram_user_id",
        "username",
        "first_name",
        "last_name",
        "referral_code",
    )
    ordering = ("-created_at",)
    readonly_fields = ("last_login", "created_at", "updated_at")

    fieldsets = (
        ("Account", {"fields": ("telegram_user_id", "password")}),
        (
            "Profile",
            {
                "fields": (
                    "username",
                    "first_name",
                    "last_name",
                    "language_code",
                    "photo_url",
                )
            },
        ),
        ("Referral", {"fields": ("referral_code", "referred_by")}),
        (
            "Permissions",
            {
                "fields": (
                    "is_active",
                    "is_staff",
                    "is_superuser",
                    "groups",
                    "user_permissions",
                )
            },
        ),
        ("Important dates", {"fields": ("last_login", "created_at", "updated_at")}),
    )

    add_fieldsets = (
        (
            None,
            {
                "classes": ("wide",),
                "fields": (
                    "telegram_user_id",
                    "username",
                    "first_name",
                    "last_name",
                    "language_code",
                    "photo_url",
                    "referral_code",
                    "referred_by",
                    "is_active",
                    "is_staff",
                    "is_superuser",
                ),
            },
        ),
    )
