-- Create table for Class Rescheduling
CREATE TABLE IF NOT EXISTS clase_recalendarizaciones (
    id_recalendarizacion SERIAL PRIMARY KEY,
    fk_id_clase INTEGER NOT NULL REFERENCES clases(id_clase) ON DELETE CASCADE,
    fecha_original DATE NOT NULL,
    fecha_nueva DATE NOT NULL,
    hora_inicio_nueva TIME NOT NULL,
    hora_fin_nueva TIME NOT NULL,
    fk_id_salon_nuevo INTEGER NOT NULL REFERENCES salones(id_salon),
    estado VARCHAR(20) DEFAULT 'PENDIENTE', -- 'PENDIENTE', 'APROBADO', 'RECHAZADO'
    motivo_solicitud TEXT,
    motivo_rechazo TEXT,
    aprobado_por INTEGER REFERENCES usuarios(id_usuario),
    f_reg TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    f_mod TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

-- Indices for performance
CREATE INDEX IF NOT EXISTS idx_recal_clase ON clase_recalendarizaciones(fk_id_clase);
CREATE INDEX IF NOT EXISTS idx_recal_fecha_orig ON clase_recalendarizaciones(fecha_original);
CREATE INDEX IF NOT EXISTS idx_recal_fecha_nueva ON clase_recalendarizaciones(fecha_nueva);
CREATE INDEX IF NOT EXISTS idx_recal_estado ON clase_recalendarizaciones(estado);
