get('search')); $academicYearId = $request->get('academic_year_id'); $classId = $request->get('class_id'); $status = $request->get('status'); $students = Student::query() ->with(['academicYear', 'classRoom', 'department']) ->when($search !== '', function ($query) use ($search) { $query->where(function ($subQuery) use ($search) { $subQuery->where('full_name', 'like', "%{$search}%") ->orWhere('student_number', 'like', "%{$search}%") ->orWhere('nisn', 'like', "%{$search}%"); }); }) ->when($academicYearId, fn ($query) => $query->where('academic_year_id', $academicYearId)) ->when($classId, fn ($query) => $query->where('class_id', $classId)) ->when($status, fn ($query) => $query->where('self_service_status', $status)) ->latest() ->paginate(15) ->withQueryString(); $summaryBaseQuery = Student::query(); return view('student-self-service.index', [ 'students' => $students, 'search' => $search, 'filters' => [ 'academic_year_id' => $academicYearId, 'class_id' => $classId, 'status' => $status, ], 'academicYears' => AcademicYear::orderBy('name')->pluck('name', 'id'), 'classes' => SchoolClass::orderBy('name')->pluck('name', 'id'), 'statuses' => [ 'not_started' => 'Belum Mulai', 'draft' => 'Draft', 'submitted' => 'Sudah Dikirim', ], 'summary' => [ 'total' => (clone $summaryBaseQuery)->count(), 'not_started' => (clone $summaryBaseQuery)->where('self_service_status', 'not_started')->count(), 'draft' => (clone $summaryBaseQuery)->where('self_service_status', 'draft')->count(), 'submitted' => (clone $summaryBaseQuery)->where('self_service_status', 'submitted')->count(), ], ]); } }