-- Schema do banco de dados para App Controle de Obra
-- Execute este script no phpMyAdmin ou CLI do MySQL

CREATE DATABASE app_controle_obra;
USE app_controle_obra;

-- Tabela de usuários (você e o pedreiro)
CREATE TABLE usuarios (
    id INT AUTO_INCREMENT PRIMARY KEY,
    nome VARCHAR(100) NOT NULL,
    email VARCHAR(100) UNIQUE NOT NULL,
    senha VARCHAR(255) NOT NULL,  -- Armazene hash com password_hash()
    tipo ENUM('dono', 'pedreiro') NOT NULL
);

-- Tabela de mensagens (chat)
CREATE TABLE mensagens (
    id INT AUTO_INCREMENT PRIMARY KEY,
    de_id INT NOT NULL,  -- ID do remetente
    para_id INT NOT NULL,  -- ID do destinatário
    mensagem TEXT NOT NULL,
    data TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    FOREIGN KEY (de_id) REFERENCES usuarios(id),
    FOREIGN KEY (para_id) REFERENCES usuarios(id)
);

-- Tabela de fotos de progresso
CREATE TABLE fotos_progresso (
    id INT AUTO_INCREMENT PRIMARY KEY,
    pedreiro_id INT NOT NULL,
    caminho_arquivo VARCHAR(255) NOT NULL,  -- ex: 'images/progresso_123.jpg'
    descricao TEXT,
    data TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    FOREIGN KEY (pedreiro_id) REFERENCES usuarios(id)
);

-- Tabela de pedidos de materiais
CREATE TABLE pedidos_materiais (
    id INT AUTO_INCREMENT PRIMARY KEY,
    pedreiro_id INT NOT NULL,
    itens TEXT NOT NULL,  -- ex: 'Cimento: 10 sacos, Areia: 5m³'
    status ENUM('pendente', 'aprovado', 'entregue') DEFAULT 'pendente',
    data TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    FOREIGN KEY (pedreiro_id) REFERENCES usuarios(id)
);

-- Tabela de pagamentos
CREATE TABLE pagamentos (
    id INT AUTO_INCREMENT PRIMARY KEY,
    valor_devido DECIMAL(10,2) NOT NULL,
    valor_pago DECIMAL(10,2) DEFAULT 0,
    descricao TEXT,
    data_registro TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    status ENUM('pendente', 'parcial', 'pago') DEFAULT 'pendente'
);

-- Tabela para tokens de push notifications
CREATE TABLE push_tokens (
    id INT AUTO_INCREMENT PRIMARY KEY,
    user_id INT NOT NULL,
    token TEXT NOT NULL,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    FOREIGN KEY (user_id) REFERENCES usuarios(id),
    UNIQUE KEY unique_token (user_id, token(255))  -- evita duplicatas
);