diff --git a/Controller/ApiController.php b/Controller/ApiController.php index 18871bb..b9268b5 100755 --- a/Controller/ApiController.php +++ b/Controller/ApiController.php @@ -133,6 +133,83 @@ final class ApiController extends Controller return []; } + /** + * Api method to get a doc + * + * @param RequestAbstract $request Request + * @param ResponseAbstract $response Response + * @param mixed $data Generic data + * + * @return void + * + * @api + * + * @since 1.0.0 + */ + public function apiWikiDocGet(RequestAbstract $request, ResponseAbstract $response, $data = null) : void + { + $doc = WikiDocMapper::get((int) $request->getData('id')); + $this->fillJsonResponse($request, $response, NotificationLevel::OK, 'Doc', 'Doc successfully returned', $doc); + } + + /** + * Api method to create doc + * + * @param RequestAbstract $request Request + * @param ResponseAbstract $response Response + * @param mixed $data Generic data + * + * @return void + * + * @api + * + * @since 1.0.0 + */ + public function apiWikiDocUpdate(RequestAbstract $request, ResponseAbstract $response, $data = null) : void + { + $old = clone WikiDocMapper::get((int) $request->getData('id')); + $new = $this->updateDocFromRequest($request); + $this->updateModel($request->getHeader()->getAccount(), $old, $new, WikiDocMapper::class, 'doc', $request->getOrigin()); + $this->fillJsonResponse($request, $response, NotificationLevel::OK, 'Doc', 'Doc successfully updated', $new); + } + + /** + * Method to update doc from request. + * + * @param RequestAbstract $request Request + * + * @return WikiDoc + * + * @since 1.0.0 + */ + private function updateDocFromRequest(RequestAbstract $request) : WikiDoc + { + $doc = WikiDocMapper::get((int) $request->getData('id')); + $doc->setName((string) ($request->getData('title') ?? $doc->getName())); + + return $doc; + } + + /** + * Api method to delete doc + * + * @param RequestAbstract $request Request + * @param ResponseAbstract $response Response + * @param mixed $data Generic data + * + * @return void + * + * @api + * + * @since 1.0.0 + */ + public function apiWikiDocDelete(RequestAbstract $request, ResponseAbstract $response, $data = null) : void + { + $doc = WikiDocMapper::get((int) $request->getData('id')); + $this->deleteModel($request->getHeader()->getAccount(), $doc, WikiDocMapper::class, 'doc', $request->getOrigin()); + $this->fillJsonResponse($request, $response, NotificationLevel::OK, 'Doc', 'Doc successfully deleted', $doc); + } + /** * Api method to create a wiki category * @@ -202,4 +279,220 @@ final class ApiController extends Controller return []; } + + /** + * Api method to get a category + * + * @param RequestAbstract $request Request + * @param ResponseAbstract $response Response + * @param mixed $data Generic data + * + * @return void + * + * @api + * + * @since 1.0.0 + */ + public function apiWikiCategoryGet(RequestAbstract $request, ResponseAbstract $response, $data = null) : void + { + $category = WikiCategoryMapper::get((int) $request->getData('id')); + $this->fillJsonResponse($request, $response, NotificationLevel::OK, 'Category', 'Category successfully returned', $category); + } + + /** + * Api method to create category + * + * @param RequestAbstract $request Request + * @param ResponseAbstract $response Response + * @param mixed $data Generic data + * + * @return void + * + * @api + * + * @since 1.0.0 + */ + public function apiWikiCategoryUpdate(RequestAbstract $request, ResponseAbstract $response, $data = null) : void + { + $old = clone WikiCategoryMapper::get((int) $request->getData('id')); + $new = $this->updateCategoryFromRequest($request); + $this->updateModel($request->getHeader()->getAccount(), $old, $new, WikiCategoryMapper::class, 'category', $request->getOrigin()); + $this->fillJsonResponse($request, $response, NotificationLevel::OK, 'Category', 'Category successfully updated', $new); + } + + /** + * Method to update category from request. + * + * @param RequestAbstract $request Request + * + * @return WikiCategory + * + * @since 1.0.0 + */ + private function updateCategoryFromRequest(RequestAbstract $request) : WikiCategory + { + $category = WikiCategoryMapper::get((int) $request->getData('id')); + $category->setName((string) ($request->getData('title') ?? $category->getName())); + + return $category; + } + + /** + * Api method to delete category + * + * @param RequestAbstract $request Request + * @param ResponseAbstract $response Response + * @param mixed $data Generic data + * + * @return void + * + * @api + * + * @since 1.0.0 + */ + public function apiWikiCategoryDelete(RequestAbstract $request, ResponseAbstract $response, $data = null) : void + { + $category = WikiCategoryMapper::get((int) $request->getData('id')); + $this->deleteModel($request->getHeader()->getAccount(), $category, WikiCategoryMapper::class, 'category', $request->getOrigin()); + $this->fillJsonResponse($request, $response, NotificationLevel::OK, 'Category', 'Category successfully deleted', $category); + } + + /** + * Api method to create a wiki app + * + * @param RequestAbstract $request Request + * @param ResponseAbstract $response Response + * @param mixed $data Generic data + * + * @return void + * + * @api + * + * @since 1.0.0 + */ + public function apiWikiAppCreate(RequestAbstract $request, ResponseAbstract $response, $data = null) : void + { + if (!empty($val = $this->validateWikiAppCreate($request))) { + $response->set($request->getUri()->__toString(), new FormValidation($val)); + + return; + } + + $app = $this->createWikiAppFromRequest($request); + $this->createModel($request->getHeader()->getAccount(), $app, WikiAppMapper::class, 'app', $request->getOrigin()); + $this->fillJsonResponse($request, $response, NotificationLevel::OK, 'App', 'App successfully created.', $app); + } + + /** + * Method to create a wiki app from request. + * + * @param RequestAbstract $request Request + * + * @return WikiApp + * + * @since 1.0.0 + */ + public function createWikiAppFromRequest(RequestAbstract $request) : WikiApp + { + $app = new WikiApp(); + $app->setName((string) $request->getData('name')); + + return $app; + } + + /** + * Method to validate wiki app creation from request + * + * @param RequestAbstract $request Request + * + * @return array + * + * @since 1.0.0 + */ + private function validateWikiAppCreate(RequestAbstract $request) : array + { + $val = []; + if (($val['name'] = empty($request->getData('name')))) { + return $val; + } + + return []; + } + + /** + * Api method to get a app + * + * @param RequestAbstract $request Request + * @param ResponseAbstract $response Response + * @param mixed $data Generic data + * + * @return void + * + * @api + * + * @since 1.0.0 + */ + public function apiWikiAppGet(RequestAbstract $request, ResponseAbstract $response, $data = null) : void + { + $app = WikiAppMapper::get((int) $request->getData('id')); + $this->fillJsonResponse($request, $response, NotificationLevel::OK, 'App', 'App successfully returned', $app); + } + + /** + * Api method to create app + * + * @param RequestAbstract $request Request + * @param ResponseAbstract $response Response + * @param mixed $data Generic data + * + * @return void + * + * @api + * + * @since 1.0.0 + */ + public function apiWikiAppUpdate(RequestAbstract $request, ResponseAbstract $response, $data = null) : void + { + $old = clone WikiAppMapper::get((int) $request->getData('id')); + $new = $this->updateAppFromRequest($request); + $this->updateModel($request->getHeader()->getAccount(), $old, $new, WikiAppMapper::class, 'app', $request->getOrigin()); + $this->fillJsonResponse($request, $response, NotificationLevel::OK, 'App', 'App successfully updated', $new); + } + + /** + * Method to update app from request. + * + * @param RequestAbstract $request Request + * + * @return WikiApp + * + * @since 1.0.0 + */ + private function updateAppFromRequest(RequestAbstract $request) : WikiApp + { + $app = WikiAppMapper::get((int) $request->getData('id')); + $app->setName((string) ($request->getData('title') ?? $app->getName())); + + return $app; + } + + /** + * Api method to delete app + * + * @param RequestAbstract $request Request + * @param ResponseAbstract $response Response + * @param mixed $data Generic data + * + * @return void + * + * @api + * + * @since 1.0.0 + */ + public function apiWikiAppDelete(RequestAbstract $request, ResponseAbstract $response, $data = null) : void + { + $app = WikiAppMapper::get((int) $request->getData('id')); + $this->deleteModel($request->getHeader()->getAccount(), $app, WikiAppMapper::class, 'app', $request->getOrigin()); + $this->fillJsonResponse($request, $response, NotificationLevel::OK, 'App', 'App successfully deleted', $app); + } }