feat: simplify pagination methods by removing sort and direction parameters
Some checks failed
tests / ci (pull_request) Has been cancelled
Some checks failed
tests / ci (pull_request) Has been cancelled
This commit is contained in:
parent
b76d82c2f0
commit
62ac0a4c1d
@ -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',
|
||||
];
|
||||
}
|
||||
}
|
||||
|
||||
@ -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);
|
||||
}
|
||||
|
||||
|
||||
@ -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);
|
||||
}
|
||||
|
||||
|
||||
@ -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);
|
||||
}
|
||||
|
||||
|
||||
@ -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);
|
||||
}
|
||||
|
||||
|
||||
@ -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);
|
||||
}
|
||||
|
||||
|
||||
@ -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);
|
||||
}
|
||||
|
||||
|
||||
@ -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);
|
||||
}
|
||||
|
||||
|
||||
@ -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);
|
||||
}
|
||||
|
||||
|
||||
@ -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);
|
||||
}
|
||||
|
||||
|
||||
@ -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);
|
||||
}
|
||||
|
||||
|
||||
@ -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);
|
||||
}
|
||||
|
||||
|
||||
@ -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);
|
||||
}
|
||||
|
||||
|
||||
@ -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);
|
||||
}
|
||||
|
||||
|
||||
@ -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);
|
||||
}
|
||||
|
||||
|
||||
@ -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);
|
||||
}
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user