from django.contrib import admin

from .models import BloqueoFecha, Cita, CitaLog, HorarioDoctora, Servicio


@admin.register(Servicio)
class ServicioAdmin(admin.ModelAdmin):
    list_display = ("nombre", "orden", "mostrar_en_home", "duracion_minutos", "precio", "is_active")
    list_editable = ("orden", "mostrar_en_home", "is_active")
    list_filter = ("is_active", "mostrar_en_home")
    search_fields = ("nombre",)
    ordering = ("orden",)
    fieldsets = (
        (None, {
            "fields": ("nombre", "descripcion", "foto", "posicion_foto", "orden", "mostrar_en_home"),
        }),
        ("Ícone SVG (opcional)", {
            "fields": ("icono_svg",),
            "description": "Cole aqui o código SVG path do ícone. Apenas o atributo 'd' do path.",
            "classes": ("collapse",),
        }),
        ("Consultas e Preço", {
            "fields": ("duracion_minutos", "precio"),
            "classes": ("collapse",),
        }),
    )


@admin.register(HorarioDoctora)
class HorarioDoctoraAdmin(admin.ModelAdmin):
    list_display = ("get_dia_display", "hora_inicio", "hora_fin", "activo")
    list_filter = ("dia_semana", "activo")

    @admin.display(description="Dia")
    def get_dia_display(self, obj):
        return obj.get_dia_semana_display()


@admin.register(BloqueoFecha)
class BloqueoFechaAdmin(admin.ModelAdmin):
    list_display = ("fecha", "motivo", "is_active")
    list_filter = ("is_active",)
    search_fields = ("motivo",)


class CitaLogInline(admin.TabularInline):
    model = CitaLog
    extra = 0
    readonly_fields = ("usuario", "estado_anterior", "estado_nuevo", "motivo", "fecha")


@admin.register(Cita)
class CitaAdmin(admin.ModelAdmin):
    list_display = ("paciente", "servicio", "fecha_hora", "duracion_minutos", "estado")
    list_filter = ("estado", "servicio", "fecha_hora")
    search_fields = ("paciente__email", "paciente__nombre")
    date_hierarchy = "fecha_hora"
    inlines = [CitaLogInline]
