from django.contrib import admin
from django.contrib.auth.admin import UserAdmin
from django.contrib.auth import get_user_model
from .models import UserInvitation

User = get_user_model()


# Register your models here.
class UserInvitationAdmin(admin.ModelAdmin):
    search_fields = [
        "invitee__email",
        "invitee__first_name",
        "invitee__last_name",
        "invitor_email",
    ]


admin.site.register(UserInvitation, UserInvitationAdmin)


@admin.register(User)
class CustomUserAdmin(UserAdmin):
    # The fields to be used in displaying the User model.
    # These override the definitions on the base UserAdmin
    # that reference specific fields on auth.User.
    model = User
    list_display = ("id", "email", "first_name", "last_name", "company")
    list_filter = ("is_approved", "role")
    fieldsets = (
        (None, {"fields": ("email", "password")}),
        (
            "Personal Info",
            {"fields": ("first_name", "last_name", "mobile_number", "birthdate")},
        ),
        (
            "Permissions",
            {"fields": ("is_staff", "is_superuser", "is_active", "role")},
        ),
        (
            "Additional Info",
            {
                "fields": (
                    "company",
                    "office_address",
                    "company_website",
                    "how_did_you_know",
                    "touchpoint",
                    "brand",
                    "is_approved",
                    "reset_password_token",
                )
            },
        ),
    )
    add_fieldsets = (
        (
            None,
            {
                "classes": ("wide",),
                "fields": (
                    "email",
                    "password1",
                    "password2",
                    "first_name",
                    "last_name",
                    "is_staff",
                    "is_active",
                    "role",
                ),
            },
        ),
    )
    search_fields = ("email", "first_name", "last_name", "company")
    ordering = ("last_name",)
    filter_horizontal = ()
