From 7353b4697594806ee99235e29d7e0a3013b3e6a9 Mon Sep 17 00:00:00 2001 From: Yoga Pangestu Date: Mon, 31 Aug 2026 22:46:53 +0700 Subject: [PATCH] feat: enhance paginated method to filter courses based on user roles --- app/Services/Admin/Master/CourseService.php | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/app/Services/Admin/Master/CourseService.php b/app/Services/Admin/Master/CourseService.php index 5abea5d..df7205e 100644 --- a/app/Services/Admin/Master/CourseService.php +++ b/app/Services/Admin/Master/CourseService.php @@ -26,12 +26,16 @@ public function getSemesterNumbers(): array public function paginated(int $perPage = 25, string $search = '', ?int $departmentId = null, ?int $semesterNumber = null): LengthAwarePaginator { + $user = auth()->user(); + return Course::query() ->select(['id', 'code', 'name', 'credits', 'department_id', 'semester_number']) ->with('department:id,name') ->when($search, fn ($q) => $q->where('name', 'like', "%{$search}%")->orWhere('code', 'like', "%{$search}%")) ->when($departmentId, fn ($q) => $q->where('department_id', $departmentId)) ->when($semesterNumber, fn ($q) => $q->where('semester_number', $semesterNumber)) + ->when($user->hasRole('mahasiswa'), fn ($q) => $q->where('department_id', $user->student?->department_id)) + ->when($user->hasRole('dosen'), fn ($q) => $q->whereIn('department_id', $user->lecturer?->departments()->pluck('departments.id') ?? [])) ->latest() ->paginate($perPage); }