-- ===== CRIAÇÃO DO BANCO DE DADOS =====
CREATE DATABASE IF NOT EXISTS sistema_agendamento;
USE sistema_agendamento;

-- ===== TABELA DE USUÁRIOS =====
CREATE TABLE IF NOT EXISTS usuarios (
    id INT AUTO_INCREMENT PRIMARY KEY,
    cpf_oab VARCHAR(20) UNIQUE,
    nome VARCHAR(255) NOT NULL,
    email VARCHAR(320),
    oab VARCHAR(50),
    telefone VARCHAR(20),
    criado_em TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    atualizado_em TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- ===== TABELA DE AGENDAS =====
CREATE TABLE IF NOT EXISTS agendas (
    id INT AUTO_INCREMENT PRIMARY KEY,
    nome VARCHAR(255) NOT NULL,
    descricao TEXT,
    local TEXT,
    ativa INT DEFAULT 1,
    criado_em TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    atualizado_em TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- ===== TABELA DE AGENDAMENTOS =====
CREATE TABLE IF NOT EXISTS agendamentos (
    id INT AUTO_INCREMENT PRIMARY KEY,
    id_agenda INT NOT NULL,
    id_usuario INT NOT NULL,
    motivo VARCHAR(255) NOT NULL,
    observacao TEXT,
    data_agendamento DATETIME NOT NULL,
    hora_inicio VARCHAR(8) NOT NULL,
    hora_fim VARCHAR(8) NOT NULL,
    telefone_contato VARCHAR(20),
    status ENUM('Confirmado', 'Cancelado', 'Realizado', 'Não Compareceu') DEFAULT 'Confirmado',
    motivo_cancelamento TEXT,
    data_cancelamento DATETIME,
    criado_em TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    atualizado_em TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
    FOREIGN KEY (id_agenda) REFERENCES agendas(id),
    FOREIGN KEY (id_usuario) REFERENCES usuarios(id),
    INDEX idx_usuario_agenda (id_usuario, id_agenda),
    INDEX idx_data (data_agendamento),
    INDEX idx_status (status)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- ===== TABELA DE DIAS BLOQUEADOS =====
CREATE TABLE IF NOT EXISTS dias_bloqueados (
    id INT AUTO_INCREMENT PRIMARY KEY,
    id_agenda INT NOT NULL,
    data DATETIME NOT NULL,
    motivo VARCHAR(255),
    criado_em TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    FOREIGN KEY (id_agenda) REFERENCES agendas(id),
    INDEX idx_agenda_data (id_agenda, data)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- ===== INSERIR AGENDA PADRÃO =====
INSERT INTO agendas (id, nome, descricao, local, ativa) VALUES 
(1, 'INSS Digital', 'Agenda de agendamentos para o INSS Digital', 'Seccional do INSS - Rua Paschoal Apóstolo Pítsica, 4860 - Bairro Agronômica – Florianópolis/SC', 1)
ON DUPLICATE KEY UPDATE ativa = 1;
