from django.contrib import admin

from .models import PromedioGlobal, Valoracion


@admin.register(Valoracion)
class ValoracionAdmin(admin.ModelAdmin):
    list_display = ("paciente", "estrellas", "estado", "created_at")
    list_filter = ("estado", "estrellas", "created_at")
    search_fields = ("paciente__nombre", "paciente__apellido", "comentario")
    readonly_fields = ("paciente", "cita", "estrellas", "comentario", "created_at")
    actions = ["aprobar_seleccionadas", "rechazar_seleccionadas"]

    @admin.action(description="Aprovar avaliações selecionadas")
    def aprobar_seleccionadas(self, request, queryset):
        updated = queryset.update(estado=Valoracion.Estado.APROBADA)
        if updated:
            PromedioGlobal.get_instance().recalcular()
        self.message_user(request, f"{updated} avaliação(ões) aprovada(s).")

    @admin.action(description="Rejeitar avaliações selecionadas")
    def rechazar_seleccionadas(self, request, queryset):
        updated = queryset.update(estado=Valoracion.Estado.RECHAZADA)
        if updated:
            PromedioGlobal.get_instance().recalcular()
        self.message_user(request, f"{updated} avaliação(ões) rejeitada(s).")


@admin.register(PromedioGlobal)
class PromedioGlobalAdmin(admin.ModelAdmin):
    list_display = ("promedio", "total")

    def has_add_permission(self, request):
        return not PromedioGlobal.objects.exists()

    def has_delete_permission(self, request, obj=None):
        return False
