

-- Tabela de profissionais
CREATE TABLE IF NOT EXISTS profissionais (
    id INTEGER PRIMARY KEY AUTOINCREMENT,
    nome TEXT NOT NULL,
    especialidade TEXT NOT NULL,
    bio TEXT,
    foto TEXT,
    disponibilidade TEXT, -- JSON com horários disponíveis
    usuario_id INTEGER,
    data_cadastro TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    data_atualizacao TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    FOREIGN KEY (usuario_id) REFERENCES usuarios (id) ON DELETE SET NULL
);

-- Tabela de serviços
CREATE TABLE IF NOT EXISTS servicos (
    id INTEGER PRIMARY KEY AUTOINCREMENT,
    nome TEXT NOT NULL,
    descricao TEXT,
    duracao INTEGER NOT NULL, -- em minutos
    preco REAL NOT NULL,
    profissional_id INTEGER,
    data_cadastro TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    data_atualizacao TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    FOREIGN KEY (profissional_id) REFERENCES profissionais (id) ON DELETE SET NULL
);

-- Tabela de agendamentos
CREATE TABLE IF NOT EXISTS agendamentos (
    id INTEGER PRIMARY KEY AUTOINCREMENT,
    usuario_id INTEGER NOT NULL,
    profissional_id INTEGER NOT NULL,
    servico_id INTEGER NOT NULL,
    data_hora TIMESTAMP NOT NULL,
    status TEXT NOT NULL DEFAULT 'pendente', -- pendente, confirmado, cancelado, concluido
    observacoes TEXT,
    data_cadastro TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    data_atualizacao TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    FOREIGN KEY (usuario_id) REFERENCES usuarios (id) ON DELETE CASCADE,
    FOREIGN KEY (profissional_id) REFERENCES profissionais (id) ON DELETE CASCADE,
    FOREIGN KEY (servico_id) REFERENCES servicos (id) ON DELETE CASCADE
);

-- Tabela de configurações
CREATE TABLE IF NOT EXISTS configuracoes (
    id INTEGER PRIMARY KEY CHECK (id = 1), -- Garante que só exista uma linha
    nome_empresa TEXT NOT NULL,
    logo_url TEXT,
    cor_primaria TEXT,
    cor_secundaria TEXT,
    horario_funcionamento TEXT, -- JSON com horários de funcionamento
    email_contato TEXT,
    whatsapp TEXT,
    google_calendar_id TEXT,
    wordpress_url TEXT,
    data_atualizacao TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

-- Inserir alguns profissionais de exemplo
INSERT OR IGNORE INTO profissionais (id, nome, especialidade, bio)
VALUES 
(1, 'Dr. João Silva', 'Clínico Geral', 'Médico com 15 anos de experiência em clínica geral.'),
(2, 'Dra. Maria Oliveira', 'Nutricionista', 'Especialista em nutrição esportiva e emagrecimento.'),
(3, 'Carlos Santos', 'Fisioterapeuta', 'Fisioterapeuta especializado em reabilitação de lesões esportivas.');

-- Inserir alguns serviços de exemplo
INSERT OR IGNORE INTO servicos (id, nome, descricao, duracao, preco, profissional_id)
VALUES 
(1, 'Consulta Médica', 'Consulta médica geral', 30, 150.00, 1),
(2, 'Avaliação Nutricional', 'Avaliação completa com bioimpedância', 60, 120.00, 2),
(3, 'Sessão de Fisioterapia', 'Sessão de fisioterapia com duração de 50 minutos', 50, 100.00, 3);

-- Inserir configurações padrão
INSERT OR IGNORE INTO configuracoes (id, nome_empresa, cor_primaria, cor_secundaria, horario_funcionamento, email_contato)
VALUES (1, 'Sistema de Agendamento', '#3B82F6', '#10B981', '{"segunda":{"inicio":"08:00","fim":"18:00"},"terca":{"inicio":"08:00","fim":"18:00"},"quarta":{"inicio":"08:00","fim":"18:00"},"quinta":{"inicio":"08:00","fim":"18:00"},"sexta":{"inicio":"08:00","fim":"18:00"},"sabado":{"inicio":"08:00","fim":"12:00"},"domingo":{"inicio":"","fim":""}}', 'contato@sistemaagendamento.com');
