-- ============================================
-- MIGRAÇÃO: Integração Booking.com + FNRH
-- Sistema SIS+ Hotel
-- ============================================

-- Tabela para configuração da integração com Booking.com
CREATE TABLE IF NOT EXISTS `integracoes_booking` (
    `id` INT AUTO_INCREMENT PRIMARY KEY,
    `hotel_id` VARCHAR(100) DEFAULT NULL COMMENT 'ID do hotel no Booking.com',
    `api_username` VARCHAR(255) DEFAULT NULL COMMENT 'Usuário da API Booking.com',
    `api_password` VARCHAR(255) DEFAULT NULL COMMENT 'Senha da API Booking.com',
    `api_url` VARCHAR(500) DEFAULT 'https://supply-xml.booking.com/hotels/xml' COMMENT 'URL base da API',
    `webhook_secret` VARCHAR(255) DEFAULT NULL COMMENT 'Secret para validar webhooks',
    `ativo` ENUM('s','n') DEFAULT 'n' COMMENT 'Integração ativa ou não',
    `sync_reservas` ENUM('s','n') DEFAULT 's' COMMENT 'Sincronizar reservas automaticamente',
    `sync_disponibilidade` ENUM('s','n') DEFAULT 's' COMMENT 'Sincronizar disponibilidade',
    `ultimo_sync` DATETIME DEFAULT NULL COMMENT 'Última sincronização',
    `criado_em` DATETIME DEFAULT CURRENT_TIMESTAMP,
    `atualizado_em` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

-- Tabela de log de sincronizações com Booking.com
CREATE TABLE IF NOT EXISTS `integracoes_booking_log` (
    `id` INT AUTO_INCREMENT PRIMARY KEY,
    `tipo` ENUM('reserva_recebida','disponibilidade_enviada','erro','sync') NOT NULL,
    `descricao` TEXT,
    `dados_json` TEXT COMMENT 'Dados da requisição/resposta em JSON',
    `status` ENUM('sucesso','erro') DEFAULT 'sucesso',
    `criado_em` DATETIME DEFAULT CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

-- Tabela de mapeamento de acomodações do sistema com quartos no Booking.com
CREATE TABLE IF NOT EXISTS `integracoes_booking_quartos` (
    `id` INT AUTO_INCREMENT PRIMARY KEY,
    `idacomodacao` INT NOT NULL COMMENT 'ID da acomodação no sistema',
    `room_id_booking` VARCHAR(100) NOT NULL COMMENT 'ID do quarto no Booking.com',
    `rate_id_booking` VARCHAR(100) DEFAULT NULL COMMENT 'ID da tarifa no Booking.com',
    `ativo` ENUM('s','n') DEFAULT 's',
    UNIQUE KEY `uk_acomodacao` (`idacomodacao`),
    UNIQUE KEY `uk_room_booking` (`room_id_booking`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

-- Campos adicionais na tabela cliente para FNRH
ALTER TABLE `cliente` 
    ADD COLUMN `rg` VARCHAR(30) DEFAULT NULL AFTER `cpf`,
    ADD COLUMN `orgao_emissor` VARCHAR(20) DEFAULT NULL AFTER `rg`,
    ADD COLUMN `nacionalidade` VARCHAR(50) DEFAULT 'Brasileira' AFTER `orgao_emissor`,
    ADD COLUMN `profissao` VARCHAR(100) DEFAULT NULL AFTER `nacionalidade`,
    ADD COLUMN `sexo` ENUM('M','F','O') DEFAULT NULL AFTER `profissao`,
    ADD COLUMN `endereco` VARCHAR(255) DEFAULT NULL AFTER `cidade`,
    ADD COLUMN `bairro` VARCHAR(100) DEFAULT NULL AFTER `endereco`,
    ADD COLUMN `cep` VARCHAR(10) DEFAULT NULL AFTER `bairro`,
    ADD COLUMN `pais` VARCHAR(50) DEFAULT 'Brasil' AFTER `cep`,
    ADD COLUMN `passaporte` VARCHAR(50) DEFAULT NULL AFTER `pais`,
    ADD COLUMN `dtnasc` DATE DEFAULT NULL AFTER `passaporte`;

-- Tabela FNRH (Ficha Nacional de Registro de Hóspedes)
CREATE TABLE IF NOT EXISTS `fnrh` (
    `id` INT AUTO_INCREMENT PRIMARY KEY,
    `idreserva` INT NOT NULL COMMENT 'ID da reserva associada',
    `idcliente` INT NOT NULL COMMENT 'ID do cliente/hóspede',
    `idacomodacao` INT NOT NULL COMMENT 'ID da acomodação',
    `data_entrada` DATE NOT NULL,
    `data_saida` DATE DEFAULT NULL,
    `ultimo_destino` VARCHAR(200) DEFAULT NULL COMMENT 'De onde veio',
    `proximo_destino` VARCHAR(200) DEFAULT NULL COMMENT 'Para onde vai',
    `motivo_viagem` ENUM('turismo','negocios','eventos','saude','educacao','outros') DEFAULT 'turismo',
    `meio_transporte` ENUM('aviao','onibus','carro_proprio','carro_alugado','outros') DEFAULT 'carro_proprio',
    `num_acompanhantes` INT DEFAULT 0,
    `placa_veiculo` VARCHAR(10) DEFAULT NULL,
    `modelo_veiculo` VARCHAR(100) DEFAULT NULL,
    `observacoes` TEXT DEFAULT NULL,
    `assinatura_digital` ENUM('s','n') DEFAULT 'n' COMMENT 'Se o hóspede assinou digitalmente',
    `enviado_mtur` ENUM('s','n') DEFAULT 'n' COMMENT 'Se foi enviado ao Ministério do Turismo',
    `data_envio_mtur` DATETIME DEFAULT NULL,
    `criado_em` DATETIME DEFAULT CURRENT_TIMESTAMP,
    `atualizado_em` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
    UNIQUE KEY `uk_reserva_cliente` (`idreserva`, `idcliente`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

-- Tabela de acompanhantes da FNRH
CREATE TABLE IF NOT EXISTS `fnrh_acompanhantes` (
    `id` INT AUTO_INCREMENT PRIMARY KEY,
    `idfnrh` INT NOT NULL,
    `nome` VARCHAR(200) NOT NULL,
    `cpf` VARCHAR(14) DEFAULT NULL,
    `rg` VARCHAR(30) DEFAULT NULL,
    `parentesco` VARCHAR(50) DEFAULT NULL,
    `idade` INT DEFAULT NULL,
    FOREIGN KEY (`idfnrh`) REFERENCES `fnrh`(`id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
