-- =====================================================================
--  MIGRACIÓN: Sistema TÓMBOLA VIRTUAL
--  Base de datos: re123_gigantes
--  Convierte el antiguo sistema de encuestas + sorteos en un sistema
--  profesional de sorteos.
--
--  IMPORTANTE:
--   * Crea respaldos (_bak_*) de las tablas que se reemplazan.
--   * Elimina el módulo de encuestas (encuestas, opciones_encuesta, votos).
--   * Conserva: administradores, logs_actividad.
--   * Ejecutar UNA sola vez en phpMyAdmin (pestaña SQL) o por consola.
-- =====================================================================

SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;

-- ---------------------------------------------------------------------
-- 1) RESPALDOS de datos que se van a reemplazar
-- ---------------------------------------------------------------------
CREATE TABLE IF NOT EXISTS `_bak_usuarios_sorteo` AS SELECT * FROM `usuarios_sorteo`;
CREATE TABLE IF NOT EXISTS `_bak_sorteos`         AS SELECT * FROM `sorteos`;
CREATE TABLE IF NOT EXISTS `_bak_encuestas`       AS SELECT * FROM `encuestas`;
CREATE TABLE IF NOT EXISTS `_bak_opciones`        AS SELECT * FROM `opciones_encuesta`;
CREATE TABLE IF NOT EXISTS `_bak_votos`           AS SELECT * FROM `votos`;

-- ---------------------------------------------------------------------
-- 2) ELIMINAR módulo de encuestas y tablas antiguas de sorteo
--    (respaldadas arriba). Se eliminan FKs al soltar las tablas.
-- ---------------------------------------------------------------------
DROP TABLE IF EXISTS `votos`;
DROP TABLE IF EXISTS `opciones_encuesta`;
DROP TABLE IF EXISTS `sorteos`;
DROP TABLE IF EXISTS `usuarios_sorteo`;
DROP TABLE IF EXISTS `encuestas`;

