CREATE TABLE IF NOT EXISTS bapes_turno (
    id_bapes_turno INT UNSIGNED NOT NULL AUTO_INCREMENT,
    id_anio_lectivo SMALLINT UNSIGNED NOT NULL,
    fecha DATE NOT NULL,
    id_nivel CHAR(3) NULL,
    id_grado TINYINT UNSIGNED NULL,
    id_seccion TINYINT UNSIGNED NULL,
    observacion VARCHAR(250) NULL,
    estado ENUM('PROGRAMADO','EN_PROCESO','CERRADO','CANCELADO') NOT NULL DEFAULT 'PROGRAMADO',
    creado_en DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
    actualizado_en DATETIME NULL,
    PRIMARY KEY (id_bapes_turno),
    UNIQUE KEY uq_bapes_turno_fecha (id_anio_lectivo, fecha),
    KEY idx_bapes_turno_aula (id_anio_lectivo, id_nivel, id_grado, id_seccion),
    CONSTRAINT fk_bapes_turno_anio
        FOREIGN KEY (id_anio_lectivo) REFERENCES anio_lectivo(id_anio_lectivo)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

CREATE TABLE IF NOT EXISTS bapes_turno_apoderado (
    id_bapes_turno_apoderado INT UNSIGNED NOT NULL AUTO_INCREMENT,
    id_bapes_turno INT UNSIGNED NOT NULL,
    id_apoderado INT UNSIGNED NOT NULL,
    orden TINYINT UNSIGNED NOT NULL DEFAULT 1,
    hora_programada_ingreso TIME NULL,
    hora_programada_salida TIME NULL,
    hora_ingreso TIME NULL,
    hora_salida TIME NULL,
    estado ENUM('PROGRAMADO','ASISTIO','TARDANZA','FALTO','PERMISO') NOT NULL DEFAULT 'PROGRAMADO',
    observacion VARCHAR(250) NULL,
    creado_en DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
    actualizado_en DATETIME NULL,
    PRIMARY KEY (id_bapes_turno_apoderado),
    UNIQUE KEY uq_bapes_turno_apoderado (id_bapes_turno, id_apoderado),
    KEY idx_bapes_apoderado (id_apoderado),
    CONSTRAINT fk_bapes_turno_apoderado_turno
        FOREIGN KEY (id_bapes_turno) REFERENCES bapes_turno(id_bapes_turno)
        ON DELETE CASCADE,
    CONSTRAINT fk_bapes_turno_apoderado_persona
        FOREIGN KEY (id_apoderado) REFERENCES persona(id_persona)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

CREATE TABLE IF NOT EXISTS bapes_citacion_plantilla (
    id_plantilla TINYINT UNSIGNED NOT NULL DEFAULT 1,
    encabezado VARCHAR(180) NOT NULL,
    lugar_fecha VARCHAR(180) NULL,
    titulo VARCHAR(180) NOT NULL,
    destinatario VARCHAR(220) NOT NULL,
    asunto VARCHAR(220) NULL,
    cuerpo TEXT NOT NULL,
    indicaciones TEXT NULL,
    despedida VARCHAR(220) NULL,
    firma_nombre VARCHAR(180) NULL,
    firma_cargo VARCHAR(120) NOT NULL DEFAULT 'Director(a)',
    creado_en DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
    actualizado_en DATETIME NULL,
    PRIMARY KEY (id_plantilla)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
