-- =============================================================================
-- FIX Bug B — "Los docentes fueron agregados al curso como alumnos"
-- App: ATOMS (PHP 7.4 / Zend1 / Smarty)
-- Objetivo: corregir las filas de `inscripcion` que quedaron mal etiquetadas,
--           donde un usuario con rol GLOBAL Docente (rol.etiqueta = 'DOC') y
--           SIN rol de alumno/piloto ('ALU'/'PIL') fue guardado como alumno
--           dentro de la instancia (inscripcion.rolmoodle_id = 5).
--           Estas filas deben pasar a docente (inscripcion.rolmoodle_id = 4).
--
-- Mapeo de valores relevantes (ver sql/app.sql):
--   rol       -> 1=DOC(Docente) 2=ALU(Alumno) 3=PIL(Piloto) 4=MEC 5=ADM 6=BED
--   rolmoodle -> 4=Docente(teacher)  5=Alumno(student)
--
-- -----------------------------------------------------------------------------
-- !!! IMPORTANTE — LEER ANTES DE EJECUTAR !!!
--   1. Este script NO se ejecuta automaticamente. LO EJECUTA EL USUARIO.
--   2. HACER BACKUP de la tabla `inscripcion` ANTES de correr cualquier UPDATE:
--        CREATE TABLE inscripcion_bkp_fixdoc AS SELECT * FROM inscripcion;
--   3. Correr PRIMERO el SELECT (paso 1) para revisar manualmente los afectados.
--   4. Recien despues, y solo si el listado es correcto, correr el UPDATE (paso 2).
--   5. Recomendado: probar acotado a UNA instancia (cursoinstancia_id) antes de
--      aplicar la version global. Descomentar/ajustar el filtro segun corresponda.
-- =============================================================================


-- =============================================================================
-- PASO 1 — SELECT DE REVISION (correr primero, NO modifica datos)
-- Lista los inscriptos que son DOCentes globales, NO son ALU/PIL, y hoy figuran
-- como alumnos (rolmoodle_id = 5) dentro de la instancia.
-- =============================================================================

-- ---- Variante acotada a UNA instancia (RECOMENDADO probar asi primero) ------
-- Reemplazar <ID_INSTANCIA_PPL> por el cursoinstancia_id a corregir (ej. el PPL).
SELECT
    i.id              AS inscripcion_id,
    i.usuario_id,
    u.nombre,
    u.apellido,
    u.documento,
    i.cursoinstancia_id,
    i.rolmoodle_id    AS rolmoodle_actual
FROM inscripcion i
JOIN usuario u        ON u.id = i.usuario_id
JOIN usuariorol ur_doc ON ur_doc.usuario_id = i.usuario_id
JOIN rol r_doc         ON r_doc.id = ur_doc.rol_id AND r_doc.etiqueta = 'DOC'
LEFT JOIN (
    SELECT ur.usuario_id
    FROM usuariorol ur
    JOIN rol r ON r.id = ur.rol_id
    WHERE r.etiqueta IN ('ALU','PIL')
) alu ON alu.usuario_id = i.usuario_id
WHERE i.rolmoodle_id = 5
  AND alu.usuario_id IS NULL
  AND i.cursoinstancia_id = <ID_INSTANCIA_PPL>   -- << ajustar / quitar para global
ORDER BY i.cursoinstancia_id, u.apellido, u.nombre;

-- ---- Variante GLOBAL (todas las instancias) — descomentar si aplica -----------
-- SELECT
--     i.id              AS inscripcion_id,
--     i.usuario_id,
--     u.nombre,
--     u.apellido,
--     u.documento,
--     i.cursoinstancia_id,
--     i.rolmoodle_id    AS rolmoodle_actual
-- FROM inscripcion i
-- JOIN usuario u         ON u.id = i.usuario_id
-- JOIN usuariorol ur_doc ON ur_doc.usuario_id = i.usuario_id
-- JOIN rol r_doc         ON r_doc.id = ur_doc.rol_id AND r_doc.etiqueta = 'DOC'
-- LEFT JOIN (
--     SELECT ur.usuario_id
--     FROM usuariorol ur
--     JOIN rol r ON r.id = ur.rol_id
--     WHERE r.etiqueta IN ('ALU','PIL')
-- ) alu ON alu.usuario_id = i.usuario_id
-- WHERE i.rolmoodle_id = 5
--   AND alu.usuario_id IS NULL
-- ORDER BY i.cursoinstancia_id, u.apellido, u.nombre;


-- =============================================================================
-- PASO 2 — UPDATE (correr SOLO despues de validar el SELECT y hacer BACKUP)
-- Reclasifica como docente (rolmoodle_id = 4) a los inscriptos DOC globales
-- que NO son ALU/PIL y hoy estan como alumnos (rolmoodle_id = 5).
-- =============================================================================

-- ---- Variante acotada a UNA instancia (RECOMENDADO) --------------------------
-- Reemplazar <ID_INSTANCIA_PPL> por el cursoinstancia_id a corregir.
UPDATE inscripcion i
JOIN usuariorol ur_doc ON ur_doc.usuario_id = i.usuario_id
JOIN rol r_doc         ON r_doc.id = ur_doc.rol_id AND r_doc.etiqueta = 'DOC'
LEFT JOIN (
    SELECT ur.usuario_id
    FROM usuariorol ur
    JOIN rol r ON r.id = ur.rol_id
    WHERE r.etiqueta IN ('ALU','PIL')
) alu ON alu.usuario_id = i.usuario_id
SET i.rolmoodle_id = 4
WHERE i.rolmoodle_id = 5
  AND alu.usuario_id IS NULL
  AND i.cursoinstancia_id = <ID_INSTANCIA_PPL>;   -- << ajustar / quitar para global

-- ---- Variante GLOBAL (todas las instancias) — descomentar si aplica -----------
-- Aplicar SOLO tras validar la variante acotada.
-- UPDATE inscripcion i
-- JOIN usuariorol ur_doc ON ur_doc.usuario_id = i.usuario_id
-- JOIN rol r_doc         ON r_doc.id = ur_doc.rol_id AND r_doc.etiqueta = 'DOC'
-- LEFT JOIN (
--     SELECT ur.usuario_id
--     FROM usuariorol ur
--     JOIN rol r ON r.id = ur.rol_id
--     WHERE r.etiqueta IN ('ALU','PIL')
-- ) alu ON alu.usuario_id = i.usuario_id
-- SET i.rolmoodle_id = 4
-- WHERE i.rolmoodle_id = 5
--   AND alu.usuario_id IS NULL;

-- =============================================================================
-- FIN. Verificacion post-fix: volver a correr el SELECT del PASO 1; no deberia
-- devolver filas (ya no quedan docentes puros marcados como alumnos).
-- =============================================================================
