from django.contrib import admin
from django.contrib.auth.admin import UserAdmin as BaseUserAdmin
from .models import User, UserPrescription, ExerciseLog


@admin.register(User)
class UserAdmin(BaseUserAdmin):
    list_display = ('email', 'display_name', 'is_therapist', 'is_active', 'is_staff', 'created_at')
    list_filter = ('is_active', 'is_staff', 'is_superuser', 'is_therapist')
    search_fields = ('email', 'display_name')
    ordering = ('-created_at',)
    readonly_fields = ('created_at',)

    fieldsets = (
        (None, {'fields': ('email', 'password')}),
        ('Profile', {'fields': ('display_name',)}),
        ('Permissions', {'fields': ('is_active', 'is_staff', 'is_superuser', 'is_therapist', 'groups', 'user_permissions')}),
        ('Dates', {'fields': ('created_at',)}),
    )
    add_fieldsets = (
        (None, {
            'classes': ('wide',),
            'fields': ('email', 'display_name', 'password1', 'password2', 'is_staff', 'is_superuser', 'is_therapist'),
        }),
    )


@admin.register(UserPrescription)
class UserPrescriptionAdmin(admin.ModelAdmin):
    list_display = ('patient', 'therapist', 'breathing_mode', 'visualization_type', 'locked', 'updated_at')
    list_filter = ('breathing_mode', 'visualization_type', 'locked')
    search_fields = ('patient__email', 'therapist__email')
    autocomplete_fields = ('patient', 'therapist')


@admin.register(ExerciseLog)
class ExerciseLogAdmin(admin.ModelAdmin):
    list_display = ('patient', 'breathing_mode', 'visualization_type', 'duration_seconds', 'breath_count', 'completed_at')
    list_filter = ('breathing_mode', 'visualization_type')
    search_fields = ('patient__email',)
    readonly_fields = ('completed_at',)
