From 905a869ff82308753bb37127692a1b7bdd1af631 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rub=C3=A9n=20D?= Date: Sun, 26 Jun 2022 11:53:51 +0200 Subject: [PATCH] chore: Migrate API user group controllers. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Rubén D --- .../UserGroup/CreateController.php | 85 +++++++ .../UserGroup/DeleteController.php | 72 ++++++ .../Controllers/UserGroup/EditController.php | 88 +++++++ .../UserGroup/SearchController.php | 73 ++++++ .../Controllers/UserGroup/UserGroupBase.php | 58 +++++ .../Controllers/UserGroup/ViewController.php | 71 ++++++ .../api/Controllers/UserGroupController.php | 237 ------------------ 7 files changed, 447 insertions(+), 237 deletions(-) create mode 100644 app/modules/api/Controllers/UserGroup/CreateController.php create mode 100644 app/modules/api/Controllers/UserGroup/DeleteController.php create mode 100644 app/modules/api/Controllers/UserGroup/EditController.php create mode 100644 app/modules/api/Controllers/UserGroup/SearchController.php create mode 100644 app/modules/api/Controllers/UserGroup/UserGroupBase.php create mode 100644 app/modules/api/Controllers/UserGroup/ViewController.php delete mode 100644 app/modules/api/Controllers/UserGroupController.php diff --git a/app/modules/api/Controllers/UserGroup/CreateController.php b/app/modules/api/Controllers/UserGroup/CreateController.php new file mode 100644 index 00000000..49abce21 --- /dev/null +++ b/app/modules/api/Controllers/UserGroup/CreateController.php @@ -0,0 +1,85 @@ +. + */ + +namespace SP\Modules\Api\Controllers\UserGroup; + + +use Exception; +use SP\Core\Acl\ActionsInterface; +use SP\Core\Events\Event; +use SP\Core\Events\EventMessage; +use SP\DataModel\UserGroupData; +use SP\Domain\Api\Services\ApiResponse; + +/** + * Class CreateController + */ +final class CreateController extends UserGroupBase +{ + /** + * createAction + */ + public function createAction(): void + { + try { + $this->setupApi(ActionsInterface::GROUP_CREATE); + + $userGroupData = $this->buildUserGroupData(); + + $id = $this->userGroupService->create($userGroupData); + + $userGroupData->setId($id); + + $this->eventDispatcher->notifyEvent( + 'create.userGroup', + new Event( + $this, EventMessage::factory() + ->addDescription(__u('Group added')) + ->addDetail(__u('Name'), $userGroupData->getName()) + ->addDetail('ID', $id) + ) + ); + + $this->returnResponse(ApiResponse::makeSuccess($userGroupData, $id, __('Group added'))); + } catch (Exception $e) { + processException($e); + + $this->returnResponseException($e); + } + } + + /** + * @return \SP\DataModel\UserGroupData + * @throws \SP\Domain\Common\Services\ServiceException + */ + private function buildUserGroupData(): UserGroupData + { + $userGroupData = new UserGroupData(); + $userGroupData->setName($this->apiService->getParamString('name', true)); + $userGroupData->setDescription($this->apiService->getParamString('description')); + $userGroupData->setUsers($this->apiService->getParamArray('usersId')); + + return $userGroupData; + } +} \ No newline at end of file diff --git a/app/modules/api/Controllers/UserGroup/DeleteController.php b/app/modules/api/Controllers/UserGroup/DeleteController.php new file mode 100644 index 00000000..e6d4aced --- /dev/null +++ b/app/modules/api/Controllers/UserGroup/DeleteController.php @@ -0,0 +1,72 @@ +. + */ + +namespace SP\Modules\Api\Controllers\UserGroup; + + +use Exception; +use SP\Core\Acl\ActionsInterface; +use SP\Core\Events\Event; +use SP\Core\Events\EventMessage; +use SP\Domain\Api\Services\ApiResponse; + +/** + * Class DeleteController + */ +final class DeleteController extends UserGroupBase +{ + /** + * deleteAction + */ + public function deleteAction(): void + { + try { + $this->setupApi(ActionsInterface::GROUP_DELETE); + + $id = $this->apiService->getParamInt('id', true); + + $userGroupData = $this->userGroupService->getById($id); + + $this->userGroupService->delete($id); + + $this->eventDispatcher->notifyEvent( + 'delete.userGroup', + new Event( + $this, + EventMessage::factory() + ->addDescription(__u('Group deleted')) + ->addDetail(__u('Name'), $userGroupData->getName()) + ->addDetail('ID', $id) + ->addExtra('userGroupId', $id) + ) + ); + + $this->returnResponse(ApiResponse::makeSuccess($userGroupData, $id, __('Group deleted'))); + } catch (Exception $e) { + processException($e); + + $this->returnResponseException($e); + } + } +} \ No newline at end of file diff --git a/app/modules/api/Controllers/UserGroup/EditController.php b/app/modules/api/Controllers/UserGroup/EditController.php new file mode 100644 index 00000000..26b68ad1 --- /dev/null +++ b/app/modules/api/Controllers/UserGroup/EditController.php @@ -0,0 +1,88 @@ +. + */ + +namespace SP\Modules\Api\Controllers\UserGroup; + + +use Exception; +use SP\Core\Acl\ActionsInterface; +use SP\Core\Events\Event; +use SP\Core\Events\EventMessage; +use SP\DataModel\UserGroupData; +use SP\Domain\Api\Services\ApiResponse; + +/** + * Class EditController + */ +final class EditController extends UserGroupBase +{ + /** + * editAction + */ + public function editAction(): void + { + try { + $this->setupApi(ActionsInterface::GROUP_EDIT); + + $userGroupData = $this->buildUserGroupData(); + + $this->userGroupService->update($userGroupData); + + $this->eventDispatcher->notifyEvent( + 'edit.userGroup', + new Event( + $this, + EventMessage::factory() + ->addDescription(__u('Group updated')) + ->addDetail(__u('Name'), $userGroupData->getName()) + ->addDetail('ID', $userGroupData->getId()) + ->addExtra('userGroupId', $userGroupData->getId()) + ) + ); + + $this->returnResponse( + ApiResponse::makeSuccess($userGroupData, $userGroupData->getId(), __('Group updated')) + ); + } catch (Exception $e) { + processException($e); + + $this->returnResponseException($e); + } + } + + /** + * @return \SP\DataModel\UserGroupData + * @throws \SP\Domain\Common\Services\ServiceException + */ + private function buildUserGroupData(): UserGroupData + { + $userGroupData = new UserGroupData(); + $userGroupData->setId($this->apiService->getParamInt('id', true)); + $userGroupData->setName($this->apiService->getParamString('name', true)); + $userGroupData->setDescription($this->apiService->getParamString('description')); + $userGroupData->setUsers($this->apiService->getParamArray('usersId')); + + return $userGroupData; + } +} \ No newline at end of file diff --git a/app/modules/api/Controllers/UserGroup/SearchController.php b/app/modules/api/Controllers/UserGroup/SearchController.php new file mode 100644 index 00000000..f6f64bab --- /dev/null +++ b/app/modules/api/Controllers/UserGroup/SearchController.php @@ -0,0 +1,73 @@ +. + */ + +namespace SP\Modules\Api\Controllers\UserGroup; + + +use Exception; +use SP\Core\Acl\ActionsInterface; +use SP\Core\Events\Event; +use SP\DataModel\ItemSearchData; +use SP\Domain\Api\Services\ApiResponse; + +/** + * Class SearchController + */ +final class SearchController extends UserGroupBase +{ + /** + * searchAction + */ + public function searchAction(): void + { + try { + $this->setupApi(ActionsInterface::GROUP_SEARCH); + + $itemSearchData = $this->buildSearchData(); + + $this->eventDispatcher->notifyEvent('search.userGroup', new Event($this)); + + $this->returnResponse( + ApiResponse::makeSuccess($this->userGroupService->search($itemSearchData)->getDataAsArray()) + ); + } catch (Exception $e) { + processException($e); + + $this->returnResponseException($e); + } + } + + /** + * @return \SP\DataModel\ItemSearchData + * @throws \SP\Domain\Common\Services\ServiceException + */ + private function buildSearchData(): ItemSearchData + { + $itemSearchData = new ItemSearchData(); + $itemSearchData->setSeachString($this->apiService->getParamString('text')); + $itemSearchData->setLimitCount($this->apiService->getParamInt('count', false, self::SEARCH_COUNT_ITEMS)); + + return $itemSearchData; + } +} \ No newline at end of file diff --git a/app/modules/api/Controllers/UserGroup/UserGroupBase.php b/app/modules/api/Controllers/UserGroup/UserGroupBase.php new file mode 100644 index 00000000..f26fa860 --- /dev/null +++ b/app/modules/api/Controllers/UserGroup/UserGroupBase.php @@ -0,0 +1,58 @@ +. + */ + +namespace SP\Modules\Api\Controllers\UserGroup; + +use Klein\Klein; +use SP\Core\Acl\Acl; +use SP\Core\Application; +use SP\Domain\Api\ApiServiceInterface; +use SP\Domain\User\UserGroupServiceInterface; +use SP\Modules\Api\Controllers\ControllerBase; +use SP\Modules\Api\Controllers\Help\TagHelp; + +/** + * Class UserGroupBase + */ +abstract class UserGroupBase extends ControllerBase +{ + protected UserGroupServiceInterface $userGroupService; + + /** + * @throws \SP\Core\Exceptions\InvalidClassException + */ + public function __construct( + Application $application, + Klein $router, + ApiServiceInterface $apiService, + Acl $acl, + UserGroupServiceInterface $groupService + ) { + parent::__construct($application, $router, $apiService, $acl); + + $this->userGroupService = $groupService; + + $this->apiService->setHelpClass(TagHelp::class); + } +} \ No newline at end of file diff --git a/app/modules/api/Controllers/UserGroup/ViewController.php b/app/modules/api/Controllers/UserGroup/ViewController.php new file mode 100644 index 00000000..897e2b58 --- /dev/null +++ b/app/modules/api/Controllers/UserGroup/ViewController.php @@ -0,0 +1,71 @@ +. + */ + +namespace SP\Modules\Api\Controllers\UserGroup; + +use Exception; +use SP\Core\Acl\ActionsInterface; +use SP\Core\Events\Event; +use SP\Core\Events\EventMessage; +use SP\Domain\Api\Services\ApiResponse; + +/** + * Class ViewController + * + * @package SP\Modules\Api\Controllers + */ +final class ViewController extends UserGroupBase +{ + /** + * viewAction + */ + public function viewAction(): void + { + try { + $this->setupApi(ActionsInterface::GROUP_VIEW); + + $id = $this->apiService->getParamInt('id', true); + $userGroupData = $this->userGroupService->getById($id); + + $this->eventDispatcher->notifyEvent( + 'show.userGroup', + new Event( + $this, + EventMessage::factory() + ->addDescription(__u('Group viewed')) + ->addDetail(__u('Name'), $userGroupData->getName()) + ->addDetail('ID', $id) + ) + ); + + $this->returnResponse( + ApiResponse::makeSuccess($userGroupData, $id) + ); + } catch (Exception $e) { + processException($e); + + $this->returnResponseException($e); + } + } +} \ No newline at end of file diff --git a/app/modules/api/Controllers/UserGroupController.php b/app/modules/api/Controllers/UserGroupController.php deleted file mode 100644 index 62875a31..00000000 --- a/app/modules/api/Controllers/UserGroupController.php +++ /dev/null @@ -1,237 +0,0 @@ -. - */ - -namespace SP\Modules\Api\Controllers; - -use Exception; -use SP\Core\Acl\ActionsInterface; -use SP\Core\Events\Event; -use SP\Core\Events\EventMessage; -use SP\DataModel\ItemSearchData; -use SP\DataModel\UserGroupData; -use SP\Domain\Api\Services\ApiResponse; -use SP\Domain\User\Services\UserGroupService; -use SP\Modules\Api\Controllers\Help\TagHelp; - -/** - * Class UserGroupController - * - * @package SP\Modules\Api\Controllers - */ -final class UserGroupController extends ControllerBase -{ - private ?UserGroupService $userGroupService = null; - - /** - * viewAction - */ - public function viewAction(): void - { - try { - $this->setupApi(ActionsInterface::GROUP_VIEW); - - $id = $this->apiService->getParamInt('id', true); - $userGroupData = $this->userGroupService->getById($id); - - $this->eventDispatcher->notifyEvent( - 'show.userGroup', - new Event( - $this, - EventMessage::factory() - ->addDescription(__u('Group viewed')) - ->addDetail(__u('Name'), $userGroupData->getName()) - ->addDetail('ID', $id) - ) - ); - - $this->returnResponse( - ApiResponse::makeSuccess($userGroupData, $id) - ); - } catch (Exception $e) { - processException($e); - - $this->returnResponseException($e); - } - } - - /** - * createAction - */ - public function createAction(): void - { - try { - $this->setupApi(ActionsInterface::GROUP_CREATE); - - $userGroupData = new UserGroupData(); - $userGroupData->setName($this->apiService->getParamString('name', true)); - $userGroupData->setDescription($this->apiService->getParamString('description')); - $userGroupData->setUsers($this->apiService->getParamArray('usersId')); - - $id = $this->userGroupService->create($userGroupData); - - $userGroupData->setId($id); - - $this->eventDispatcher->notifyEvent( - 'create.userGroup', - new Event($this, EventMessage::factory() - ->addDescription(__u('Group added')) - ->addDetail(__u('Name'), $userGroupData->getName()) - ->addDetail('ID', $id) - ) - ); - - $this->returnResponse( - ApiResponse::makeSuccess( - $userGroupData, - $id, - __('Group added') - ) - ); - } catch (Exception $e) { - processException($e); - - $this->returnResponseException($e); - } - } - - /** - * editAction - */ - public function editAction(): void - { - try { - $this->setupApi(ActionsInterface::GROUP_EDIT); - - $userGroupData = new UserGroupData(); - $userGroupData->setId($this->apiService->getParamInt('id', true)); - $userGroupData->setName($this->apiService->getParamString('name', true)); - $userGroupData->setDescription($this->apiService->getParamString('description')); - $userGroupData->setUsers($this->apiService->getParamArray('usersId')); - - $this->userGroupService->update($userGroupData); - - $this->eventDispatcher->notifyEvent( - 'edit.userGroup', - new Event( - $this, - EventMessage::factory() - ->addDescription(__u('Group updated')) - ->addDetail(__u('Name'), $userGroupData->getName()) - ->addDetail('ID', $userGroupData->getId()) - ->addExtra('userGroupId', $userGroupData->getId()) - ) - ); - - $this->returnResponse( - ApiResponse::makeSuccess( - $userGroupData, - $userGroupData->getId(), - __('Group updated') - ) - ); - } catch (Exception $e) { - processException($e); - - $this->returnResponseException($e); - } - } - - /** - * deleteAction - */ - public function deleteAction(): void - { - try { - $this->setupApi(ActionsInterface::GROUP_DELETE); - - $id = $this->apiService->getParamInt('id', true); - - $userGroupData = $this->userGroupService->getById($id); - - $this->userGroupService->delete($id); - - $this->eventDispatcher->notifyEvent( - 'delete.userGroup', - new Event( - $this, - EventMessage::factory() - ->addDescription(__u('Group deleted')) - ->addDetail(__u('Name'), $userGroupData->getName()) - ->addDetail('ID', $id) - ->addExtra('userGroupId', $id) - ) - ); - - $this->returnResponse( - ApiResponse::makeSuccess( - $userGroupData, - $id, - __('Group deleted') - ) - ); - } catch (Exception $e) { - processException($e); - - $this->returnResponseException($e); - } - } - - /** - * searchAction - */ - public function searchAction(): void - { - try { - $this->setupApi(ActionsInterface::GROUP_SEARCH); - - $itemSearchData = new ItemSearchData(); - $itemSearchData->setSeachString($this->apiService->getParamString('text')); - $itemSearchData->setLimitCount($this->apiService->getParamInt('count', false, self::SEARCH_COUNT_ITEMS)); - - $this->eventDispatcher->notifyEvent( - 'search.userGroup', - new Event($this) - ); - - $this->returnResponse( - ApiResponse::makeSuccess( - $this->userGroupService->search($itemSearchData)->getDataAsArray() - ) - ); - } catch (Exception $e) { - processException($e); - - $this->returnResponseException($e); - } - } - - /** - * @throws \SP\Core\Exceptions\InvalidClassException - */ - protected function initialize(): void - { - $this->userGroupService = $this->dic->get(UserGroupService::class); - $this->apiService->setHelpClass(TagHelp::class); - } -} \ No newline at end of file