getParams(); if (!empty($params['category_id'])) { $categoryService = new CategoryService(); $childNodeIds = $categoryService->getChildNodeIds($params['category_id']); $params['category_id'] = $childNodeIds; } $params['published'] = 1; $params['deleted'] = 0; $sort = $pagerQuery->getSort(); $page = $pagerQuery->getPage(); $limit = $pagerQuery->getLimit(); $courseRepo = new CourseRepo(); $pager = $courseRepo->paginate($params, $sort, $page, $limit); return $this->handleCourses($pager); } protected function handleCourses($pager) { if ($pager->total_items > 0) { $builder = new CourseListBuilder(); $pipeA = $pager->items->toArray(); $pipeB = $builder->handleCourses($pipeA); $pipeC = $builder->handleCategories($pipeB); $pager->items = $pipeC; } return $pager; } }