diff --git a/app/Http/Controllers/Admin/AcademicClasses/MaterialController.php b/app/Http/Controllers/Admin/AcademicClasses/MaterialController.php index 740f16f..9cc4b4d 100644 --- a/app/Http/Controllers/Admin/AcademicClasses/MaterialController.php +++ b/app/Http/Controllers/Admin/AcademicClasses/MaterialController.php @@ -8,6 +8,7 @@ use App\Models\Material; use App\Services\Admin\AcademicClasses\MaterialService; use App\Services\Admin\Manage\CourseClass\CourseClassService; +use App\Services\Admin\Master\AcademicTermService; use Illuminate\Http\RedirectResponse; use Inertia\Inertia; use Inertia\Response; @@ -17,6 +18,7 @@ class MaterialController extends Controller public function __construct( private readonly MaterialService $service, private readonly CourseClassService $courseClassService, + private readonly AcademicTermService $academicTermService, ) {} public function index(PaginatedRequest $request): Response @@ -26,6 +28,7 @@ public function index(PaginatedRequest $request): Response $request->user(), ...$request->validatedWithDefaults(), courseClassId: $request->validated('course_class_id'), + academicTermId: $this->academicTermService->getActive()?->id, )), 'courseClasses' => $this->courseClassService->getAllForSelect($request->user()), 'filters' => $request->only(['course_class_id']), diff --git a/app/Services/Admin/AcademicClasses/MaterialService.php b/app/Services/Admin/AcademicClasses/MaterialService.php index 0c2057f..40e8988 100644 --- a/app/Services/Admin/AcademicClasses/MaterialService.php +++ b/app/Services/Admin/AcademicClasses/MaterialService.php @@ -17,7 +17,7 @@ public function __construct( private readonly NotificationService $notificationService, ) {} - public function paginated(User $user, int $perPage = 25, string $search = '', ?int $courseClassId = null): LengthAwarePaginator + public function paginated(User $user, int $perPage = 25, string $search = '', ?int $courseClassId = null, ?int $academicTermId = null): LengthAwarePaginator { return Material::query() ->with([ @@ -26,6 +26,7 @@ public function paginated(User $user, int $perPage = 25, string $search = '', ?i ]) ->when($search, fn ($q) => $q->where('title', 'like', "%{$search}%")) ->when($courseClassId, fn ($q) => $q->where('course_class_id', $courseClassId)) + ->when($academicTermId, fn ($q) => $q->whereHas('courseClass', fn ($q) => $q->where('academic_term_id', $academicTermId))) ->when($user->hasRole(UserRole::Dosen->value), fn ($q) => $q->whereHas('courseClass', fn ($q) => $q->where('lecturer_id', $user->lecturer?->id))) ->when($user->hasRole(UserRole::Mahasiswa->value), fn ($q) => $q->whereHas('courseClass', function ($q) use ($user) { $q->whereHas('registrations', function ($q) use ($user) {