-- ---------------------------------------------------------------------
-- 3) PARTICIPANTES
-- ---------------------------------------------------------------------
CREATE TABLE `participantes` (
  `id`                  INT(11) NOT NULL AUTO_INCREMENT,
  `nombre`              VARCHAR(255) NOT NULL,
  `identificador`       VARCHAR(100) DEFAULT NULL,   -- RUT / documento / id único
  `email`               VARCHAR(255) DEFAULT NULL,
  `telefono`            VARCHAR(50)  DEFAULT NULL,
  `empresa`             VARCHAR(255) DEFAULT NULL,
  `cargo`               VARCHAR(255) DEFAULT NULL,
  `numero_participante` VARCHAR(50)  DEFAULT NULL,
  `datos_adicionales`   TEXT DEFAULT NULL,           -- JSON con campos extra
  `estado`              ENUM('disponible','ganador','inactivo') NOT NULL DEFAULT 'disponible',
  `ha_ganado`           TINYINT(1) NOT NULL DEFAULT 0,
  `import_batch_id`     INT(11) DEFAULT NULL,
  `created_at`          TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `updated_at`          TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`),
  KEY `idx_estado` (`estado`),
  KEY `idx_identificador` (`identificador`),
  KEY `idx_batch` (`import_batch_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- ---------------------------------------------------------------------
-- 4) SORTEOS
-- ---------------------------------------------------------------------
CREATE TABLE `sorteos` (
  `id`                 INT(11) NOT NULL AUTO_INCREMENT,
  `nombre_sorteo`      VARCHAR(255) NOT NULL,
  `nombre_premio`      VARCHAR(255) NOT NULL,
  `descripcion_premio` TEXT DEFAULT NULL,
  `imagen_premio`      VARCHAR(255) DEFAULT NULL,
  `cantidad_ganadores` INT(11) NOT NULL DEFAULT 1,
  `observaciones`      TEXT DEFAULT NULL,
  `estado`             ENUM('waiting','running','stopping','winner','cancelled','finished') NOT NULL DEFAULT 'waiting',
  `programado_para`    DATETIME DEFAULT NULL,
  `started_at`         DATETIME DEFAULT NULL,
  `stopped_at`         DATETIME DEFAULT NULL,
  `finished_at`        DATETIME DEFAULT NULL,
  `created_by`         INT(11) DEFAULT NULL,
  `created_at`         TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `updated_at`         TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`),
  KEY `idx_estado` (`estado`),
  KEY `idx_created_by` (`created_by`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- ---------------------------------------------------------------------
-- 5) GANADORES DE SORTEO (anulación lógica, trazabilidad)
-- ---------------------------------------------------------------------
CREATE TABLE `sorteo_ganadores` (
  `id`               INT(11) NOT NULL AUTO_INCREMENT,
  `sorteo_id`        INT(11) NOT NULL,
  `participante_id`  INT(11) NOT NULL,
  `nombre_premio`    VARCHAR(255) DEFAULT NULL,
  `estado`           ENUM('valido','anulado') NOT NULL DEFAULT 'valido',
  `selected_at`      DATETIME DEFAULT NULL,
  `selected_by`      INT(11) DEFAULT NULL,
  `annulled_at`      DATETIME DEFAULT NULL,
  `annulled_by`      INT(11) DEFAULT NULL,
  `annulment_reason` VARCHAR(255) DEFAULT NULL,
  `created_at`       TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `updated_at`       TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`),
  KEY `idx_sorteo` (`sorteo_id`),
  KEY `idx_participante` (`participante_id`),
  KEY `idx_estado` (`estado`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- ---------------------------------------------------------------------
-- 6) LOTES DE IMPORTACIÓN
-- ---------------------------------------------------------------------
CREATE TABLE `import_batches` (
  `id`            INT(11) NOT NULL AUTO_INCREMENT,
  `filename`      VARCHAR(255) DEFAULT NULL,
  `total_rows`    INT(11) DEFAULT 0,
  `imported_rows` INT(11) DEFAULT 0,
  `omitted_rows`  INT(11) DEFAULT 0,
  `error_rows`    INT(11) DEFAULT 0,
  `imported_by`   INT(11) DEFAULT NULL,
  `created_at`    TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- ---------------------------------------------------------------------
-- 7) CONFIGURACIÓN
-- ---------------------------------------------------------------------
CREATE TABLE `configuracion` (
  `id`         INT(11) NOT NULL AUTO_INCREMENT,
  `clave`      VARCHAR(100) NOT NULL,
  `valor`      TEXT DEFAULT NULL,
  `tipo`       VARCHAR(30) DEFAULT 'text',
  `updated_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`),
  UNIQUE KEY `uk_clave` (`clave`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- ---------------------------------------------------------------------
-- 8) ESTADO DE PANTALLA PÚBLICA (una sola fila, id=1)
-- ---------------------------------------------------------------------
CREATE TABLE `estado_pantalla` (
  `id`               INT(11) NOT NULL DEFAULT 1,
  `estado_actual`    ENUM('waiting','running','stopping','winner','cancelled','finished') NOT NULL DEFAULT 'waiting',
  `sorteo_activo_id` INT(11) DEFAULT NULL,
  `ganador_activo_id` INT(11) DEFAULT NULL,
  `version_token`    BIGINT NOT NULL DEFAULT 0,
  `updated_at`       TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

INSERT INTO `estado_pantalla` (`id`, `estado_actual`) VALUES (1, 'waiting');

-- ---------------------------------------------------------------------
-- 9) VALORES DE CONFIGURACIÓN POR DEFECTO
-- ---------------------------------------------------------------------
INSERT INTO `configuracion` (`clave`, `valor`, `tipo`) VALUES
('nombre_evento',       'TÓMBOLA VIRTUAL',              'text'),
('mensaje_espera',      'Esperando el próximo sorteo',  'text'),
('texto_ganador',       'GANADOR',                      'text'),
('logo_principal',      '',                             'image'),
('logo_secundario',     '',                             'image'),
('fondo_imagen',        '',                             'image'),
('fondo_video',         '',                             'video'),
('fondo_video_activo',  '0',                            'bool'),
('fondo_opacidad',      '55',                           'number'),
('fondo_video_loop',    '1',                            'bool'),
('color_primario',      '#ff2fd0',                      'color'),
('color_secundario',    '#00e6ff',                      'color'),
('sonidos_activos',     '1',                            'bool'),
('sonido_inicio',       '',                             'audio'),
('sonido_girando',      '',                             'audio'),
('sonido_ganador',      '',                             'audio'),
('duracion_frenado',    '5',                            'number'),
('confeti_activo',      '1',                            'bool'),
('pantalla_completa',   '1',                            'bool'),
('zona_horaria',        'America/Santiago',             'text'),
('formato_fecha',       'd/m/Y H:i',                    'text'),
('campos_ganador',      'empresa,numero_participante',  'text'),
('clave_control',       '',                             'text');

SET FOREIGN_KEY_CHECKS = 1;

-- =====================================================================
--  FIN DE LA MIGRACIÓN
--  (Los respaldos _bak_* pueden eliminarse manualmente una vez validado
--   el nuevo sistema:  DROP TABLE _bak_usuarios_sorteo, _bak_sorteos, ...)
-- =====================================================================
