-- =============================================================
-- ONTOI - Migración complementaria
-- Ejecutar DESPUÉS de haber importado el schema base
-- =============================================================

-- 1. Agregar columna `token` a usuarios (para auth API)
ALTER TABLE `usuarios`
    ADD COLUMN IF NOT EXISTS `token` VARCHAR(64) NULL DEFAULT NULL AFTER `password`,
    ADD COLUMN IF NOT EXISTS `fcm_token` VARCHAR(255) NULL DEFAULT NULL AFTER `token`;

-- 2. Agregar columna `orden` a emergencias (para ordenar listado)
ALTER TABLE `emergencias`
    ADD COLUMN IF NOT EXISTS `orden` TINYINT UNSIGNED NOT NULL DEFAULT 0 AFTER `longitud`;

-- 3. Crear tabla `admins` para el panel de administración
CREATE TABLE IF NOT EXISTS `admins` (
    `id`         INT UNSIGNED     NOT NULL AUTO_INCREMENT,
    `nombre`     VARCHAR(100)     NOT NULL,
    `email`      VARCHAR(100)     NOT NULL,
    `password`   VARCHAR(255)     NOT NULL,
    `rol`        ENUM('admin','superadmin') NOT NULL DEFAULT 'admin',
    `activo`     TINYINT(1)       NOT NULL DEFAULT 1,
    `created_at` TIMESTAMP        NOT NULL DEFAULT CURRENT_TIMESTAMP,
    PRIMARY KEY (`id`),
    UNIQUE KEY `uq_admins_email` (`email`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- 4. Insertar administrador inicial
--    IMPORTANTE: Cambia el email y la contraseña antes de ejecutar.
--    Hash generado con password_hash('Admin1234!', PASSWORD_DEFAULT)
INSERT IGNORE INTO `admins` (`nombre`, `email`, `password`, `rol`) VALUES
    ('Administrador', 'admin@ontoi.com', '$2y$12$vQg5LGFE.cJmD7lCvvqFiOJuVnHkWzLHa6xgC3MzMbZ5OcGNuMoze', 'superadmin');
-- Contraseña inicial: Admin1234!  ← CAMBIAR INMEDIATAMENTE

-- 5. Índices útiles para rendimiento
CREATE INDEX IF NOT EXISTS `idx_negocios_categoria` ON `negocios`(`categoria_id`);
CREATE INDEX IF NOT EXISTS `idx_negocios_usuario`   ON `negocios`(`usuario_id`);
CREATE INDEX IF NOT EXISTS `idx_resenas_negocio`    ON `resenas`(`negocio_id`);
CREATE INDEX IF NOT EXISTS `idx_favoritos_usuario`  ON `favoritos`(`usuario_id`);
CREATE INDEX IF NOT EXISTS `idx_mensajes_activo`    ON `mensajes`(`activo`, `fecha_expiracion`);
CREATE INDEX IF NOT EXISTS `idx_usuarios_token`     ON `usuarios`(`token`);

-- =============================================================
-- LUGARES DE INTERÉS
-- =============================================================

CREATE TABLE IF NOT EXISTS `lugares` (
    `id`               INT UNSIGNED     NOT NULL AUTO_INCREMENT,
    `categoria_lugar_id` INT UNSIGNED   NOT NULL,
    `nombre`           VARCHAR(150)     NOT NULL,
    `descripcion`      TEXT             NULL,
    `direccion`        VARCHAR(255)     NOT NULL,
    `latitud`          DECIMAL(10,8)    NULL,
    `longitud`         DECIMAL(11,8)    NULL,
    `horario`          VARCHAR(255)     NULL,
    `horario_detalle`  JSON             NULL COMMENT '{"lun":"9:00-18:00","mar":"9:00-18:00",...}',
    `telefono`         VARCHAR(30)      NULL,
    `sitio_web`        VARCHAR(255)     NULL,
    `precio_entrada`   VARCHAR(100)     NULL COMMENT 'Ej: Gratis, $50, $30-$80',
    `activo`           TINYINT(1)       NOT NULL DEFAULT 1,
    `destacado`        TINYINT(1)       NOT NULL DEFAULT 0,
    `fecha_registro`   TIMESTAMP        NOT NULL DEFAULT CURRENT_TIMESTAMP,
    PRIMARY KEY (`id`),
    KEY `idx_lugares_categoria` (`categoria_lugar_id`),
    KEY `idx_lugares_activo`    (`activo`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

CREATE TABLE IF NOT EXISTS `lugar_imagenes` (
    `id`         INT UNSIGNED NOT NULL AUTO_INCREMENT,
    `lugar_id`   INT UNSIGNED NOT NULL,
    `imagen_url` VARCHAR(500) NOT NULL,
    `es_principal` TINYINT(1) NOT NULL DEFAULT 0,
    `orden`      TINYINT UNSIGNED NOT NULL DEFAULT 0,
    PRIMARY KEY (`id`),
    KEY `idx_lugar_imagenes_lugar` (`lugar_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

CREATE TABLE IF NOT EXISTS `categorias_lugares` (
    `id`     INT UNSIGNED     NOT NULL AUTO_INCREMENT,
    `nombre` VARCHAR(100)     NOT NULL,
    `icono`  VARCHAR(50)      NULL,
    `color`  VARCHAR(10)      NULL COMMENT 'hex color',
    `orden`  TINYINT UNSIGNED NOT NULL DEFAULT 0,
    PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- Categorías base para lugares de interés
INSERT IGNORE INTO `categorias_lugares` (`nombre`, `icono`, `color`, `orden`) VALUES
    ('Atractivos naturales',  'nature',          '#2D6A4F', 1),
    ('Historia y cultura',    'museum',          '#7B5E3A', 2),
    ('Parques y recreación',  'park',            '#3D8B68', 3),
    ('Miradores',             'landscape',       '#4A7C8E', 4),
    ('Plazas y monumentos',   'account_balance', '#8B6A9E', 5),
    ('Deportes y aventura',   'sports',          '#D4883A', 6),
    ('Arte y entretenimiento','palette',         '#C25B8A', 7),
    ('Religioso',             'church',          '#9E7A3A', 8);

-- Índices adicionales
CREATE INDEX IF NOT EXISTS `idx_lugares_destacado` ON `lugares`(`destacado`, `activo`);
