-- =============================================================
-- FASE 9 — Módulo "Evaluaciones en Línea" (examenes-list)
-- Migrado desde uepca/examenes-list.php + examen-hacer/hecho/guarda.php
--
-- PARTE A: ejecutar conectado a la BD central (siscev / jesistem_siscev)
-- PARTE B: ejecutar conectado a la BD de CADA colegio que active el módulo
--          (ejemplo usado en el desarrollo: jesistem_juanxxiii)
-- =============================================================

-- -------------------------------------------------------------
-- PARTE A — siscev: alta del módulo en el catálogo global
-- -------------------------------------------------------------
-- USE siscev;

INSERT IGNORE INTO modulos (slug, nombre, grupo_menu, orden) VALUES
('examenes-list', 'Evaluaciones en Línea', 'Evaluaciones', 62);

-- Habilitar el módulo para un colegio puntual se hace luego desde
-- panel_admin (toggle por colegio), igual que el resto de módulos.
-- Si se prefiere habilitarlo por SQL directo para colegio 11 (Juan XXIII):
--
-- INSERT IGNORE INTO colegio_modulos (id_colegio, id_modulo, habilitado)
-- SELECT 11, id, 1 FROM modulos WHERE slug = 'examenes-list';

-- -------------------------------------------------------------
-- PARTE B — BD del colegio: tablas de exámenes en línea
-- No existían en jesistem_juanxxiii (verificado antes de esta migración,
-- ver documentacion/evaluaciones-en-linea-migracion.md). Estructura
-- calcada de la BD original jesistem_uepca, normalizando a utf8mb4.
-- -------------------------------------------------------------
-- USE jesistem_juanxxiii;

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;
