beginTransaction(); // 1. Delete the employee record $stmt = $pdo->prepare("DELETE FROM employees WHERE id = ? AND company_id = ?"); $stmt->execute([$employee_id, $company_id]); // 2. Delete the user record $stmt = $pdo->prepare("DELETE FROM users WHERE id = ? AND company_id = ?"); $stmt->execute([$user_id, $company_id]); $pdo->commit(); $success_message = 'Employee deleted successfully!'; } catch (Exception $e) { if ($pdo->inTransaction()) { $pdo->rollBack(); } $error_message = "Failed to delete employee: " . $e->getMessage(); } } else { $error_message = 'Invalid employee data for deletion.'; } } // Handle Add Employee if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['add_employee'])) { $first_name = $_POST['first_name'] ?? ''; $last_name = $_POST['last_name'] ?? ''; $email = $_POST['email'] ?? ''; $position = $_POST['position'] ?? ''; $basic_salary = $_POST['basic_salary'] ?? 0; $password = $_POST['password'] ?? 'password123'; // Default password, should be changed by user if (empty($first_name) || empty($last_name) || empty($email) || empty($position) || empty($basic_salary)) { $error_message = 'All fields are required to add an employee.'; } else { try { $pdo = db(); $pdo->beginTransaction(); // Check if email exists $stmt = $pdo->prepare("SELECT id FROM users WHERE email = ?"); $stmt->execute([$email]); if ($stmt->fetch()) { throw new Exception("A user with this email already exists."); } // 1. Create a user record for the employee $hashed_password = password_hash($password, PASSWORD_DEFAULT); $stmt = $pdo->prepare("INSERT INTO users (company_id, email, password, role) VALUES (?, ?, ?, 'employee')"); $stmt->execute([$company_id, $email, $hashed_password]); $user_id = $pdo->lastInsertId(); // 2. Create the employee record $stmt = $pdo->prepare( "INSERT INTO employees (user_id, company_id, first_name, last_name, position, basic_salary) VALUES (?, ?, ?, ?, ?, ?)" ); $stmt->execute([$user_id, $company_id, $first_name, $last_name, $position, $basic_salary]); $pdo->commit(); $success_message = 'Employee added successfully!'; } catch (Exception $e) { if ($pdo->inTransaction()) { $pdo->rollBack(); } $error_message = "Failed to add employee: " . $e->getMessage(); } } } // Fetch employees for the company $stmt = db()->prepare("SELECT e.*, u.email FROM employees e JOIN users u ON e.user_id = u.id WHERE e.company_id = ? ORDER BY e.created_at DESC"); $stmt->execute([$company_id]); $employees = $stmt->fetchAll(); ?>
| Name | Position | Salary | Hire Date | Actions | |
|---|---|---|---|---|---|
| No employees found. | |||||
| = htmlspecialchars($employee['first_name'] . ' ' . $employee['last_name']) ?> | = htmlspecialchars($employee['email']) ?> | = htmlspecialchars($employee['position']) ?> | ZMW = htmlspecialchars(number_format((float)$employee['basic_salary'], 2)) ?> | = htmlspecialchars(date('d M Y', strtotime($employee['hire_date'] ?? $employee['created_at']))) ?> | Edit |