-- 20260803 — Cambios de esquema del turnero aplicados el 2026-08-03
-- Ya ejecutados en producción; este archivo los deja registrados para
-- reconstruir el esquema desde cero o replicarlo en otro entorno.
-- Todos usan IF NOT EXISTS para ser idempotentes.

-- 1. Cédula del profesional firmante (antes solo existía para enfermeros
--    vía lab_enfermeras; bacteriólogos y recepcionistas no tenían dónde).
ALTER TABLE admin_users
  ADD COLUMN IF NOT EXISTS cedula VARCHAR(30) NULL AFTER cargo;

-- Poblar desde el username cuando es numérico (así estaban registrados
-- bacteriólogos, recepcionistas y superadmin).
UPDATE admin_users SET cedula = username
 WHERE cedula IS NULL AND username REGEXP '^[0-9]{5,15}$' AND is_active = 1;

-- 2. Quién generó cada consentimiento del turnero. Sin esto el pie
--    "Enviado por" mostraba al usuario que estuviera viendo el documento.
ALTER TABLE turnero_consentimientos
  ADD COLUMN IF NOT EXISTS creado_por INT NULL AFTER estado;

-- 3. En qué turno se recibió una muestra que quedó pendiente de otra visita.
--    El turno original no se modifica; esto solo permite vincularlos.
ALTER TABLE turnero_muestras
  ADD COLUMN IF NOT EXISTS recibida_en_turno_id INT UNSIGNED NULL AFTER recibida_at;

-- 4. Playlist de la Pantalla TV (reemplaza la clave única turnero_tv_video
--    de lab_config por una lista ordenable de videos e imágenes).
CREATE TABLE IF NOT EXISTS turnero_tv_media (
  id                INT UNSIGNED NOT NULL AUTO_INCREMENT,
  tipo              ENUM('video','imagen') NOT NULL,
  url               VARCHAR(500) NOT NULL,
  orden             INT NOT NULL DEFAULT 0,
  duracion_segundos INT NOT NULL DEFAULT 8,
  activo            TINYINT(1) NOT NULL DEFAULT 1,
  creado_at         DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
  PRIMARY KEY (id),
  KEY idx_orden (activo, orden)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

-- Migrar el video único que existía en lab_config como primer ítem.
INSERT INTO turnero_tv_media (tipo, url, orden, duracion_segundos, activo)
SELECT 'video', valor, 0, 8, 1 FROM lab_config
 WHERE clave = 'turnero_tv_video' AND valor <> ''
   AND NOT EXISTS (SELECT 1 FROM turnero_tv_media);
