-- ---------------------------------------------------------------------------
-- Réplica de las temporadas del Hotel 2 (rsv_temporadahotel + rsv_temporadahotelexclusion).
--
-- Proyecto : CL032BACK (portal público) · base asturias_api
-- Equivalente manual de la migración
--   database/migrations/2026_10_02_120000_create_rsv_temporadahotel_tables.php
-- para aplicarlo directo cuando `php artisan migrate` no esté disponible.
--
-- ES UNA RÉPLICA DE SOLO LECTURA. La tabla maestra vive en Reservaciones V2
-- (cl038reservacionesv2.rsv_temporadahotel), donde el personal agrega y elimina temporadas.
-- Cada alta o baja en V2 manda aquí el snapshot completo de las temporadas presentes y
-- futuras (POST /reservaciones/temporada-hotel/aplicar) y este portal REEMPLAZA el contenido
-- de las dos tablas. Nadie escribe aquí a mano: no hay pantalla ni ruta de personas.
--
-- Diferencias con la maestra, a propósito:
--   · Sin AUTO_INCREMENT en idTemporadaHotel: los ids vienen de V2 (D8).
--   · Sin idUsuario ni FK a seg_usuario: es un usuario de OTRO sistema.
--   · Sin estado: solo llegan las activas.
--
-- Lo lee VisibilidadHotelService (con caché) para decidir si publica el Hotel 2 según la
-- fecha de llegada. Si el código se despliega antes que este script, el portal sigue
-- vendiendo: la regla ignora las temporadas y lo deja en el log.
--
-- ES RE-EJECUTABLE: CREATE TABLE IF NOT EXISTS.
-- Referencia: docs/ANALISIS_TEMPORADAS_HOTEL2_V2_Y_PORTAL.md
-- ---------------------------------------------------------------------------

SET NAMES utf8mb4;

CREATE TABLE IF NOT EXISTS `rsv_temporadahotel` (
  `idTemporadaHotel`                int          NOT NULL COMMENT 'Mismo id que en Reservaciones V2. El portal nunca crea temporadas',
  `temporadaHotelAlias`             varchar(75)  CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
  `temporadaHotelTipo`              enum('Fechas','Semanal') CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT 'Fechas',
  `temporadaHotelFechaInicio`       date         NOT NULL COMMENT 'Fechas: primera noche. Semanal: inicio de vigencia',
  `temporadaHotelFechaFin`          date         NOT NULL COMMENT 'Primer día SIN servicio (como una salida), no es noche',
  `temporadaHotelDiaInicio`         tinyint      NULL DEFAULT NULL COMMENT 'Semanal: día ISO de la primera noche (1 lunes … 7 domingo)',
  `temporadaHotelDiaFin`            tinyint      NULL DEFAULT NULL COMMENT 'Semanal: día ISO sin servicio (el de salida)',
  `temporadaHotelSiempreHabilitado` tinyint(1)   NOT NULL DEFAULT 1 COMMENT '1 = Hotel 2 abierto, 0 = abre por temporadaHotelUmbral',
  `temporadaHotelUmbral`            int          NULL DEFAULT NULL COMMENT 'Ocupadas del Hotel 1 a partir de las cuales (>) se abre el Hotel 2',
  `temporadaHotelMostrarLeyenda`    tinyint(1)   NOT NULL DEFAULT 1 COMMENT 'Aviso si la salida es posterior al fin de la temporada',
  `temporadaHotelLeyenda`           varchar(300) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT 'Texto del aviso, NULL = texto por defecto',
  `temporadaHotelFechaReplica`      datetime     NOT NULL COMMENT 'Cuándo la aplicó el portal',
  PRIMARY KEY (`idTemporadaHotel`) USING BTREE,
  INDEX `idx_temporadahotel_fin` (`temporadaHotelFechaFin`) USING BTREE
) ENGINE = InnoDB
  DEFAULT CHARSET = utf8mb4
  COLLATE = utf8mb4_general_ci
  ROW_FORMAT = Dynamic
  COMMENT = 'Réplica de Reservaciones V2: temporadas que habilitan el Hotel 2 en el portal';

CREATE TABLE IF NOT EXISTS `rsv_temporadahotelexclusion` (
  `idTemporadaHotelExclusion`     int      NOT NULL AUTO_INCREMENT,
  `idTemporadaHotel`              int      NOT NULL,
  `temporadaHotelExclusionAnio`   smallint NOT NULL COMMENT 'Año ISO de la semana (no el calendario)',
  `temporadaHotelExclusionSemana` tinyint  NOT NULL COMMENT 'Semana ISO-8601 (lunes a domingo), 1-53',
  PRIMARY KEY (`idTemporadaHotelExclusion`) USING BTREE,
  UNIQUE INDEX `uk_temporadahotelexclusion` (`idTemporadaHotel`, `temporadaHotelExclusionAnio`, `temporadaHotelExclusionSemana`) USING BTREE,
  CONSTRAINT `fk_temporadahotelexclusion_temporada`
    FOREIGN KEY (`idTemporadaHotel`) REFERENCES `rsv_temporadahotel` (`idTemporadaHotel`)
    ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE = InnoDB
  DEFAULT CHARSET = utf8mb4
  COLLATE = utf8mb4_general_ci
  ROW_FORMAT = Dynamic
  COMMENT = 'Réplica de Reservaciones V2: semanas en las que no aplica una temporada semanal';
