
USE assistencia_tecnica;

CREATE TABLE clientes (
    id INT AUTO_INCREMENT PRIMARY KEY,
    numeroArtsoft VARCHAR(50) UNIQUE NOT NULL,
    Nome VARCHAR(255) NOT NULL,
    Morada TEXT,
    Telefone VARCHAR(20),
    email VARCHAR(255)
);

-- Sample data for clientes (add more from other program)
INSERT INTO clientes (numeroArtsoft, Nome, Morada, Telefone, email) VALUES 
('ART001', 'João Silva', 'Rua A, 123, Lisboa', '912345678', 'joao@email.com');

CREATE TABLE artigos (
    id INT AUTO_INCREMENT PRIMARY KEY,
    nome VARCHAR(255) NOT NULL,
    preco DECIMAL(10,2)
);

-- Sample data for artigos (add more from other program)
INSERT INTO artigos (nome, preco) VALUES 
('Parafuso', 0.50),
('Cabo USB', 5.00);

CREATE TABLE assistencias (
    id INT AUTO_INCREMENT PRIMARY KEY,
    tecnico ENUM('Nelson', 'Joao', 'Joaquim') NOT NULL,
    id_cliente INT NOT NULL,
    nome_cliente VARCHAR(255) NOT NULL,
    numeroArtsoft VARCHAR(50) NOT NULL,
    morada_intervencao TEXT NOT NULL,
    tipo ENUM('Assistencia', 'Contrato') NOT NULL,
    estado ENUM('Agendado', 'Executado', 'Faturado') DEFAULT 'Agendado',
    descricao TEXT,
    material TEXT, -- Comma-separated artigo IDs or names
    fotos TEXT, -- JSON array of paths or comma-separated
    assinatura_path VARCHAR(255),
    data_registo TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    FOREIGN KEY (id_cliente) REFERENCES clientes(id)
);

CREATE TABLE agendamentos (
    id INT AUTO_INCREMENT PRIMARY KEY,
    id_assistencia INT NOT NULL,
    cliente VARCHAR(255) NOT NULL, -- Nome do cliente
    data_inicio DATE NOT NULL,
    hora_inicio TIME NOT NULL,
    data_fim DATE NOT NULL,
    hora_fim TIME NOT NULL,
    obs TEXT,
    FOREIGN KEY (id_assistencia) REFERENCES assistencias(id)
);