/** * @before _secure * @after _cleanUp */ public function categories($id = null) { $view = $this->getActionView(); $fields = ['_id', 'name']; $type = RequestMethods::type(); $org = $this->_org; $categories = Category::all(['org_id' => $org->_id], $fields); switch ($type) { case 'GET': $data = ['categories' => Category::objectArr($categories, $fields)]; $view->set('data', $data); break; case 'POST': $updated = Category::addNew($categories, $org); $data = ['categories' => Category::objectArr($updated, $fields)]; $view->set('data', $data); break; case 'DELETE': $cat = Category::first(['_id' => $id, 'org_id' => $org->_id]); if (!$id || !$cat) { return $this->failure('30'); } if (!$cat->inUse()) { $cat->delete(); $view->set('message', 'Category deleted!!'); } else { $view->set('message', 'Failed to delete category because it is in use'); } unset($categories[$id]); $data = ['categories' => Category::objectArr($categories, $fields)]; $view->set('data', $data); break; } }