-- Create Database
CREATE DATABASE IF NOT EXISTS sis_odonto;
USE sis_odonto;

-- Tables
CREATE TABLE IF NOT EXISTS pacientes (
    id VARCHAR(50) PRIMARY KEY,
    nome VARCHAR(255) NOT NULL,
    cpf VARCHAR(20),
    telefone VARCHAR(20),
    email VARCHAR(255),
    ultimoTratamento VARCHAR(100),
    convenio VARCHAR(100),
    dataNascimento VARCHAR(20)
);

CREATE TABLE IF NOT EXISTS dentistas (
    id VARCHAR(50) PRIMARY KEY,
    nome VARCHAR(255) NOT NULL,
    email VARCHAR(255),
    telefone VARCHAR(20),
    corAgenda VARCHAR(10),
    especialidade VARCHAR(100),
    ativo BOOLEAN DEFAULT TRUE
);

CREATE TABLE IF NOT EXISTS especialidades (
    id VARCHAR(50) PRIMARY KEY,
    nome VARCHAR(100) NOT NULL,
    descricao TEXT
);

CREATE TABLE IF NOT EXISTS planos (
    id VARCHAR(50) PRIMARY KEY,
    nome VARCHAR(100) NOT NULL,
    tipo ENUM('Convenio', 'Particular', 'Parceria') NOT NULL,
    descontoPadrao INT DEFAULT 0,
    corCartao VARCHAR(10)
);

CREATE TABLE IF NOT EXISTS procedimentos (
    id VARCHAR(50) PRIMARY KEY,
    nome VARCHAR(255) NOT NULL,
    descricao TEXT,
    especialidadeId VARCHAR(50),
    especialidadeNome VARCHAR(100),
    valorParticular DECIMAL(10, 2),
    FOREIGN KEY (especialidadeId) REFERENCES especialidades(id)
);

CREATE TABLE IF NOT EXISTS procedimentos_valores_planos (
    id INT AUTO_INCREMENT PRIMARY KEY,
    procedimentoId VARCHAR(50),
    planoId VARCHAR(50),
    planoNome VARCHAR(100),
    valor DECIMAL(10, 2),
    FOREIGN KEY (procedimentoId) REFERENCES procedimentos(id),
    FOREIGN KEY (planoId) REFERENCES planos(id)
);

CREATE TABLE IF NOT EXISTS agendamentos (
    id VARCHAR(50) PRIMARY KEY,
    pacienteNome VARCHAR(255),
    dentistaId VARCHAR(50),
    start_time DATETIME,
    end_time DATETIME,
    status ENUM('Confirmado', 'Pendente', 'Concluido'),
    procedimento VARCHAR(255),
    observacoes TEXT,
    FOREIGN KEY (dentistaId) REFERENCES dentistas(id)
);

CREATE TABLE IF NOT EXISTS financeiro (
    id VARCHAR(50) PRIMARY KEY,
    pacienteNome VARCHAR(255),
    descricao VARCHAR(255),
    valor DECIMAL(10, 2),
    dataVencimento DATE,
    status ENUM('Pago', 'Pendente', 'Atrasado'),
    formaPagamento ENUM('Boleto', 'Pix', 'Cartão', 'Dinheiro')
);

CREATE TABLE IF NOT EXISTS leads (
    id VARCHAR(50) PRIMARY KEY,
    nome VARCHAR(100),
    sobrenome VARCHAR(100),
    cpf VARCHAR(20),
    whatsapp VARCHAR(20),
    tipoInteresse ENUM('Particular', 'Plano'),
    dataCadastro DATETIME,
    status ENUM('Novo', 'Convertido', 'Arquivado')
);

CREATE TABLE IF NOT EXISTS notificacoes (
    id VARCHAR(50) PRIMARY KEY,
    titulo VARCHAR(255),
    mensagem TEXT,
    tipo ENUM('lead', 'sistema', 'agenda'),
    lida BOOLEAN DEFAULT FALSE,
    data_notif DATETIME
);

-- Seed Initial Data
INSERT IGNORE INTO especialidades (id, nome, descricao) VALUES 
('e1', 'ORTODONTIA', 'CORREÇÃO DA POSIÇÃO DOS DENTES E OSSOS MAXILARES'),
('e2', 'IMPLANTODONTIA', 'IMPLANTES DENTÁRIOS E REABILITAÇÃO ORAL'),
('e3', 'ENDODONTIA', 'TRATAMENTO DE CANAL E LESÕES PERIAPICAIS'),
('e4', 'CLÍNICO GERAL', 'PROCEDIMENTOS BÁSICOS, LIMPEZA E RESTAURAÇÕES');

INSERT IGNORE INTO dentistas (id, nome, email, telefone, corAgenda, especialidade, ativo) VALUES 
('d1', 'MURILO AMORIM', 'muriloamorim791@gmail.com', '(67) 99999-1111', '#10B981', 'ORTODONTIA', TRUE),
('d2', 'RUI CESAR VARGAS', 'ruibto@gmail.com', '(67) 99999-2222', '#3B82F6', 'IMPLANTE', TRUE);

INSERT IGNORE INTO planos (id, nome, tipo, descontoPadrao, corCartao) VALUES 
('p1', 'PARTICULAR', 'Particular', 0, '#1f2937'),
('p2', 'UNIMED ODONTO', 'Convenio', 0, '#059669'),
('p3', 'ODONTOPREV', 'Convenio', 0, '#dc2626'),
('p4', 'PARCERIA SINDICATO', 'Parceria', 15, '#2563eb');

INSERT IGNORE INTO pacientes (id, nome, cpf, telefone, email, ultimoTratamento, convenio, dataNascimento) VALUES 
('1', 'WESLLEY ANTONY TELLES DA SILVA', '702.013.331-20', '(67) 98125-2514', 'WESLLEY@EMAIL.COM', 'ORTO', 'CASSEMS', '17/08/2000'),
('2', 'NICOLLY BEATRIZ TEIXEIRA', '101.034.232-06', '(67) 99904-7557', 'NICOLLY@EMAIL.COM', 'LIMPEZA', 'ODONTOSEG', '22/09/2010'),
('3', 'ROSANGELA DUTRA', '917.670.830-68', '(67) 9272-2487', 'ROSANGELA@EMAIL.COM', NULL, 'CASSEMS', '23/11/1978');

INSERT IGNORE INTO procedimentos (id, nome, descricao, especialidadeId, especialidadeNome, valorParticular) VALUES 
('proc1', 'CONSULTA INICIAL', 'AVALIAÇÃO INICIAL E PLANO DE TRATAMENTO', 'e4', 'CLÍNICO GERAL', 150.00),
('proc2', 'MANUTENÇÃO ORTODÔNTICA', 'MANUTENÇÃO MENSAL DE APARELHO FIXO', 'e1', 'ORTODONTIA', 250.00);

INSERT IGNORE INTO procedimentos_valores_planos (procedimentoId, planoId, planoNome, valor) VALUES 
('proc1', 'p2', 'UNIMED ODONTO', 80.00),
('proc1', 'p3', 'ODONTOPREV', 75.00);

INSERT IGNORE INTO financeiro (id, pacienteNome, descricao, valor, dataVencimento, status, formaPagamento) VALUES 
('f1', 'WESLLEY ANTONY', 'MANUTENÇÃO MENSAL ORTO', 150.00, '2023-10-15', 'Pago', 'Pix'),
('f2', 'NICOLLY BEATRIZ', 'ENTRADA IMPLANTE', 1200.00, '2023-10-20', 'Pendente', 'Boleto');
