-- =============================================================
-- Despliegue colegio UEP LIBERTADOR — idColegio 5 / BD jesistem_uepliber
--
-- PARTE A: ejecutar conectado a la BD central (jesistem_siscev)
-- PARTE B: ejecutar conectado a la BD del colegio (jesistem_uepliber)
--
-- Origen del diff: comparacion de jesistem_uepliber contra las tablas/columnas
-- que referencia el codigo de admin_alumnos/ + admin_docentes/ + core/, y contra
-- las migraciones db/fase9, fase12, fase14 y 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.
-- =============================================================


-- =============================================================
-- PARTE A — jesistem_siscev
-- =============================================================

-- Constantes migradas desde ueplibertador/inicia.php (33 constantes).
--
-- OJO: CKLS y CLAVEMAIL (clave SMTP del buzon del colegio) NO van aqui a proposito,
-- para no versionar credenciales. Cargarlas a mano en
-- panel_admin/colegio.php -> "Constantes institucionales", tomando los valores del
-- inicia.php legado del colegio. Sin CLAVEMAIL el envio de correos falla.
INSERT INTO colegio_config (id_colegio, clave, valor) VALUES
(5, 'ANOANTE', '2024-2025'),
(5, 'ANOESCM', '2025-2026'),
(5, 'BANCO1M', 'Mercantil'),
(5, 'BANCO2M', '****'),
(5, 'BANCO3M', '****'),
(5, 'BENEF1M', 'A.C. Unidad Educativa Colegio Libertador'),
(5, 'BENEF2M', '*****'),
(5, 'BENEF3M', '****'),
(5, 'CEDCTRL', 'V-'),
(5, 'CEDDIRM', 'V 4683786'),
(5, 'CIUDADM', 'Turmero'),
(5, 'CORREOM', 'uep_libertador@jesistemas.com'),
(5, 'CTRLEST', 'PROF.'),
(5, 'CUENT1M', '0105-0108-33-1108006256'),
(5, 'CUENT2M', '****-****-**-**********'),
(5, 'CUENT3M', '****'),
(5, 'DATOSMM', ''),
(5, 'DEUDATOT', '480'),
(5, 'DIRECCM', 'Calle Bolivar N° 6'),
(5, 'DIRECONS', 'CALLE BOLIVAR N° 6 TURMERO -  TELF.: (0244)663.00.74 / 663.46.35 '),
(5, 'DIRECTM', 'ROSEMARY BLANCO ROMERO'),
(5, 'DOMINIO', 'ueplibertador.jesistemas.com'),
(5, 'EKKS', 'Colegio Libertador'),
(5, 'ESTADOM', 'Aragua'),
(5, 'NKXS', 'Unidad Educativa Privada '),
(5, 'PERIDOM', '1'),
(5, 'PROXANOE', '2026-2027'),
(5, 'RIFCOLM', 'J-30708320-4'),
(5, 'SUCORREO', 'ueplibertadors06@gmail.com'),
(5, 'TELEMPM', '(0244)- 663.00.74 / 663.46.35'),
(5, 'ZONA', 'Turmero')
ON DUPLICATE KEY UPDATE valor = VALUES(valor);

-- El token fijo de login se genera aparte:  php gen-token.php 5
-- Los modulos habilitados se togglean desde panel_admin (no se tocan aqui).


-- =============================================================
-- PARTE B — jesistem_uepliber
-- =============================================================

-- -------------------------------------------------------------
-- B1. alumcer — columnas que el portal exige (login incluido)
--
-- CRITICO: admin_alumnos/login.php hace
--   SELECT ... nom_emerg_1 FROM alumcer WHERE (cedula=? || miUsuario=?) ...
-- Sin miUsuario ni nom_emerg_1 el login del alumno falla siempre.
--
-- alumcer ya tiene el bloque de emergencia con el naming VIEJO
-- (nom_eme1/paren_eme1/tlf_eme1/dire_eme1, y su par _2). Se AGREGAN las
-- columnas nuevas en vez de renombrar, para no romper la app legacy de
-- ueplibertador/ que sigue leyendo las viejas.
-- -------------------------------------------------------------
ALTER TABLE alumcer
    ADD COLUMN miUsuario       VARCHAR(50)  DEFAULT NULL,
    ADD COLUMN nom_emerg_1     VARCHAR(50)  DEFAULT NULL,
    ADD COLUMN pare_emerg_1    INT          DEFAULT NULL,
    ADD COLUMN tlf_emerg_hab_1 VARCHAR(30)  DEFAULT NULL,
    ADD COLUMN tlf_emerg_ofi_1 VARCHAR(30)  DEFAULT NULL,
    ADD COLUMN tlf_emerg_cel_1 VARCHAR(30)  DEFAULT NULL,
    ADD COLUMN nom_emerg_2     VARCHAR(50)  DEFAULT NULL,
    ADD COLUMN pare_emerg_2    INT          DEFAULT NULL,
    ADD COLUMN tlf_emerg_hab_2 VARCHAR(30)  DEFAULT NULL,
    ADD COLUMN tlf_emerg_ofi_2 VARCHAR(30)  DEFAULT NULL,
    ADD COLUMN tlf_emerg_cel_2 VARCHAR(30)  DEFAULT NULL,
    ADD COLUMN planteProcede   VARCHAR(100) DEFAULT NULL,
    ADD COLUMN escolaridad     VARCHAR(25)  DEFAULT NULL,
    ADD COLUMN matpen          VARCHAR(100) DEFAULT NULL;

