request->getGet('order_by') ?? 'order'; $sort = strtolower($this->request->getGet('sort')) === 'desc' ? 'DESC' : 'ASC'; $page = (int) ($this->request->getGet('page') ?? 1); $limit = (int) ($this->request->getGet('limit') ?? 20); if (!in_array($orderBy, $allowedOrderFields)) { $orderBy = 'order'; } $builder = $slideshowModel->orderBy($orderBy, $sort)->where('deleted_at', null); if ($limit > 0) { $offset = ($page - 1) * $limit; $slides = $builder->findAll($limit, $offset); $total = $slideshowModel->where('deleted_at', null)->countAllResults(); } else { $slides = $builder->findAll(); $total = count($slides); } return $this->response->setJSON([ 'status' => 200, 'result' => $slides, 'pagination' => [ 'page' => $page, 'limit' => $limit, 'total' => $total ] ]); } }