Painel de controle de tempo
-- Criar banco de dados
CREATE DATABASE TimeTrackDashboard;
-- Usar o banco de dados
USE TimeTrackDashboard;
-- Tabela de usuários
CREATE TABLE users (
id INT AUTO_INCREMENT PRIMARY KEY,
username VARCHAR(50) NOT NULL UNIQUE,
password VARCHAR(255) NOT NULL,
email VARCHAR(100) NOT NULL UNIQUE,
full_name VARCHAR(100) NOT NULL,
role ENUM('admin', 'employee') DEFAULT 'employee',
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
last_login TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);
-- Tabela de pontos registrados
CREATE TABLE time_entries (
id INT AUTO_INCREMENT PRIMARY KEY,
user_id INT NOT NULL,
check_in DATETIME NOT NULL,
check_out DATETIME,
activity_description TEXT,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE
);
-- Tabela de banco de horas
CREATE TABLE time_balances (
id INT AUTO_INCREMENT PRIMARY KEY,
user_id INT NOT NULL,
total_hours DECIMAL(10, 2) DEFAULT 0,
extra_hours DECIMAL(10, 2) DEFAULT 0,
missing_hours DECIMAL(10, 2) DEFAULT 0,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE
);
-- Tabela de solicitações
CREATE TABLE requests (
id INT AUTO_INCREMENT PRIMARY KEY,
user_id INT NOT NULL,
type ENUM('adjustment', 'absence_justification') NOT NULL,
description TEXT NOT NULL,
status ENUM('pending', 'approved', 'rejected') DEFAULT 'pending',
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE
);
-- Tabela de configurações (opcional)
CREATE TABLE settings (
id INT AUTO_INCREMENT PRIMARY KEY,
user_id INT NOT NULL,
notification_preferences TEXT,
theme_preferences VARCHAR(50),
FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE
);