-- Backfill del bloque de emergencia desde el naming viejo (795 de 961 alumnos
-- lo tienen cargado). El telefono viejo es uno solo -> va al de habitacion.
UPDATE alumcer SET
    nom_emerg_1     = nom_eme1,
    pare_emerg_1    = paren_eme1,
    tlf_emerg_hab_1 = tlf_eme1,
    nom_emerg_2     = nom_eme2,
    pare_emerg_2    = paren_eme2,
    tlf_emerg_hab_2 = tlf_eme2
WHERE nom_eme1 IS NOT NULL OR nom_eme2 IS NOT NULL;

-- -------------------------------------------------------------
-- B2. represe / madres / padres — "Mi Perfil" generico
--
-- El colegio 5 tiene carpetaColeg = NULL, o sea usa la vista generica
-- (admin_alumnos/perfil.php + perfil-actualizar.php + procesos/actualizar.php),
-- que escribe estas columnas. Sin ellas el guardado del perfil muere con
-- "NO ACTUALIZO EL REPRESENTANTE / NO AGREGO MAMA / ...".
-- -------------------------------------------------------------
ALTER TABLE represe
    ADD COLUMN religion_rep VARCHAR(100) DEFAULT NULL;

ALTER TABLE madres
    ADD COLUMN edoCivilMama VARCHAR(50)  DEFAULT NULL,
    ADD COLUMN dedicaMama   VARCHAR(100) DEFAULT NULL,
    ADD COLUMN religionMama VARCHAR(100) DEFAULT NULL;

ALTER TABLE padres
    ADD COLUMN edoCivilPapa VARCHAR(50)  DEFAULT NULL,
    ADD COLUMN dedicaPapa   VARCHAR(100) DEFAULT NULL,
    ADD COLUMN religionPapa VARCHAR(100) DEFAULT NULL;

