From e2d6c7c5302e5f2a1f028c577bfcbe10159a53c7 Mon Sep 17 00:00:00 2001 From: Hubert Krzysztofiak <62691459+HerbertIV@users.noreply.github.com> Date: Fri, 16 Dec 2022 11:58:12 +0100 Subject: [PATCH] Add params paginate mode to user webinars list (#53) Co-authored-by: Hubert Krzysztofiak --- src/Http/Controllers/Swagger/WebinarAPISwagger.php | 10 ++++++++++ src/Http/Controllers/WebinarAPIController.php | 12 +++++++++--- 2 files changed, 19 insertions(+), 3 deletions(-) diff --git a/src/Http/Controllers/Swagger/WebinarAPISwagger.php b/src/Http/Controllers/Swagger/WebinarAPISwagger.php index 7abc642..9a1170d 100644 --- a/src/Http/Controllers/Swagger/WebinarAPISwagger.php +++ b/src/Http/Controllers/Swagger/WebinarAPISwagger.php @@ -225,6 +225,16 @@ public function show(int $id): JsonResponse; * ), * ), * @OA\Parameter( + * name="paginate", + * description="If true, list convert to paginate", + * required=false, + * in="query", + * @OA\Schema( + * type="boolean", + * default=false, + * ), + * ), + * @OA\Parameter( * name="page", * description="Pagination Page Number", * required=false, diff --git a/src/Http/Controllers/WebinarAPIController.php b/src/Http/Controllers/WebinarAPIController.php index d53a801..88b5851 100644 --- a/src/Http/Controllers/WebinarAPIController.php +++ b/src/Http/Controllers/WebinarAPIController.php @@ -47,9 +47,15 @@ public function show(int $id): JsonResponse public function forCurrentUser(ListWebinarsRequest $listWebinarsRequest): JsonResponse { $search = $listWebinarsRequest->except(['limit', 'skip', 'order', 'order_by']); - $webinars = $this->webinarServiceContract - ->getWebinarsListForCurrentUser($search) - ->get(); + $webinars = $this->webinarServiceContract->getWebinarsListForCurrentUser($search); + if ($listWebinarsRequest->input('paginate', false)) { + $webinars = $webinars->paginate( + $listWebinarsRequest->get('per_page') ?? + config('escolalms_webinar.perPage', ConstantEnum::PER_PAGE) + ); + } else { + $webinars = $webinars->get(); + } return $this->sendResponseForResource( $this->webinarServiceContract->extendResponse(WebinarSimpleResource::collection($webinars), true),