. */ namespace SP\Modules\Api\Controllers\Account; use Exception; use League\Fractal\Resource\Item; use SP\Core\Acl\ActionsInterface; use SP\Core\Events\Event; use SP\Core\Events\EventMessage; use SP\Domain\Account\Dtos\AccountEnrichedDto; use SP\Domain\Api\Services\ApiResponse; use SP\Util\Util; /** * Class ViewController */ final class ViewController extends AccountBase { /** * viewAction */ public function viewAction(): void { try { $this->setupApi(ActionsInterface::ACCOUNT_VIEW); $id = $this->apiService->getParamInt('id', true); $customFields = Util::boolval($this->apiService->getParamString('customFields')); if ($customFields) { $this->apiService->requireMasterPass(); } $accountDetails = $this->accountService->getById($id)->getAccountVData(); $this->accountService->incrementViewCounter($id); $accountResponse = new AccountEnrichedDto($accountDetails); $this->accountService ->withUsersById($accountResponse) ->withUserGroupsById($accountResponse) ->withTagsById($accountResponse); $this->eventDispatcher->notifyEvent( 'show.account', new Event( $this, EventMessage::factory() ->addDescription(__u('Account displayed')) ->addDetail(__u('Name'), $accountDetails->getName()) ->addDetail(__u('Client'), $accountDetails->getClientName()) ->addDetail('ID', $id) ) ); $out = $this->fractal->createData(new Item($accountResponse, $this->accountAdapter)); if ($customFields) { $this->fractal->parseIncludes(['customFields']); } $this->returnResponse(ApiResponse::makeSuccess($out->toArray(), $id)); } catch (Exception $e) { $this->returnResponseException($e); processException($e); } } }