لا توجد صلاحية للوصول لهذه الصفحة."; require_once 'includes/footer.php'; exit; } // Fetch all committees and calculate stats if (isAdmin()) { $stmt = db()->query(" SELECT c.id, c.name, (SELECT COUNT(*) FROM committee_members WHERE committee_id = c.id) as members_count, (SELECT COUNT(*) FROM committee_plans WHERE committee_id = c.id) as total_plans, (SELECT COUNT(*) FROM committee_plans WHERE committee_id = c.id AND status = 'completed') as completed_plans, (SELECT COUNT(*) FROM committee_activities WHERE committee_id = c.id) as activities_count FROM committees c ORDER BY c.name ASC "); $committees = $stmt->fetchAll(PDO::FETCH_ASSOC); } else { $stmt = db()->prepare(" SELECT c.id, c.name, (SELECT COUNT(*) FROM committee_members WHERE committee_id = c.id) as members_count, (SELECT COUNT(*) FROM committee_plans WHERE committee_id = c.id) as total_plans, (SELECT COUNT(*) FROM committee_plans WHERE committee_id = c.id AND status = 'completed') as completed_plans, (SELECT COUNT(*) FROM committee_activities WHERE committee_id = c.id) as activities_count FROM committees c JOIN committee_members m ON c.id = m.committee_id JOIN charity_members cm ON m.charity_member_id = cm.id JOIN users u ON (u.id = cm.user_id) OR (cm.email != '' AND cm.email = u.email) OR (cm.name = u.full_name) OR (cm.name = u.username) WHERE u.id = ? GROUP BY c.id ORDER BY c.name ASC "); $stmt->execute([$_SESSION['user_id']]); $committees = $stmt->fetchAll(PDO::FETCH_ASSOC); } // Overall stats $total_committees = count($committees); $total_members = 0; $total_plans = 0; $total_completed = 0; $total_activities = 0; foreach ($committees as &$c) { $total_members += $c['members_count']; $total_plans += $c['total_plans']; $total_completed += $c['completed_plans']; $total_activities += $c['activities_count']; // Calculate performance score (smart assessment) // Score based on: Completed plans (weight 60%) + Activities done (weight 40%) // Let's make a simple normalized score out of 100 for visual assessment $plan_completion_rate = $c['total_plans'] > 0 ? ($c['completed_plans'] / $c['total_plans']) * 100 : 0; // Assume an "active" committee should have at least 1 activity per month (say 5 is a good baseline for 100% activity score) $activity_score = min(100, $c['activities_count'] * 20); // Final composite score $score = ($plan_completion_rate * 0.6) + ($activity_score * 0.4); $c['score'] = $score; // Determine badge if ($score >= 80) { $c['badge'] = 'ممتاز'; $c['color'] = 'success'; } elseif ($score >= 50) { $c['badge'] = 'جيد'; $c['color'] = 'primary'; } elseif ($score > 0) { $c['badge'] = 'يحتاج تحسين'; $c['color'] = 'warning'; } else { $c['badge'] = 'غير نشط'; $c['color'] = 'danger'; } } unset($c); // Sort by score descending to rank them usort($committees, function($a, $b) { return $b['score'] <=> $a['score']; }); ?>
| الترتيب | اللجنة | الأعضاء | إنجاز الخطط | الأنشطة المنجزة | مؤشر الأداء (KPI) | التقييم | |
|---|---|---|---|---|---|---|---|
| لا توجد لجان مضافة حتى الآن. | |||||||
| 0): ?> 0): ?> 0): ?> #= $index + 1 ?> | = htmlspecialchars($c['name'] ?? '') ?> | = $c['members_count'] ?> |
= $c['completed_plans'] ?> / = $c['total_plans'] ?>
0 ? ($c['completed_plans'] / $c['total_plans']) * 100 : 0; ?>
|
= $c['activities_count'] ?> |
نسبة الإنجاز:
= round($c['score']) ?>%
|
= $c['badge'] ?> | تقرير مفصل |