from django.contrib import admin
from .models import Permission, Role, UserCompanyRole


@admin.register(Permission)
class PermissionAdmin(admin.ModelAdmin):
    list_display = ['id', 'name', 'codename', 'is_active', 'created_at']
    list_filter = ['is_active', 'created_at']
    search_fields = ['name', 'codename']
    readonly_fields = ['created_at', 'updated_at']


@admin.register(Role)
class RoleAdmin(admin.ModelAdmin):
    list_display = ['id', 'name', 'company', 'is_active', 'created_at']
    list_filter = ['is_active', 'company', 'created_at']
    search_fields = ['name', 'company__name']
    filter_horizontal = ['permissions']  # Easy to select permissions
    readonly_fields = ['created_at', 'updated_at']

    fieldsets = (
        ('Basic Information', {
            'fields': ('name', 'company', 'description')
        }),
        ('Settings', {
            'fields': ('is_active',)
        }),
        ('Permissions', {
            'fields': ('permissions',)
        }),
        ('Timestamps', {
            'fields': ('created_at', 'updated_at'),
            'classes': ('collapse',)
        }),
    )


@admin.register(UserCompanyRole)
class UserCompanyRoleAdmin(admin.ModelAdmin):
    list_display = [
        'id',
        'user',
        'company',
        'role',
        'phone',
    ]

    list_filter = [
        'company',
        'role',
        'is_default',
        'is_active',
        'is_owner',
        'is_available',
        'created_at',
    ]

    search_fields = [
        'user__username',
        'user__email',
        'company__name',
        'role__name',
        'phone',
        'designation',
    ]

    readonly_fields = ['created_at', 'updated_at']

    autocomplete_fields = ['user', 'company', 'role', 'created_by']

    ordering = ['-updated_at', '-created_at']

    fieldsets = (
        ('Membership Identity', {
            'fields': ('user', 'company', 'role', 'is_owner',)
        }),
        ('Membership Status', {
            'fields': ('is_default', 'is_active', 'is_available', 'invited_at', 'left_at')
        }),
        ('Per-Company Profile', {
            'fields': ('first_name', 'last_name', 'image', 'phone', 'designation')
        }),
        ('Audit', {
            'fields': ('created_by', 'created_at', 'updated_at'),
        }),
    )
