from django.contrib import admin
from .models import (
    Facultad, Carrera, Gestion, Asignatura, Persona,
    Grupo, EncuestaPlantilla, Pregunta, Token, Respuesta,
)


@admin.register(Facultad)
class FacultadAdmin(admin.ModelAdmin):
    list_display = ["nombre"]
    search_fields = ["nombre"]


@admin.register(Carrera)
class CarreraAdmin(admin.ModelAdmin):
    list_display = ["nombre", "facultad"]
    list_filter = ["facultad"]
    search_fields = ["nombre"]


@admin.register(Gestion)
class GestionAdmin(admin.ModelAdmin):
    list_display = ["nombre", "fecha_inicio", "fecha_fin", "activa"]
    list_filter = ["activa"]


@admin.register(Asignatura)
class AsignaturaAdmin(admin.ModelAdmin):
    list_display = ["nombre", "carrera"]
    list_filter = ["carrera__facultad", "carrera"]
    search_fields = ["nombre"]


@admin.register(Persona)
class PersonaAdmin(admin.ModelAdmin):
    list_display = ["nombre", "email", "rol"]
    list_filter = ["rol"]
    search_fields = ["nombre", "email"]


@admin.register(Grupo)
class GrupoAdmin(admin.ModelAdmin):
    list_display = ["asignatura", "codigo", "gestion", "docente", "director", "cantidad_estudiantes"]
    list_filter = ["gestion", "asignatura__carrera"]


class PreguntaInline(admin.TabularInline):
    model = Pregunta
    extra = 0


@admin.register(EncuestaPlantilla)
class EncuestaPlantillaAdmin(admin.ModelAdmin):
    list_display = ["tipo", "version", "titulo", "activa"]
    list_filter = ["tipo", "activa"]
    inlines = [PreguntaInline]


@admin.register(Token)
class TokenAdmin(admin.ModelAdmin):
    list_display = ["token", "tipo", "etiqueta", "grupo", "estado", "creado_en", "usado_en"]
    list_filter = ["tipo", "estado", "grupo__gestion"]
    search_fields = ["token"]
    readonly_fields = ["token", "creado_en", "usado_en"]


@admin.register(Respuesta)
class RespuestaAdmin(admin.ModelAdmin):
    list_display = ["id", "plantilla", "enviado_en"]
    list_filter = ["plantilla__tipo"]
    readonly_fields = ["token", "plantilla", "respuestas", "enviado_en"]
