-- Migration V30: Módulo Painel de Chamada
-- Data: 2026-03-08
-- Painel digital de chamada de pacientes (estilo SAC) com suporte a propagandas

-- 1. Tabela de chamadas do painel
CREATE TABLE IF NOT EXISTS `painel_chamadas` (
    `id`              INT AUTO_INCREMENT PRIMARY KEY,
    `clinica_id`      INT NOT NULL,
    `agendamento_id`  INT NULL COMMENT 'NULL quando for encaixe manual',
    `paciente_nome`   VARCHAR(255) NOT NULL,
    `tipo`            ENUM('recepcao','consultorio') NOT NULL DEFAULT 'recepcao',
    `sala`            VARCHAR(100) NULL COMMENT 'Recepção, Consultório 1, etc.',
    `usuario_id`      INT NOT NULL COMMENT 'Quem realizou a chamada',
    `is_manual`       TINYINT(1) NOT NULL DEFAULT 0 COMMENT '1 = encaixe manual',
    `status`          ENUM('chamando','atendido','cancelado') NOT NULL DEFAULT 'chamando',
    `data_chamada`    DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
    INDEX `idx_clinica_data`   (`clinica_id`, `data_chamada`),
    INDEX `idx_agendamento`    (`agendamento_id`),
    INDEX `idx_data_chamada`   (`data_chamada`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- 2. Tabela de propagandas/mídias do painel
CREATE TABLE IF NOT EXISTS `painel_propagandas` (
    `id`          INT AUTO_INCREMENT PRIMARY KEY,
    `clinica_id`  INT NOT NULL,
    `tipo`        ENUM('imagem','slide','video','texto','link') NOT NULL,
    `titulo`      VARCHAR(255) NULL,
    `conteudo`    TEXT NULL COMMENT 'Texto, URL de vídeo/link ou HTML',
    `arquivo`     VARCHAR(500) NULL COMMENT 'Caminho do arquivo de imagem/vídeo',
    `ordem`       INT NOT NULL DEFAULT 0,
    `duracao`     INT NOT NULL DEFAULT 8 COMMENT 'Segundos que cada item fica visível',
    `ativo`       TINYINT(1) NOT NULL DEFAULT 1,
    `created_at`  DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
    `updated_at`  DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
    INDEX `idx_clinica_ativo` (`clinica_id`, `ativo`),
    INDEX `idx_ordem`         (`clinica_id`, `ordem`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- 3. Permissões do módulo
INSERT IGNORE INTO `permissoes` (`nome`, `chave`, `descricao`) VALUES
('Painel de Chamada - Display',    'painel_display',   'Visualizar o painel de chamada na TV/monitor'),
('Painel de Chamada - Recepção',   'painel_recepcao',  'Chamar pacientes pelo painel (recepcionista)'),
('Painel de Chamada - Médico',     'painel_medico',    'Chamar paciente para o consultório (médico)'),
('Painel de Chamada - Propagandas','painel_manage',    'Gerenciar propagandas e mídias do painel');

-- 4. Associa todas as permissões ao perfil Admin (ID 1)
INSERT IGNORE INTO `perfil_permissoes` (`perfil_id`, `permissao_id`)
SELECT 1, id FROM `permissoes`
WHERE `chave` IN ('painel_display','painel_recepcao','painel_medico','painel_manage');
