diff --git a/dashboard.php b/dashboard.php
index 3525fcf..516293c 100644
--- a/dashboard.php
+++ b/dashboard.php
@@ -8,70 +8,82 @@ if (!is_logged_in()) {
}
require_once 'db/config.php';
-
-// Fetch data for analytics
$pdo = db();
-// Candidate stats
-$stmt = $pdo->query('SELECT status, COUNT(*) as count FROM candidates GROUP BY status');
-$candidate_stats = $stmt->fetchAll(PDO::FETCH_ASSOC);
-$total_candidates = array_sum(array_column($candidate_stats, 'count'));
-
-// Task stats
-$stmt = $pdo->query('SELECT status, COUNT(*) as count FROM tasks GROUP BY status');
-$task_stats = $stmt->fetchAll(PDO::FETCH_ASSOC);
-$total_tasks = array_sum(array_column($task_stats, 'count'));
-$completed_tasks = 0;
-foreach ($task_stats as $stat) {
- if ($stat['status'] === 'Completed') {
- $completed_tasks = $stat['count'];
- break;
- }
+// Function to check for permissions
+function hasPermission($permission) {
+ // In a real app, you'd check this against the user's role
+ return true;
}
-// Candidates per day
-$stmt = $pdo->query("SELECT DATE(created_at) as date, COUNT(*) as count FROM candidates GROUP BY DATE(created_at) ORDER BY DATE(created_at) DESC LIMIT 7");
-$candidates_per_day = $stmt->fetchAll(PDO::FETCH_ASSOC);
-
-// Tasks created per day
-$stmt = $pdo->query("SELECT DATE(created_at) as date, COUNT(*) as count FROM tasks GROUP BY DATE(created_at) ORDER BY DATE(created_at) DESC LIMIT 7");
-$tasks_created_per_day = $stmt->fetchAll(PDO::FETCH_ASSOC);
-
-// Tasks completed per day
-$stmt = $pdo->query("SELECT DATE(updated_at) as date, COUNT(*) as count FROM tasks WHERE status = 'Done' GROUP BY DATE(updated_at) ORDER BY DATE(updated_at) DESC LIMIT 7");
-$tasks_completed_per_day = $stmt->fetchAll(PDO::FETCH_ASSOC);
-
-
-// Fetch candidates for table
-$page = isset($_GET['page']) ? (int)$_GET['page'] : 1;
+// Pagination for Candidates
+$candidate_page = isset($_GET['candidate_page']) ? (int)$_GET['candidate_page'] : 1;
$limit = 5;
-$offset = ($page - 1) * $limit;
+$candidate_offset = ($candidate_page - 1) * $limit;
+
$stmt = $pdo->prepare("SELECT * FROM candidates LIMIT :limit OFFSET :offset");
$stmt->bindParam(':limit', $limit, PDO::PARAM_INT);
-$stmt->bindParam(':offset', $offset, PDO::PARAM_INT);
+$stmt->bindParam(':offset', $candidate_offset, PDO::PARAM_INT);
$stmt->execute();
$candidates = $stmt->fetchAll(PDO::FETCH_ASSOC);
+
$stmt = $pdo->query("SELECT COUNT(*) FROM candidates");
$total_candidates_records = $stmt->fetchColumn();
$total_candidate_pages = ceil($total_candidates_records / $limit);
-// Fetch tasks for table
+// Pagination for Tasks
+$task_page = isset($_GET['task_page']) ? (int)$_GET['task_page'] : 1;
+$task_offset = ($task_page - 1) * $limit;
+
$stmt = $pdo->prepare("SELECT * FROM tasks LIMIT :limit OFFSET :offset");
$stmt->bindParam(':limit', $limit, PDO::PARAM_INT);
-$stmt->bindParam(':offset', $offset, PDO::PARAM_INT);
+$stmt->bindParam(':offset', $task_offset, PDO::PARAM_INT);
$stmt->execute();
$tasks = $stmt->fetchAll(PDO::FETCH_ASSOC);
+
$stmt = $pdo->query("SELECT COUNT(*) FROM tasks");
$total_tasks_records = $stmt->fetchColumn();
$total_task_pages = ceil($total_tasks_records / $limit);
+// Handle form submissions for adding candidates and tasks
+$message = '';
+if ($_SERVER['REQUEST_METHOD'] === 'POST') {
+ if (isset($_POST['add_candidate'])) {
+ $name = $_POST['name'];
+ $email = $_POST['email'];
+ $status = $_POST['status'];
+
+ $stmt = $pdo->prepare("INSERT INTO candidates (name, email, status) VALUES (:name, :email, :status)");
+ $stmt->execute(['name' => $name, 'email' => $email, 'status' => $status]);
+ $message = 'Candidate added successfully!';
+ }
+
+ if (isset($_POST['add_task'])) {
+ $title = $_POST['title'];
+ $status = $_POST['status'];
+ $assigned_to = $_POST['assigned_to'];
+
+ $stmt = $pdo->prepare("INSERT INTO tasks (title, status, assigned_to) VALUES (:title, :status, :assigned_to)");
+ $stmt->execute(['title' => $title, 'status' => $status, 'assigned_to' => $assigned_to]);
+ $message = 'Task added successfully!';
+ }
+ // Redirect to the same page to avoid form resubmission
+ header("Location: dashboard.php?tab=" . (isset($_POST['add_candidate']) ? 'candidates' : 'tasks'));
+ exit;
+}
+
+// Fetch data for overview
+$total_candidates = $pdo->query("SELECT COUNT(*) FROM candidates")->fetchColumn();
+$total_tasks = $pdo->query("SELECT COUNT(*) FROM tasks")->fetchColumn();
+$completed_tasks = $pdo->query("SELECT COUNT(*) FROM tasks WHERE status = 'Completed'")->fetchColumn();
+
?>
- Analytics Dashboard
+ Dashboard
@@ -95,10 +107,14 @@ $total_task_pages = ceil($total_tasks_records / $limit);
- Analytics Dashboard
+ Dashboard
+
+
+
+
-
+
-
@@ -115,27 +131,23 @@ $total_task_pages = ceil($total_tasks_records / $limit);
-
+
-
-
-
-
@@ -143,183 +155,196 @@ $total_task_pages = ceil($total_tasks_records / $limit);
-
-
-
-
-
-
-
-
-
-
Candidates by Status
-
-
- :
-
-
-
-
-
-
-
-
-
-
-
Tasks by Status
-
-
- :
-
-
-
-
-
-
-
-
-
-
-
Recent Candidate Activity
-
-
- :
-
-
-
-
-
-
-
-
-
-
-
Recent Task Activity
-
- Created:
-
- :
-
-
-
- Completed:
-
- :
-
-
-
-
-
-
-
-
-
-
-
-
-
Recent Candidates
-
Add Candidate
-
-
-
-
-
- | Name |
- Email |
- Status |
- Actions |
-
-
-
-
-
- |
- |
- |
-
- Edit
- Delete
- |
-
-
-
-
-
-
-
+
+
+
+
Candidates
+
+
+
+
+
+ | Name |
+ Email |
+ Status |
+ Actions |
+
+
+
+
+
+ |
+ |
+ |
+
+ Edit
+ Delete
+ |
+
+
+
+
+
+
-
-
-
-
-
-
-
-
Recent Tasks
-
Add Task
-
-
-
-
-
- | Title |
- Status |
- Assigned To |
- Actions |
-
-
-
-
-
- |
- |
- |
-
- Edit
- Delete
- |
-
-
-
-
-
-
-
+
+
+
+
Tasks
+
+
+
+
+
+ | Title |
+ Status |
+ Assigned To |
+ Actions |
+
+
+
+
+
+ |
+ |
+ |
+
+ Edit
+ Delete
+ |
+
+
+
+
+
+
-
+
+
+
+
+
+
+
-