CREATE DATABASE IF NOT EXISTS innjoy_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
USE innjoy_db;

-- Tabela de Usuários
CREATE TABLE IF NOT EXISTS usuarios (
    id INT AUTO_INCREMENT PRIMARY KEY,
    nome VARCHAR(100) NOT NULL,
    login VARCHAR(50) NOT NULL UNIQUE,
    senha VARCHAR(255) NOT NULL,
    nivel_acesso ENUM('admin', 'funcionario') DEFAULT 'funcionario',
    status ENUM('ativo', 'inativo') DEFAULT 'ativo',
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

-- Tabela de Clientes
CREATE TABLE IF NOT EXISTS clientes (
    id INT AUTO_INCREMENT PRIMARY KEY,
    nome VARCHAR(100) NOT NULL,
    cpf_cnpj VARCHAR(20) UNIQUE,
    email VARCHAR(100),
    telefone VARCHAR(20),
    tipo ENUM('PF', 'PJ') DEFAULT 'PF',
    status ENUM('ativo', 'inativo') DEFAULT 'ativo',
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

-- Tabela de Tipos de Acomodação
CREATE TABLE IF NOT EXISTS acomodacoes_tipos (
    id INT AUTO_INCREMENT PRIMARY KEY,
    nome VARCHAR(50) NOT NULL,
    descricao TEXT
);

-- Tabela de Acomodações
CREATE TABLE IF NOT EXISTS acomodacoes (
    id INT AUTO_INCREMENT PRIMARY KEY,
    tipo_id INT,
    numero VARCHAR(10) NOT NULL,
    nome VARCHAR(50),
    capacidade INT NOT NULL,
    valor_diaria DECIMAL(10, 2) NOT NULL,
    status_limpeza ENUM('limpo', 'pendente') DEFAULT 'limpo',
    status ENUM('disponivel', 'ocupado', 'manutencao') DEFAULT 'disponivel',
    FOREIGN KEY (tipo_id) REFERENCES acomodacoes_tipos(id)
);

-- Tabela de Reservas
CREATE TABLE IF NOT EXISTS reservas (
    id INT AUTO_INCREMENT PRIMARY KEY,
    cliente_id INT,
    acomodacao_id INT,
    data_checkin DATE NOT NULL,
    data_checkout DATE NOT NULL,
    valor_total DECIMAL(10, 2) NOT NULL,
    status ENUM('pendente', 'iniciada', 'finalizada', 'cancelada') DEFAULT 'pendente',
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    FOREIGN KEY (cliente_id) REFERENCES clientes(id),
    FOREIGN KEY (acomodacao_id) REFERENCES acomodacoes(id)
);

-- Inserir usuário admin padrão (senha: admin)
-- Nota: Em produção, a senha deve ser um hash Bcrypt.
INSERT INTO usuarios (nome, login, senha, nivel_acesso) 
VALUES ('Administrador', 'admin', '$2y$10$92IXUNpkjO0rOQ5byMi.Ye4oKoEa3Ro9llC/.og/at2.uheWG/igi', 'admin');
-- O hash acima é para a senha 'password', vamos gerar um para 'admin' depois.
