-- Tabla para almacenar días no laborables (festivos, vacaciones, etc.)
CREATE TABLE IF NOT EXISTS dias_no_laborables (
    id INT AUTO_INCREMENT PRIMARY KEY,
    fecha DATE NOT NULL,
    descripcion VARCHAR(255) NOT NULL,
    tipo ENUM('FERIADO', 'VACACIONES', 'SUSPENSION', 'OTRO') NOT NULL DEFAULT 'FERIADO',
    ano_lectivo_id INT NOT NULL,
    observaciones TEXT NULL,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
    FOREIGN KEY (ano_lectivo_id) REFERENCES anos_lectivos(id) ON DELETE CASCADE,
    UNIQUE KEY unique_fecha_ano_lectivo (fecha, ano_lectivo_id),
    INDEX idx_fecha (fecha),
    INDEX idx_ano_lectivo (ano_lectivo_id),
    INDEX idx_tipo (tipo)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- Datos de ejemplo para días no laborables 2025
INSERT INTO dias_no_laborables (fecha, descripcion, tipo, ano_lectivo_id, observaciones) VALUES
('2025-01-01', 'Año Nuevo', 'FERIADO', 1, 'Feriado nacional'),
('2025-04-17', 'Jueves Santo', 'FERIADO', 1, 'Feriado nacional'),
('2025-04-18', 'Viernes Santo', 'FERIADO', 1, 'Feriado nacional'),
('2025-05-01', 'Día del Trabajo', 'FERIADO', 1, 'Feriado nacional'),
('2025-06-29', 'San Pedro y San Pablo', 'FERIADO', 1, 'Feriado nacional'),
('2025-07-28', 'Fiestas Patrias - Día 1', 'FERIADO', 1, 'Día de la Independencia'),
('2025-07-29', 'Fiestas Patrias - Día 2', 'FERIADO', 1, 'Día de las Fuerzas Armadas'),
('2025-08-30', 'Santa Rosa de Lima', 'FERIADO', 1, 'Feriado nacional'),
('2025-10-08', 'Combate de Angamos', 'FERIADO', 1, 'Feriado nacional'),
('2025-11-01', 'Día de Todos los Santos', 'FERIADO', 1, 'Feriado nacional'),
('2025-12-08', 'Inmaculada Concepción', 'FERIADO', 1, 'Feriado nacional'),
('2025-12-25', 'Navidad', 'FERIADO', 1, 'Feriado nacional'),
('2025-07-26', 'Vacaciones de medio año - Inicio', 'VACACIONES', 1, 'Inicio de vacaciones escolares'),
('2025-07-27', 'Vacaciones de medio año', 'VACACIONES', 1, 'Vacaciones escolares'),
('2025-07-30', 'Vacaciones de medio año', 'VACACIONES', 1, 'Vacaciones escolares'),
('2025-07-31', 'Vacaciones de medio año', 'VACACIONES', 1, 'Vacaciones escolares'),
('2025-08-01', 'Vacaciones de medio año', 'VACACIONES', 1, 'Vacaciones escolares'),
('2025-08-02', 'Vacaciones de medio año', 'VACACIONES', 1, 'Vacaciones escolares'),
('2025-08-03', 'Vacaciones de medio año', 'VACACIONES', 1, 'Vacaciones escolares')
ON DUPLICATE KEY UPDATE descripcion = VALUES(descripcion);

-- Comentarios
-- Esta tabla permite registrar todos los días en los que no se deben registrar asistencias
-- Los tipos incluyen:
-- - FERIADO: Días festivos nacionales o regionales
-- - VACACIONES: Períodos de vacaciones escolares
-- - SUSPENSION: Suspensión de clases por eventos especiales
-- - OTRO: Otros eventos no clasificados
