diff --git a/app/Http/Requests/PaginatedRequest.php b/app/Http/Requests/PaginatedRequest.php index 58b9852..33d386f 100644 --- a/app/Http/Requests/PaginatedRequest.php +++ b/app/Http/Requests/PaginatedRequest.php @@ -20,8 +20,6 @@ public function rules(): array return [ 'per_page' => ['nullable', 'integer', 'in:25,50,100,999999'], 'search' => ['nullable', 'string', 'max:255'], - 'sort' => ['nullable', 'string'], - 'direction' => ['nullable', 'string', 'in:asc,desc'], 'highlight' => ['nullable', 'integer'], 'gender' => ['nullable', 'string', Rule::in(Gender::values())], 'department_id' => ['nullable', 'integer'], @@ -43,8 +41,6 @@ public function validatedWithDefaults(): array return [ 'perPage' => $validated['per_page'] ?? 25, 'search' => $validated['search'] ?? '', - 'sort' => $validated['sort'] ?? 'created_at', - 'direction' => $validated['direction'] ?? 'desc', ]; } } diff --git a/app/Services/Admin/AcademicClasses/AssignmentService.php b/app/Services/Admin/AcademicClasses/AssignmentService.php index 146eed2..cb9e5c5 100644 --- a/app/Services/Admin/AcademicClasses/AssignmentService.php +++ b/app/Services/Admin/AcademicClasses/AssignmentService.php @@ -8,7 +8,7 @@ class AssignmentService { - public function paginated(int $perPage = 25, string $search = '', string $sort = 'created_at', string $direction = 'desc', ?int $courseClassId = null): LengthAwarePaginator + public function paginated(int $perPage = 25, string $search = '', ?int $courseClassId = null): LengthAwarePaginator { return Assignment::query() ->select(['id', 'course_class_id', 'title', 'description', 'deadline']) @@ -16,7 +16,7 @@ public function paginated(int $perPage = 25, string $search = '', string $sort = ->with('courseClass.course:id,code,name') ->when($search, fn ($q) => $q->where('title', 'like', "%{$search}%")) ->when($courseClassId, fn ($q) => $q->where('course_class_id', $courseClassId)) - ->orderBy($sort, $direction) + ->latest() ->paginate($perPage); } diff --git a/app/Services/Admin/AcademicClasses/CourseRegistrationService.php b/app/Services/Admin/AcademicClasses/CourseRegistrationService.php index f4ebe07..4405f2f 100644 --- a/app/Services/Admin/AcademicClasses/CourseRegistrationService.php +++ b/app/Services/Admin/AcademicClasses/CourseRegistrationService.php @@ -9,7 +9,7 @@ class CourseRegistrationService { - public function paginated(int $perPage = 25, string $search = '', string $sort = 'created_at', string $direction = 'desc', ?string $status = null, ?int $academicTermId = null): LengthAwarePaginator + public function paginated(int $perPage = 25, string $search = '', ?string $status = null, ?int $academicTermId = null): LengthAwarePaginator { return CourseRegistration::query() ->select(['id', 'student_id', 'academic_term_id', 'course_class_id', 'status', 'approved_by', 'created_at']) @@ -24,7 +24,7 @@ public function paginated(int $perPage = 25, string $search = '', string $sort = ->orWhereHas('user.profile', fn ($q) => $q->where('full_name', 'like', "%{$search}%")))) ->when($status, fn ($q) => $q->where('status', $status)) ->when($academicTermId, fn ($q) => $q->where('academic_term_id', $academicTermId)) - ->orderBy($sort, $direction) + ->latest() ->paginate($perPage); } diff --git a/app/Services/Admin/AcademicClasses/MaterialService.php b/app/Services/Admin/AcademicClasses/MaterialService.php index e9eea42..42aa64e 100644 --- a/app/Services/Admin/AcademicClasses/MaterialService.php +++ b/app/Services/Admin/AcademicClasses/MaterialService.php @@ -8,14 +8,14 @@ class MaterialService { - public function paginated(int $perPage = 25, string $search = '', string $sort = 'created_at', string $direction = 'desc', ?int $courseClassId = null): LengthAwarePaginator + public function paginated(int $perPage = 25, string $search = '', ?int $courseClassId = null): LengthAwarePaginator { return Material::query() ->select(['id', 'course_class_id', 'title', 'description', 'meeting_number']) ->with('courseClass.course:id,code,name') ->when($search, fn ($q) => $q->where('title', 'like', "%{$search}%")) ->when($courseClassId, fn ($q) => $q->where('course_class_id', $courseClassId)) - ->orderBy($sort, $direction) + ->latest() ->paginate($perPage); } diff --git a/app/Services/Admin/Announcements/AnnouncementService.php b/app/Services/Admin/Announcements/AnnouncementService.php index a16a7a5..8ee6c0f 100644 --- a/app/Services/Admin/Announcements/AnnouncementService.php +++ b/app/Services/Admin/Announcements/AnnouncementService.php @@ -7,14 +7,14 @@ class AnnouncementService { - public function paginated(int $perPage = 25, string $search = '', string $sort = 'created_at', string $direction = 'desc', ?int $departmentId = null): LengthAwarePaginator + public function paginated(int $perPage = 25, string $search = '', ?int $departmentId = null): LengthAwarePaginator { return Announcement::query() ->select(['id', 'title', 'content', 'department_id', 'enrollment_year', 'created_by', 'created_at']) ->with(['department:id,name', 'creator.profile']) ->when($search, fn ($q) => $q->where('title', 'like', "%{$search}%")) ->when($departmentId, fn ($q) => $q->where('department_id', $departmentId)) - ->orderBy($sort, $direction) + ->latest() ->paginate($perPage); } diff --git a/app/Services/Admin/FeedbackService.php b/app/Services/Admin/FeedbackService.php index 1bf2942..ed383e8 100644 --- a/app/Services/Admin/FeedbackService.php +++ b/app/Services/Admin/FeedbackService.php @@ -40,14 +40,14 @@ public function __construct() $this->sanitizer = new HtmlSanitizer($config); } - public function paginated(User $user, int $perPage = 25, string $search = '', string $sort = 'created_at', string $direction = 'desc', ?string $type = null, ?string $status = null): LengthAwarePaginator + public function paginated(User $user, int $perPage = 25, string $search = '', ?string $type = null, ?string $status = null): LengthAwarePaginator { return Feedback::query() ->where('user_id', $user->id) ->when($search, fn ($q) => $q->where('subject', 'like', "%{$search}%")) ->when($type, fn ($q) => $q->where('type', $type)) ->when($status, fn ($q) => $q->where('status', $status)) - ->orderBy($sort, $direction) + ->latest() ->paginate($perPage); } diff --git a/app/Services/Admin/Finances/TuitionInvoiceService.php b/app/Services/Admin/Finances/TuitionInvoiceService.php index aabfd3e..cde7f14 100644 --- a/app/Services/Admin/Finances/TuitionInvoiceService.php +++ b/app/Services/Admin/Finances/TuitionInvoiceService.php @@ -7,7 +7,7 @@ class TuitionInvoiceService { - public function paginated(int $perPage = 25, string $search = '', string $sort = 'created_at', string $direction = 'desc', ?int $academicTermId = null): LengthAwarePaginator + public function paginated(int $perPage = 25, string $search = '', ?int $academicTermId = null): LengthAwarePaginator { return TuitionInvoice::query() ->select(['id', 'student_id', 'academic_term_id', 'amount_due', 'due_date']) @@ -17,7 +17,7 @@ public function paginated(int $perPage = 25, string $search = '', string $sort = ->when($search, fn ($q) => $q->whereHas('student', fn ($q) => $q->where('student_number', 'like', "%{$search}%") ->orWhereHas('user.profile', fn ($q) => $q->where('full_name', 'like', "%{$search}%")))) ->when($academicTermId, fn ($q) => $q->where('academic_term_id', $academicTermId)) - ->orderBy($sort, $direction) + ->latest() ->paginate($perPage); } diff --git a/app/Services/Admin/Manage/CourseClassService.php b/app/Services/Admin/Manage/CourseClassService.php index 90b66b0..f96111e 100644 --- a/app/Services/Admin/Manage/CourseClassService.php +++ b/app/Services/Admin/Manage/CourseClassService.php @@ -15,7 +15,7 @@ public function getAllForSelect(): Collection ->get(); } - public function paginated(int $perPage = 25, string $search = '', string $sort = 'created_at', string $direction = 'desc', ?int $academicTermId = null, ?string $method = null): LengthAwarePaginator + public function paginated(int $perPage = 25, string $search = '', ?int $academicTermId = null, ?string $method = null): LengthAwarePaginator { return CourseClass::query() ->select(['id', 'course_id', 'lecturer_id', 'academic_term_id', 'class_name', 'method']) @@ -25,7 +25,7 @@ public function paginated(int $perPage = 25, string $search = '', string $sort = ->orWhereHas('course', fn ($q) => $q->where('name', 'like', "%{$search}%")->orWhere('code', 'like', "%{$search}%"))) ->when($academicTermId, fn ($q) => $q->where('academic_term_id', $academicTermId)) ->when($method, fn ($q) => $q->where('method', $method)) - ->orderBy($sort, $direction) + ->latest() ->paginate($perPage); } diff --git a/app/Services/Admin/Manage/CourseService.php b/app/Services/Admin/Manage/CourseService.php index 1fb477d..c0dd828 100644 --- a/app/Services/Admin/Manage/CourseService.php +++ b/app/Services/Admin/Manage/CourseService.php @@ -13,14 +13,14 @@ public function getAllForSelect(): Collection return Course::select(['id', 'code', 'name', 'department_id'])->get(); } - public function paginated(int $perPage = 25, string $search = '', string $sort = 'created_at', string $direction = 'desc', ?int $departmentId = null): LengthAwarePaginator + public function paginated(int $perPage = 25, string $search = '', ?int $departmentId = null): LengthAwarePaginator { 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)) - ->orderBy($sort, $direction) + ->latest() ->paginate($perPage); } diff --git a/app/Services/Admin/Master/AcademicTermService.php b/app/Services/Admin/Master/AcademicTermService.php index bdfab6e..f2eb514 100644 --- a/app/Services/Admin/Master/AcademicTermService.php +++ b/app/Services/Admin/Master/AcademicTermService.php @@ -14,14 +14,14 @@ public function getAllForSelect(): Collection return AcademicTerm::select(['id', 'name', 'semester', 'start_date', 'end_date', 'is_active'])->latest()->get(); } - public function paginated(int $perPage = 25, string $search = '', string $sort = 'created_at', string $direction = 'desc', ?string $semester = null, ?bool $isActive = null): LengthAwarePaginator + public function paginated(int $perPage = 25, string $search = '', ?string $semester = null, ?bool $isActive = null): LengthAwarePaginator { return AcademicTerm::query() ->select(['id', 'name', 'semester', 'start_date', 'end_date', 'is_active']) ->when($search, fn ($q) => $q->where('name', 'like', "%{$search}%")) ->when($semester, fn ($q) => $q->where('semester', $semester)) ->when($isActive !== null, fn ($q) => $q->where('is_active', $isActive)) - ->orderBy($sort, $direction) + ->latest() ->paginate($perPage); } diff --git a/app/Services/Admin/Master/DepartmentService.php b/app/Services/Admin/Master/DepartmentService.php index 5676801..3f71ed8 100644 --- a/app/Services/Admin/Master/DepartmentService.php +++ b/app/Services/Admin/Master/DepartmentService.php @@ -13,12 +13,12 @@ public function getAllForSelect(): Collection return Department::select(['id', 'code', 'name'])->get(); } - public function paginated(int $perPage = 25, string $search = '', string $sort = 'created_at', string $direction = 'desc'): LengthAwarePaginator + public function paginated(int $perPage = 25, string $search = ''): LengthAwarePaginator { return Department::query() ->select(['id', 'code', 'name', 'degree_level']) ->when($search, fn ($q) => $q->where('name', 'like', "%{$search}%")->orWhere('code', 'like', "%{$search}%")) - ->orderBy($sort, $direction) + ->latest() ->paginate($perPage); } diff --git a/app/Services/Admin/Services/AcademicAdvisingLogService.php b/app/Services/Admin/Services/AcademicAdvisingLogService.php index ea677b9..c91a7df 100644 --- a/app/Services/Admin/Services/AcademicAdvisingLogService.php +++ b/app/Services/Admin/Services/AcademicAdvisingLogService.php @@ -7,7 +7,7 @@ class AcademicAdvisingLogService { - public function paginated(int $perPage = 25, string $search = '', string $sort = 'created_at', string $direction = 'desc', ?int $lecturerId = null): LengthAwarePaginator + public function paginated(int $perPage = 25, string $search = '', ?int $lecturerId = null): LengthAwarePaginator { return AcademicAdvisingLog::query() ->select(['id', 'student_id', 'lecturer_id', 'topic', 'notes', 'session_date', 'created_at']) @@ -20,7 +20,7 @@ public function paginated(int $perPage = 25, string $search = '', string $sort = ->orWhereHas('student', fn ($q) => $q->where('student_number', 'like', "%{$search}%") ->orWhereHas('user.profile', fn ($q) => $q->where('full_name', 'like', "%{$search}%")))) ->when($lecturerId, fn ($q) => $q->where('lecturer_id', $lecturerId)) - ->orderBy($sort, $direction) + ->latest() ->paginate($perPage); } diff --git a/app/Services/Admin/Services/LetterRequestService.php b/app/Services/Admin/Services/LetterRequestService.php index f40b37d..9ed5990 100644 --- a/app/Services/Admin/Services/LetterRequestService.php +++ b/app/Services/Admin/Services/LetterRequestService.php @@ -9,7 +9,7 @@ class LetterRequestService { - public function paginated(int $perPage = 25, string $search = '', string $sort = 'created_at', string $direction = 'desc', ?string $status = null): LengthAwarePaginator + public function paginated(int $perPage = 25, string $search = '', ?string $status = null): LengthAwarePaginator { return LetterRequest::query() ->select(['id', 'student_id', 'letter_type', 'purpose', 'status', 'processed_by', 'submitted_at', 'completed_at']) @@ -18,7 +18,7 @@ public function paginated(int $perPage = 25, string $search = '', string $sort = ->orWhereHas('student', fn ($q) => $q->where('student_number', 'like', "%{$search}%") ->orWhereHas('user.profile', fn ($q) => $q->where('full_name', 'like', "%{$search}%")))) ->when($status, fn ($q) => $q->where('status', $status)) - ->orderBy($sort, $direction) + ->latest() ->paginate($perPage); } diff --git a/app/Services/Admin/Users/AdministratorService.php b/app/Services/Admin/Users/AdministratorService.php index aa4b525..4945940 100644 --- a/app/Services/Admin/Users/AdministratorService.php +++ b/app/Services/Admin/Users/AdministratorService.php @@ -9,7 +9,7 @@ class AdministratorService { - public function paginated(int $perPage = 25, string $search = '', string $sort = 'created_at', string $direction = 'desc', ?string $gender = null): LengthAwarePaginator + public function paginated(int $perPage = 25, string $search = '', ?string $gender = null): LengthAwarePaginator { return User::with(['profile', 'roles']) ->whereHas('roles', fn ($q) => $q->whereIn('name', ['staff-admin', 'staff-keuangan'])) @@ -19,7 +19,7 @@ public function paginated(int $perPage = 25, string $search = '', string $sort = ->orWhereHas('profile', fn ($q) => $q->where('full_name', 'like', "%{$search}%")); })) ->when($gender, fn ($q) => $q->whereHas('profile', fn ($q) => $q->where('gender', $gender))) - ->orderBy($sort, $direction) + ->latest() ->paginate($perPage); } diff --git a/app/Services/Admin/Users/LecturerService.php b/app/Services/Admin/Users/LecturerService.php index 0ae4d20..e026147 100644 --- a/app/Services/Admin/Users/LecturerService.php +++ b/app/Services/Admin/Users/LecturerService.php @@ -17,10 +17,10 @@ public function getAllForSelect(): Collection return Lecturer::with('user.profile')->get(); } - public function paginated(int $perPage = 25, string $search = '', string $sort = 'created_at', string $direction = 'desc', ?string $gender = null, ?int $departmentId = null): LengthAwarePaginator + public function paginated(int $perPage = 25, string $search = '', ?string $gender = null, ?int $departmentId = null): LengthAwarePaginator { return $this->filteredQuery($search, $gender, $departmentId) - ->orderBy($sort, $direction) + ->latest() ->paginate($perPage); } diff --git a/app/Services/Admin/Users/StudentService.php b/app/Services/Admin/Users/StudentService.php index 3c3f543..fa22701 100644 --- a/app/Services/Admin/Users/StudentService.php +++ b/app/Services/Admin/Users/StudentService.php @@ -17,10 +17,10 @@ public function getAllForSelect(): Collection return Student::with(['user.profile', 'department'])->get(); } - public function paginated(int $perPage = 25, string $search = '', string $sort = 'created_at', string $direction = 'desc', ?string $gender = null, ?int $departmentId = null, ?string $status = null): LengthAwarePaginator + public function paginated(int $perPage = 25, string $search = '', ?string $gender = null, ?int $departmentId = null, ?string $status = null): LengthAwarePaginator { return $this->filteredQuery($search, $gender, $departmentId, $status) - ->orderBy($sort, $direction) + ->latest() ->paginate($perPage); }