diff --git a/app/Http/Controllers/AdminController.php b/app/Http/Controllers/AdminController.php index e807fcc..7855e3e 100644 --- a/app/Http/Controllers/AdminController.php +++ b/app/Http/Controllers/AdminController.php @@ -18,7 +18,8 @@ class AdminController extends Controller // Admin dashboard (optional) public function index() { - return view('admin.dashboard'); + $departments = Department::all(); + return view('admin.dashboard', compact('departments')); } // View responses submitted by users @@ -181,4 +182,86 @@ class AdminController extends Controller 'total' => $total, ]); } + + public function analyticsComparison(Request $request) + { + $departmentId = $request->query('department_id'); + + $models = [ + 'ActivitiesAttended' => ActivitiesAttended::class, + 'ActivitiesOrganised' => ActivitiesOrganised::class, + 'BooksPublished' => BooksPublished::class, + 'ExternalEngagement' => ExternalEngagement::class, + 'IvOrganised' => IvOrganised::class, + 'OnlineCourse' => OnlineCourse::class, + 'Patent' => Patent::class, + 'Publication' => Publication::class, + ]; + + $data = []; + + foreach ($models as $label => $model) { + $count = $model::where('department_id', $departmentId)->count(); + $data[] = [ + 'label' => $label, + 'count' => $count, + ]; + $total = array_sum(array_column($data, 'count')); + + } + + return response()->json([ + 'labels' => array_column($data, 'label'), + 'values' => array_column($data, 'count'), + 'total' => $total + ]); + } + + public function analyticsContribution(Request $request) + { + $model = $request->query('model', 'all'); + + $models = [ + 'ActivitiesAttended' => ActivitiesAttended::class, + 'ActivitiesOrganised' => ActivitiesOrganised::class, + 'BooksPublished' => BooksPublished::class, + 'ExternalEngagement' => ExternalEngagement::class, + 'IvOrganised' => IvOrganised::class, + 'OnlineCourse' => OnlineCourse::class, + 'Patent' => Patent::class, + 'Publication' => Publication::class, + ]; + + $data = []; + + if ($model === 'all') { + $departments = Department::all(); + + foreach ($departments as $department) { + $count = 0; + foreach ($models as $modelClass) { + $count += $modelClass::where('department_id', $department->id)->count(); + } + $data[] = [ + 'label' => $department->name, + 'count' => $count, + ]; + $total = array_sum(array_column($data, 'count')); + } + } else { + $modelClass = $models[$model]; + $data = $modelClass::selectRaw('departments.name as label, COUNT(*) as count') + ->join('departments', 'department_id', '=', 'departments.id') + ->groupBy('departments.name') + ->get() + ->toArray(); + $total = array_sum(array_column($data, 'count')); + } + + return response()->json([ + 'labels' => array_column($data, 'label'), + 'values' => array_column($data, 'count'), + 'total' => $total + ]); + } } diff --git a/resources/views/admin/dashboard.blade.php b/resources/views/admin/dashboard.blade.php index 76c02d6..b8cd3df 100644 --- a/resources/views/admin/dashboard.blade.php +++ b/resources/views/admin/dashboard.blade.php @@ -18,39 +18,71 @@