-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathprofile.php
More file actions
73 lines (63 loc) · 2.46 KB
/
Copy pathprofile.php
File metadata and controls
73 lines (63 loc) · 2.46 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
<?php
// تضمين إعدادات الجلسة
require_once __DIR__ . '/config/session.php';
require_once __DIR__ . '/config/database.php';
require_once __DIR__ . '/config/config.php';
require_once __DIR__ . '/models/Database.php';
require_once __DIR__ . '/controllers/AuthController.php';
require_once __DIR__ . '/models/Notification.php';
// التحقق من تسجيل الدخول
$authController = new AuthController();
if(!$authController->isLoggedIn()) {
header('Location: index.php');
exit();
}
$user = $authController->getCurrentUser();
// إنشاء كائن قاعدة البيانات
$database = new Database();
$conn = $database->getConnection();
// الحصول على إحصائيات المستخدم
$stmt = $conn->prepare("
SELECT
COUNT(*) as total_tasks,
SUM(CASE WHEN status = 'Completed' THEN 1 ELSE 0 END) as completed_tasks,
SUM(CASE WHEN status = 'Pending' THEN 1 ELSE 0 END) as pending_tasks,
SUM(CASE WHEN status = 'In Progress' THEN 1 ELSE 0 END) as in_progress_tasks,
SUM(CASE WHEN due_date < NOW() AND status = 'Pending' THEN 1 ELSE 0 END) as overdue_tasks
FROM tasks
WHERE user_id = ?
");
$stmt->execute([$_SESSION['user_id']]);
$userStats = $stmt->fetch();
// الحصول على المهام الأخيرة
$stmt = $conn->prepare("
SELECT t.*, c.name as category_name
FROM tasks t
LEFT JOIN categories c ON t.category_id = c.id
WHERE t.user_id = ?
ORDER BY t.created_at DESC
LIMIT 5
");
$stmt->execute([$_SESSION['user_id']]);
$recentTasks = $stmt->fetchAll();
// الحصول على الفئات
$stmt = $conn->prepare("
SELECT c.*, COUNT(t.id) as task_count
FROM categories c
LEFT JOIN tasks t ON c.id = t.category_id AND t.user_id = ?
WHERE c.user_id = ?
GROUP BY c.id
ORDER BY task_count DESC
");
$stmt->execute([$_SESSION['user_id'], $_SESSION['user_id']]);
$categories = $stmt->fetchAll();
// إضافة الإحصائيات إلى كائن المستخدم
$user->total_tasks = $userStats['total_tasks'] ?? 0;
$user->completed_tasks = $userStats['completed_tasks'] ?? 0;
$user->pending_tasks = $userStats['pending_tasks'] ?? 0;
$user->in_progress_tasks = $userStats['in_progress_tasks'] ?? 0;
$user->overdue_tasks = $userStats['overdue_tasks'] ?? 0;
// حساب معدل الإنجاز
$user->completion_rate = $user->total_tasks > 0 ? round(($user->completed_tasks / $user->total_tasks) * 100, 1) : 0;
include 'views/profile/profile.php';
?>