-- =============================================================
-- Despliegue colegio SANTA GEMA — idColegio 57 / BD santa_gema
--
-- Ejecutar conectado a la BD del colegio (santa_gema).
-- La PARTE A (constantes en colegio_config, modulos, rutas de PDF) ya esta
-- cargada para el colegio 57; aqui solo va el diff de esquema.
--
-- Origen del diff: comparacion de santa_gema contra las tablas/columnas que
-- referencia el codigo de admin_alumnos/ + admin_docentes/ + core/, contra
-- admin_alumnos/colegios/santagema/, y contra db/fase9, fase12, fase14, fase15.
--
-- MySQL 8.4 no soporta ALTER TABLE ... ADD COLUMN IF NOT EXISTS: si se
-- re-ejecuta el script los ALTER fallan con "Duplicate column name"
-- (inofensivo, seguir). Los CREATE TABLE si son idempotentes.
--
-- Periodos vivos en santa_gema: 2526 y 2627 (activo). Al abrir un periodo
-- nuevo hay que repetir los bloques B3 y B4 con el sufijo nuevo.
-- =============================================================


-- -------------------------------------------------------------
-- B1. alumcer — campos de la planilla propia de Santa Gema
-- admin_alumnos/colegios/santagema/actualizar.php (POST escolaridad/matpen/
-- planteProcede) y .../formatos/planilla.php (los imprime).
-- Hoy la planilla sale con esos renglones en blanco.
-- -------------------------------------------------------------
ALTER TABLE alumcer
    ADD COLUMN planteProcede VARCHAR(100) DEFAULT NULL,
    ADD COLUMN escolaridad   VARCHAR(25)  DEFAULT NULL,
    ADD COLUMN matpen        VARCHAR(100) DEFAULT NULL;


-- -------------------------------------------------------------
-- B2. tasa_por_dia.status — admin_alumnos/registrar-pago.php
-- "SELECT tasaDolar,fecha FROM tasa_por_dia WHERE status=1 ..." revienta hoy
-- con "Unknown column 'status'": el modulo de pagos no abre.
-- -------------------------------------------------------------
ALTER TABLE tasa_por_dia
    ADD COLUMN status CHAR(1) DEFAULT '1';

UPDATE tasa_por_dia SET status = '1' WHERE status IS NULL;


-- -------------------------------------------------------------
-- B3. video<p>.videoLink — modulo Aula Virtual
-- admin_alumnos/video-aula.php lee A.videoLink y
-- admin_docentes/video-aula.php inserta videoLink (singular).
-- santa_gema solo tiene videoLink1..4, que el portal no usa. Las cuatro tablas
-- estan vacias, asi que no hay backfill que hacer.
-- -------------------------------------------------------------
ALTER TABLE video2526    ADD COLUMN videoLink VARCHAR(255) DEFAULT NULL;
ALTER TABLE videopri2526 ADD COLUMN videoLink VARCHAR(255) DEFAULT NULL;
ALTER TABLE video2627    ADD COLUMN videoLink VARCHAR(255) DEFAULT NULL;
ALTER TABLE videopri2627 ADD COLUMN videoLink VARCHAR(255) DEFAULT NULL;


-- -------------------------------------------------------------
-- B4. Material de Clases v2 (db/fase15) — columna que falta
-- admin_docentes/material.php inserta y actualiza tareas<p>.responde.
-- `todos` y tarea_ind_*/tarea_indpri_* ya existen en santa_gema.
-- tareaspri<p> NO necesita responde (el INSERT de primaria no la incluye).
-- -------------------------------------------------------------
ALTER TABLE tareas2526
    ADD COLUMN responde CHAR(1) DEFAULT 'N' COMMENT 'S = el alumno puede enviar por la plataforma la respuesta';
ALTER TABLE tareas2627
    ADD COLUMN responde CHAR(1) DEFAULT 'N' COMMENT 'S = el alumno puede enviar por la plataforma la respuesta';


