exec(" CREATE TABLE IF NOT EXISTS departments ( id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(120) NOT NULL, code VARCHAR(20) NOT NULL, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; "); $pdo->exec(" CREATE TABLE IF NOT EXISTS positions ( id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(120) NOT NULL, level VARCHAR(60) DEFAULT NULL, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; "); $pdo->exec(" CREATE TABLE IF NOT EXISTS employees ( id INT AUTO_INCREMENT PRIMARY KEY, employee_code VARCHAR(30) NOT NULL, full_name VARCHAR(160) NOT NULL, email VARCHAR(160) DEFAULT NULL, phone VARCHAR(40) DEFAULT NULL, status VARCHAR(40) NOT NULL DEFAULT 'Aktif', employment_type VARCHAR(60) DEFAULT 'Kontrak', hire_date DATE DEFAULT NULL, dept_id INT DEFAULT NULL, position_id INT DEFAULT NULL, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, INDEX idx_dept (dept_id), INDEX idx_position (position_id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; "); } } if (!function_exists('seed_demo_data')) { function seed_demo_data(): void { $pdo = db(); $deptCount = (int)$pdo->query("SELECT COUNT(*) FROM departments")->fetchColumn(); if ($deptCount === 0) { $stmt = $pdo->prepare("INSERT INTO departments (name, code) VALUES (?, ?)"); $rows = [ ['HR & People Ops', 'HR'], ['Finance', 'FIN'], ['Technology', 'TECH'], ['Operations', 'OPS'], ]; foreach ($rows as $row) { $stmt->execute($row); } } $posCount = (int)$pdo->query("SELECT COUNT(*) FROM positions")->fetchColumn(); if ($posCount === 0) { $stmt = $pdo->prepare("INSERT INTO positions (name, level) VALUES (?, ?)"); $rows = [ ['HR Manager', 'Lead'], ['Recruiter', 'Staff'], ['Software Engineer', 'Staff'], ['Finance Analyst', 'Staff'], ]; foreach ($rows as $row) { $stmt->execute($row); } } $empCount = (int)$pdo->query("SELECT COUNT(*) FROM employees")->fetchColumn(); if ($empCount === 0) { $deptMap = $pdo->query("SELECT id, code FROM departments")->fetchAll(PDO::FETCH_KEY_PAIR); $posMap = $pdo->query("SELECT id, name FROM positions")->fetchAll(PDO::FETCH_KEY_PAIR); $stmt = $pdo->prepare(" INSERT INTO employees (employee_code, full_name, email, phone, status, employment_type, hire_date, dept_id, position_id) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?) "); $samples = [ ['EMP-001', 'Anisa Putri', 'anisa@company.id', '0812-100-200', 'Aktif', 'Kontrak', '2024-05-10', $deptMap['HR'], $posMap['HR Manager']], ['EMP-002', 'Rafi Nugraha', 'rafi@company.id', '0812-301-222', 'Aktif', 'Tetap', '2023-11-02', $deptMap['TECH'], $posMap['Software Engineer']], ['EMP-003', 'Sinta Rahma', 'sinta@company.id', '0813-403-900', 'Probation', 'Kontrak', '2025-01-08', $deptMap['OPS'], $posMap['Recruiter']], ['EMP-004', 'Dimas Prakoso', 'dimas@company.id', '0812-112-555', 'Aktif', 'Tetap', '2022-06-19', $deptMap['FIN'], $posMap['Finance Analyst']], ]; foreach ($samples as $row) { $stmt->execute($row); } } } } ensure_schema(); seed_demo_data();