USE notas_ballivian;

-- 1) La lista diaria que ya existía pasa a ser la "lista general" (la carga el regente)
RENAME TABLE asistencia TO asistencia_general;

ALTER TABLE asistencia_general
  ADD COLUMN registrado_en TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP;

-- 2) Lista por materia (la carga cada docente en su clase)
CREATE TABLE asistencia_materia (
  id              INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
  inscripcion_id  INT UNSIGNED NOT NULL,
  asignatura_id   INT UNSIGNED NOT NULL,
  fecha           DATE NOT NULL,
  estado          ENUM('P','A','F','L') NOT NULL DEFAULT 'P',
  detalle         VARCHAR(120) NULL,
  registrado_por  INT UNSIGNED NULL,
  registrado_en   TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  UNIQUE KEY uq_asis_materia (inscripcion_id, asignatura_id, fecha),
  INDEX (fecha),
  FOREIGN KEY (inscripcion_id) REFERENCES inscripciones(id) ON DELETE CASCADE,
  FOREIGN KEY (asignatura_id)  REFERENCES asignaturas(id)   ON DELETE CASCADE
) ENGINE=InnoDB;

-- 3) Resumen trimestral (docentes que llevan la asistencia en papel)
CREATE TABLE resumen_trimestral (
  id              INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
  inscripcion_id  INT UNSIGNED NOT NULL,
  asignatura_id   INT UNSIGNED NOT NULL,
  trimestre_id    INT UNSIGNED NOT NULL,
  faltas          SMALLINT UNSIGNED NOT NULL DEFAULT 0,
  atrasos         SMALLINT UNSIGNED NOT NULL DEFAULT 0,
  licencias       SMALLINT UNSIGNED NOT NULL DEFAULT 0,
  registrado_por  INT UNSIGNED NULL,
  registrado_en   TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  UNIQUE KEY uq_resumen (inscripcion_id, asignatura_id, trimestre_id),
  FOREIGN KEY (inscripcion_id) REFERENCES inscripciones(id) ON DELETE CASCADE,
  FOREIGN KEY (asignatura_id)  REFERENCES asignaturas(id)   ON DELETE CASCADE,
  FOREIGN KEY (trimestre_id)   REFERENCES trimestres(id)    ON DELETE CASCADE
) ENGINE=InnoDB;

-- 4) Licencias con adjunto y estado
ALTER TABLE licencias
  ADD COLUMN estado         ENUM('aprobada','anulada') NOT NULL DEFAULT 'aprobada' AFTER motivo,
  ADD COLUMN adjunto        VARCHAR(60)  NULL AFTER estado,
  ADD COLUMN adjunto_nombre VARCHAR(150) NULL AFTER adjunto,
  ADD COLUMN registrado_por INT UNSIGNED NULL AFTER adjunto_nombre,
  ADD COLUMN creada_en      TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP AFTER registrado_por,
  ADD INDEX idx_licencias_fechas (inscripcion_id, desde, hasta);

-- 5) Umbral de faltas acumuladas para la alerta del asesor
INSERT IGNORE INTO configuracion (clave, valor) VALUES ('faltas_discontinuas_alerta', '5');