findCourseOrFail($id); $pagerQuery = new PagerQuery(); $params = $pagerQuery->getParams(); $params['course_id'] = $course->id; $sort = $pagerQuery->getSort(); $page = $pagerQuery->getPage(); $limit = $pagerQuery->getLimit(); $learningRepo = new LearningRepo(); $pager = $learningRepo->paginate($params, $sort, $page, $limit); return $this->handleLearnings($pager); } protected function findCourseOrFail($id) { $validator = new CourseValidator(); return $validator->checkCourse($id); } protected function handleLearnings($pager) { if ($pager->total_items > 0) { $builder = new LearningListBuilder(); $pipeA = $pager->items->toArray(); $pipeB = $builder->handleCourses($pipeA); $pipeC = $builder->handleChapters($pipeB); $pipeD = $builder->handleUsers($pipeC); $pipeE = $builder->objects($pipeD); $pager->items = $pipeE; } return $pager; } }