. */ namespace SP\Modules\Api\Controllers\Client; use Exception; use League\Fractal\Resource\Item; use SP\Core\Events\Event; use SP\Core\Events\EventMessage; use SP\Domain\Api\Services\ApiResponse; use SP\Domain\Core\Acl\AclActionsInterface; use SP\Util\Util; /** * Class ViewController */ final class ViewController extends ClientBase { /** * viewAction */ public function viewAction(): void { try { $this->setupApi(AclActionsInterface::CLIENT_VIEW); $id = $this->apiService->getParamInt('id', true); $customFields = Util::boolval($this->apiService->getParamString('customFields')); $clientData = $this->clientService->getById($id); $this->eventDispatcher->notify('show.client', new Event($this)); $this->eventDispatcher->notify( 'show.client', new Event( $this, EventMessage::factory() ->addDescription(__u('Client displayed')) ->addDetail(__u('Name'), $clientData->getName()) ->addDetail('ID', $id) ) ); if ($customFields) { $this->apiService->requireMasterPass(); } $out = $this->fractal->createData(new Item($clientData, $this->clientAdapter)); if ($customFields) { $this->apiService->requireMasterPass(); $this->fractal->parseIncludes(['customFields']); } $this->returnResponse( ApiResponse::makeSuccess($out->toArray(), $id) ); } catch (Exception $e) { processException($e); $this->returnResponseException($e); } } }