-- ============================================================
-- Valle Nevado · WiFi Analytics
-- Ejecutar UNA sola vez en la base de datos existente
-- ============================================================

CREATE TABLE IF NOT EXISTS vn_zonas (
    id          INT AUTO_INCREMENT PRIMARY KEY,
    nombre      VARCHAR(100) NOT NULL,
    tipo        ENUM('restaurante','hotel','oficina','otro') NOT NULL,
    hotel       VARCHAR(10)  NULL COMMENT 'HVN, HPS, HTP — solo si tipo=hotel',
    piso        TINYINT      NULL COMMENT 'Solo si tipo=hotel',
    ssid        VARCHAR(50)  NOT NULL DEFAULT 'Guests❄',
    activo      TINYINT(1)   NOT NULL DEFAULT 1,
    created_at  TIMESTAMP    DEFAULT CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

CREATE TABLE IF NOT EXISTS vn_mediciones (
    id              INT AUTO_INCREMENT PRIMARY KEY,
    zona_id         INT            NOT NULL,
    tecnico_id      INT            NOT NULL,
    fecha           DATE           NOT NULL,
    hora            TIME           NOT NULL,
    ssid_detectado  VARCHAR(50)    NULL  COMMENT 'SSID que reportó el navegador',
    bajada_mbs      DECIMAL(8,2)   NOT NULL COMMENT 'Download en MB/s',
    subida_mbs      DECIMAL(8,2)   NOT NULL COMMENT 'Upload en MB/s',
    latencia_ms     SMALLINT       NOT NULL COMMENT 'Ping en milisegundos',
    perdida_pct     DECIMAL(4,1)   NOT NULL DEFAULT 0 COMMENT '% pérdida de paquetes',
    nota            TEXT           NULL,
    alerta          TINYINT(1)     NOT NULL DEFAULT 0,
    advertencia     TINYINT(1)     NOT NULL DEFAULT 0,
    imagen_path     VARCHAR(255)   NULL COMMENT 'Ruta relativa a la captura de Speedtest',
    created_at      TIMESTAMP      DEFAULT CURRENT_TIMESTAMP,
    FOREIGN KEY (zona_id)    REFERENCES vn_zonas(id),
    FOREIGN KEY (tecnico_id) REFERENCES vn_tecnicos(id),
    INDEX idx_fecha     (fecha),
    INDEX idx_zona      (zona_id),
    INDEX idx_alerta    (alerta)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

-- ============================================================
-- Datos iniciales — Zonas del complejo
-- ============================================================
INSERT INTO vn_zonas (nombre, tipo, hotel, piso, ssid) VALUES
('Fourchette',      'restaurante', NULL,  NULL, 'Guests❄'),
('M. Plomo',        'restaurante', NULL,  NULL, 'Guests❄'),
('R. Sur',          'restaurante', NULL,  NULL, 'Guests❄'),
('Valle Lounge',    'restaurante', NULL,  NULL, 'Guests❄'),
('Monte Bianco',    'restaurante', NULL,  NULL, 'Guests❄'),
('Oficina Gerencia','oficina',     NULL,  NULL, 'Ofi.Gerencia'),
('HVN · Piso 1',   'hotel',      'HVN',  1,   'Guests❄'),
('HVN · Piso 2',   'hotel',      'HVN',  2,   'Guests❄'),
('HVN · Piso 3',   'hotel',      'HVN',  3,   'Guests❄'),
('HVN · Piso 4',   'hotel',      'HVN',  4,   'Guests❄'),
('HVN · Piso 5',   'hotel',      'HVN',  5,   'Guests❄'),
('HPS · Piso 1',   'hotel',      'HPS',  1,   'Guests❄'),
('HPS · Piso 2',   'hotel',      'HPS',  2,   'Guests❄'),
('HPS · Piso 3',   'hotel',      'HPS',  3,   'Guests❄'),
('HPS · Piso 4',   'hotel',      'HPS',  4,   'Guests❄'),
('HPS · Piso 5',   'hotel',      'HPS',  5,   'Guests❄'),
('HPS · Piso 6',   'hotel',      'HPS',  6,   'Guests❄'),
('HPS · Piso 7',   'hotel',      'HPS',  7,   'Guests❄'),
('HPS · Piso 8',   'hotel',      'HPS',  8,   'Guests❄'),
('HPS · Piso 9',   'hotel',      'HPS',  9,   'Guests❄'),
('HPS · Piso 10',  'hotel',      'HPS', 10,   'Guests❄'),
('HTP · Piso 1',   'hotel',      'HTP',  1,   'Guests❄'),
('HTP · Piso 2',   'hotel',      'HTP',  2,   'Guests❄'),
('HTP · Piso 3',   'hotel',      'HTP',  3,   'Guests❄'),
('HTP · Piso 4',   'hotel',      'HTP',  4,   'Guests❄'),
('HTP · Piso 5',   'hotel',      'HTP',  5,   'Guests❄'),
('HTP · Piso 6',   'hotel',      'HTP',  6,   'Guests❄'),
('HTP · Piso 7',   'hotel',      'HTP',  7,   'Guests❄');

-- Agregar Hotel Aconcagua si no existe aún
INSERT IGNORE INTO vn_zonas (nombre, tipo, hotel, piso, ssid) VALUES
('HAN · Piso 1',   'hotel',      'HAN',  1,   'Guests❄'),
('HAN · Piso 2',   'hotel',      'HAN',  2,   'Guests❄'),
('HAN · Piso 3',   'hotel',      'HAN',  3,   'Guests❄'),
('HAN · Piso 4',   'hotel',      'HAN',  4,   'Guests❄'),
('HAN · Piso 5',   'hotel',      'HAN',  5,   'Guests❄');

-- Departamentos Hotel Aconcagua (100-605, por piso)
INSERT IGNORE INTO vn_zonas (nombre, tipo, hotel, piso, ssid) VALUES
('Aconcagua · Depto 101','hotel','HAN',1,'Guests❄'),('Aconcagua · Depto 102','hotel','HAN',1,'Guests❄'),
('Aconcagua · Depto 103','hotel','HAN',1,'Guests❄'),('Aconcagua · Depto 104','hotel','HAN',1,'Guests❄'),
('Aconcagua · Depto 105','hotel','HAN',1,'Guests❄'),
('Aconcagua · Depto 201','hotel','HAN',2,'Guests❄'),('Aconcagua · Depto 202','hotel','HAN',2,'Guests❄'),
('Aconcagua · Depto 203','hotel','HAN',2,'Guests❄'),('Aconcagua · Depto 204','hotel','HAN',2,'Guests❄'),
('Aconcagua · Depto 205','hotel','HAN',2,'Guests❄'),
('Aconcagua · Depto 301','hotel','HAN',3,'Guests❄'),('Aconcagua · Depto 302','hotel','HAN',3,'Guests❄'),
('Aconcagua · Depto 303','hotel','HAN',3,'Guests❄'),('Aconcagua · Depto 304','hotel','HAN',3,'Guests❄'),
('Aconcagua · Depto 305','hotel','HAN',3,'Guests❄'),
('Aconcagua · Depto 401','hotel','HAN',4,'Guests❄'),('Aconcagua · Depto 402','hotel','HAN',4,'Guests❄'),
('Aconcagua · Depto 403','hotel','HAN',4,'Guests❄'),('Aconcagua · Depto 404','hotel','HAN',4,'Guests❄'),
('Aconcagua · Depto 405','hotel','HAN',4,'Guests❄'),
('Aconcagua · Depto 501','hotel','HAN',5,'Guests❄'),('Aconcagua · Depto 502','hotel','HAN',5,'Guests❄'),
('Aconcagua · Depto 503','hotel','HAN',5,'Guests❄'),('Aconcagua · Depto 504','hotel','HAN',5,'Guests❄'),
('Aconcagua · Depto 505','hotel','HAN',5,'Guests❄'),
('Aconcagua · Depto 601','hotel','HAN',6,'Guests❄'),('Aconcagua · Depto 602','hotel','HAN',6,'Guests❄'),
('Aconcagua · Depto 603','hotel','HAN',6,'Guests❄'),('Aconcagua · Depto 604','hotel','HAN',6,'Guests❄'),
('Aconcagua · Depto 605','hotel','HAN',6,'Guests❄');