-- -------------------------------------------------------------
-- B5. Evaluaciones en Linea (db/fase9 + db/fase12)
-- Modulos ya habilitados para el colegio 57: exameneslist, docexamenes,
-- docpreguntas. Sin estas tablas esas pantallas mueren con "Table doesn't exist".
-- -------------------------------------------------------------
CREATE TABLE IF NOT EXISTS examen_varios (
  id_examen     INT           NOT NULL AUTO_INCREMENT,
  id_grado      INT           DEFAULT NULL,
  id_materia    INT           DEFAULT NULL,
  id_seccion    INT           DEFAULT NULL,
  id_docente    INT           DEFAULT NULL,
  titulo_examen VARCHAR(200)  DEFAULT NULL,
  fecha_ini     DATETIME      DEFAULT NULL,
  fecha_fin     DATETIME      DEFAULT NULL,
  publica_nota  DATE          DEFAULT NULL,
  creado        DATETIME      DEFAULT NULL,
  status        CHAR(1)       DEFAULT NULL,
  valor         DECIMAL(11,2) DEFAULT NULL,
  periodo       VARCHAR(10)   DEFAULT NULL,
  PRIMARY KEY (id_examen),
  KEY idx_examen_varios_busqueda (id_grado, id_seccion, periodo, status)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;

CREATE TABLE IF NOT EXISTS examen_pregunta (
  id_pregunta   INT          NOT NULL AUTO_INCREMENT,
  pregunta      LONGTEXT,
  id_grado      INT          DEFAULT NULL,
  id_materia    INT          DEFAULT NULL,
  tipo_pregunta CHAR(1)      DEFAULT NULL COMMENT '1=simple, 2=multiple, 3=texto',
  id_docente    INT          DEFAULT NULL,
  respuesta     LONGTEXT,
  complemento   LONGTEXT,
  creado        DATETIME     DEFAULT NULL,
  status        CHAR(1)      DEFAULT NULL,
  imagen        VARCHAR(200) DEFAULT NULL,
  PRIMARY KEY (id_pregunta)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;

CREATE TABLE IF NOT EXISTS examen_preguntas (
  id_tabla    INT           NOT NULL AUTO_INCREMENT,
  id_examen   INT           DEFAULT NULL,
  id_pregunta INT           DEFAULT NULL,
  valor       DECIMAL(11,2) DEFAULT NULL,
  PRIMARY KEY (id_tabla),
  KEY idx_examen_preguntas_examen (id_examen),
  KEY idx_examen_preguntas_pregunta (id_pregunta)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;

CREATE TABLE IF NOT EXISTS examen_opciones (
  id          INT NOT NULL AUTO_INCREMENT,
  id_pregunta INT DEFAULT NULL,
  opcion      LONGTEXT,
  correcta    LONGTEXT,
  PRIMARY KEY (id),
  KEY idx_examen_opciones_pregunta (id_pregunta)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;

CREATE TABLE IF NOT EXISTS examen_respuesta (
  id_respuesta  INT        NOT NULL AUTO_INCREMENT,
  id_examen     INT        DEFAULT NULL,
  id_pregunta   INT        DEFAULT NULL,
  id_alum       INT        DEFAULT NULL,
  fecha_res     DATETIME   DEFAULT NULL,
  tipo_pregunta INT        DEFAULT NULL,
  respuesta     LONGTEXT,
  comentario    LONGTEXT,
  grado         INT        DEFAULT NULL,
  seccion       INT        DEFAULT NULL,
  periodo       VARCHAR(9) DEFAULT NULL,
  PRIMARY KEY (id_respuesta),
  KEY idx_examen_respuesta_lookup (id_examen, id_pregunta, id_alum)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='Respuestas de los estudiantes';

CREATE TABLE IF NOT EXISTS examen_notas (
  id_nota     INT           NOT NULL AUTO_INCREMENT,
  id_alum     INT           DEFAULT NULL,
  id_examen   INT           DEFAULT NULL,
  id_pregunta INT           DEFAULT NULL,
  fecha       DATETIME      DEFAULT NULL,
  nota        DECIMAL(10,2) DEFAULT NULL,
  observacion TEXT,
  PRIMARY KEY (id_nota),
  KEY idx_examen_notas_lookup (id_examen, id_alum)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;

CREATE TABLE IF NOT EXISTS examen_vio (
  id_tabla  INT      NOT NULL AUTO_INCREMENT,
  id_examen INT      DEFAULT NULL,
  idAlum    INT      DEFAULT NULL,
  fecha     DATETIME DEFAULT NULL,
  PRIMARY KEY (id_tabla)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;

CREATE TABLE IF NOT EXISTS bitacora_examen (
  id_bitacora INT      NOT NULL AUTO_INCREMENT,
  idUser      INT      DEFAULT NULL,
  fecha       DATETIME DEFAULT NULL,
  evento      TEXT,
  id_alum     INT      DEFAULT NULL,
  id_examen   INT      DEFAULT NULL,
  PRIMARY KEY (id_bitacora),
  KEY idx_bitacora_examen_alum (id_examen, id_alum)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='Auditoria de acciones docentes sobre examenes';

CREATE TABLE IF NOT EXISTS examen_borrado (
  id_registro   INT          NOT NULL AUTO_INCREMENT,
  id_user       INT          DEFAULT NULL,
  fecha         DATETIME     DEFAULT NULL,
  grado         INT          DEFAULT NULL,
  seccion       INT          DEFAULT NULL,
  materia       INT          DEFAULT NULL,
  motivo        TEXT,
  titulo_examen VARCHAR(200) DEFAULT NULL,
  id_alum       INT          DEFAULT NULL,
  id_examen     INT          DEFAULT NULL,
  PRIMARY KEY (id_registro),
  KEY idx_examen_borrado_examen (id_examen, id_alum)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='Historico de respuestas de examen borradas por el docente';


-- -------------------------------------------------------------
-- B6. Docente Guia (db/fase14) — modulos docenteguia / docguia, ya habilitados
-- admin_docentes/docente-guia.php
-- observa_guia arranca vacia: el docente carga las frases desde la pantalla.
-- Para heredar un catalogo institucional ver el seed comentado al final de
-- db/fase14-portal-docentes-comunicacion.sql.
-- -------------------------------------------------------------
CREATE TABLE IF NOT EXISTS observa_guia (
  id_observa INT UNSIGNED NOT NULL AUTO_INCREMENT,
  observa    LONGTEXT     NOT NULL,
  status     CHAR(1)      NOT NULL DEFAULT '1',
  PRIMARY KEY (id_observa)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

CREATE TABLE IF NOT EXISTS observa_guia_alum (
  id_observa_guia_alum INT UNSIGNED NOT NULL AUTO_INCREMENT,
  id_observa           INT UNSIGNED NULL,
  id_observa2          INT UNSIGNED NULL,
  id_observa3          INT UNSIGNED NULL,
  cedula               VARCHAR(20)  NOT NULL,
  lapso                CHAR(1)      NOT NULL,
  periodo              VARCHAR(9)   NOT NULL,
  PRIMARY KEY (id_observa_guia_alum),
  UNIQUE KEY uq_alum_lapso_periodo (cedula, lapso, periodo)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;


-- =============================================================
-- OPCIONAL — Notificaciones Telegram a representantes
-- Solo si se activa para este colegio (requiere TELEGRAM_BOT_TOKEN y
-- TELEGRAM_BOT_NAME en colegio_config; hoy el colegio 57 no los tiene, por eso
-- admin_alumnos/layout/base.php todavia no consulta telegram_chat_id).
-- Arquitectura y mantenimiento anual: documentacion/telegram-notificaciones.md
-- Los triggers dependen de cortes2627/materiass2627: copiarlos de
-- db/colegios/colegiojuanxxiii-telegram.sql ajustando el periodo.
-- =============================================================
-- ALTER TABLE represe
--     ADD COLUMN telegram_chat_id   VARCHAR(32) DEFAULT NULL,
--     ADD COLUMN telegram_linked_at DATETIME    DEFAULT NULL;
--
-- ALTER TABLE preinscripcion
--     ADD COLUMN notif_boleta_valor   DATE DEFAULT NULL,
--     ADD COLUMN notif_primaria_valor DATE DEFAULT NULL;
--
-- (mas notif_telegram_queue: ver db/colegios/colegiojuanxxiii-telegram.sql)


-- =============================================================
-- NO incluido a proposito (revisado y descartado)
--
-- * alumcer.miUsuario y nom_emerg_1..2, y el bloque de perfil de
--   represe/madres/padres (religion_rep, edoCivil*, dedica*, religion*)
--   -> santa_gema YA los tiene. Login y "Mi Perfil" no necesitan nada.
-- * boletas<p>.mate111..mate127, notaprimaria<p>.notap11xx/12xx, matri<p>.rev14,
--   alumcer.cultura/deporte/lateral/religion/vive_con_*/vista/tipo_alumno,
--   represe.etnia_rep, madres.nacioMama, padres.nacioPapa
--   -> slots y campos propios de la planilla de Juan XXIII. Ni el codigo comun
--      ni admin_alumnos/colegios/santagema/ los referencian.
-- * certifi.periodo, comunica_docen.periodo, tbl_documentos.periodo/plan_estudio,
--   equivalencia.*_planilla, impresora.*_HB, video<p>.instrucciones/indicaciones
--   -> sin uso en el portal (esas queries van con A.*).
-- * Tablas de periodos viejos (pagos2122..2425, cortes1718.., trgsp2122..,
--   notaprimaria2324, materiass1819, ...), archivos, compra, compra_detalle,
--   marca_diaria, promociones, sugerencias, tabla_montos, tasa_historia, trma,
--   obs_al_empleado, error_subida_pagos, colegio
--   -> pertenecen al sistema administrativo de escritorio, no al portal.
-- =============================================================