-- -------------------------------------------------------------
-- B3. Tablas sueltas que usa el portal del alumno
--
-- actualiza_datos -> admin_alumnos/perfil-actualizar.php, procesos/actualizar.php
-- tasa_por_dia    -> admin_alumnos/registrar-pago.php  (OJO: la tabla tasa_dia
--                    que ya existe es otra cosa -montos de nomina-, no sirve)
-- vio_video       -> admin_alumnos/statusVideo.php, video-aula.php
-- -------------------------------------------------------------
CREATE TABLE IF NOT EXISTS actualiza_datos (
  id     INT      NOT NULL AUTO_INCREMENT,
  idAlum INT      DEFAULT NULL,
  fecha  DATETIME DEFAULT NULL,
  PRIMARY KEY (id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;

CREATE TABLE IF NOT EXISTS tasa_por_dia (
  id        INT           NOT NULL AUTO_INCREMENT,
  tasaDolar DECIMAL(11,2) DEFAULT NULL,
  fecha     DATE          DEFAULT NULL,
  status    CHAR(1)       DEFAULT '1',
  PRIMARY KEY (id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;

CREATE TABLE IF NOT EXISTS vio_video (
  id_vio      INT      NOT NULL AUTO_INCREMENT,
  idVideo     INT      DEFAULT NULL,
  idAlum      INT      DEFAULT NULL,
  statusVideo CHAR(1)  DEFAULT NULL,
  fechaCreado DATETIME DEFAULT CURRENT_TIMESTAMP,
  PRIMARY KEY (id_vio)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;

-- tasa_por_dia arranca vacia: registrar-pago.php muestra tasa 0 hasta que se
-- cargue la primera. Ajustar el monto real antes de habilitar el modulo de pagos.
INSERT INTO tasa_por_dia (tasaDolar, fecha, status) VALUES (0.00, CURDATE(), '1');

-- -------------------------------------------------------------
-- B4. Evaluaciones en Linea — modulo examenes-list (db/fase9 + db/fase12)
-- Lado alumno: admin_alumnos/examenes-list.php y examen-*.php
-- Lado docente: admin_docentes/examenes-list.php, preguntas-*.php, examen-*.php
-- -------------------------------------------------------------
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';

-- -------------------------------------------------------------
-- B5. Docente Guia — modulo doc-guia (db/fase14)
-- admin_docentes/docente-guia.php
-- -------------------------------------------------------------
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;

-- observa_guia arranca vacia: el docente carga las frases desde docente-guia.php.
-- Si se quiere heredar el catalogo institucional de otro colegio, ver el seed
-- comentado al final de db/fase14-portal-docentes-comunicacion.sql.

-- -------------------------------------------------------------
-- B6. Material de Clases v2 (db/fase15)
-- Material dirigido a alumnos especificos + respuesta del alumno por plataforma.
-- Periodos existentes en jesistem_uepliber: 2526 y 2627.
-- Al abrir un periodo nuevo hay que repetir este bloque con el sufijo nuevo.
-- -------------------------------------------------------------
ALTER TABLE tareas2526
    ADD COLUMN todos    CHAR(1) DEFAULT 'S',
    ADD COLUMN responde CHAR(1) DEFAULT 'N' COMMENT 'S = el alumno puede enviar por la plataforma la respuesta';
ALTER TABLE tareaspri2526
    ADD COLUMN todos CHAR(1) DEFAULT 'S';

ALTER TABLE tareas2627
    ADD COLUMN todos    CHAR(1) DEFAULT 'S',
    ADD COLUMN responde CHAR(1) DEFAULT 'N' COMMENT 'S = el alumno puede enviar por la plataforma la respuesta';
ALTER TABLE tareaspri2627
    ADD COLUMN todos CHAR(1) DEFAULT 'S';

CREATE TABLE IF NOT EXISTS tarea_ind_2526 (
  id_tabla INT NOT NULL AUTO_INCREMENT,
  idTarea  INT DEFAULT NULL,
  idAlum   INT DEFAULT NULL,
  PRIMARY KEY (id_tabla)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

CREATE TABLE IF NOT EXISTS tarea_indpri_2526 (
  id_tabla INT NOT NULL AUTO_INCREMENT,
  idTarea  INT DEFAULT NULL,
  idAlum   INT DEFAULT NULL,
  PRIMARY KEY (id_tabla)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

CREATE TABLE IF NOT EXISTS tarea_ind_2627 (
  id_tabla INT NOT NULL AUTO_INCREMENT,
  idTarea  INT DEFAULT NULL,
  idAlum   INT DEFAULT NULL,
  PRIMARY KEY (id_tabla)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

CREATE TABLE IF NOT EXISTS tarea_indpri_2627 (
  id_tabla INT NOT NULL AUTO_INCREMENT,
  idTarea  INT DEFAULT NULL,
  idAlum   INT DEFAULT NULL,
  PRIMARY KEY (id_tabla)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;


-- =============================================================
-- OPCIONAL — Notificaciones Telegram a representantes
-- Solo si se va a activar ese modulo para este colegio.
-- Arquitectura y mantenimiento anual: documentacion/telegram-notificaciones.md
-- Los triggers (que dependen de cortes<periodo>/materiass<periodo>) NO estan
-- aqui: copiarlos de db/colegios/colegiojuanxxiii-telegram.sql ajustando el
-- periodo activo de este colegio.
-- =============================================================
-- 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)
--
-- * boletas<p>.mate101..mate127, notaprimaria<p>.notap10xx..notap12xx,
--   matri<p>.mat14/nota114/rev14  -> slots extra de materias/grados propios de
--   Juan XXIII. Ningun archivo del repo los referencia.
-- * alumcer.vista/lateral/religion/deporte/cultura/etnia_rep, represe.etnia_rep
--   -> solo los usa admin_alumnos/colegios/colegiojuanxxiii/. El colegio 5 tiene
--   carpetaColeg NULL, asi que va por la vista generica. Agregarlas solo si
--   despues se le crea carpeta propia.
-- * periodos.articulo13, *.becado, videopri<p>.videoLink1..4, horario_general,
--   tablas de periodos viejos (pagos2122, matri2324, notaprimaria2324, ...)
--   -> sin uso en el codigo del portal.
-- =============================================================
