. */ 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->getByIdEnriched($id)->getAccountVData(); $this->accountService->incrementViewCounter($id); $accountEnrichedDto = new AccountEnrichedDto($accountDetails); $accountEnrichedDto = $this->accountService->withUsers($accountEnrichedDto); $accountEnrichedDto = $this->accountService->withUserGroups($accountEnrichedDto); $accountEnrichedDto = $this->accountService->withTags($accountEnrichedDto); $this->eventDispatcher->notify( '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($accountEnrichedDto, $this->accountAdapter)); if ($customFields) { $this->fractal->parseIncludes(['customFields']); } $this->returnResponse(ApiResponse::makeSuccess($out->toArray(), $id)); } catch (Exception $e) { $this->returnResponseException($e); processException($e); } } }