. */ namespace SP\Modules\Web\Controllers\Client; use SP\Core\Events\Event; use SP\Domain\Common\Attributes\Action; use SP\Domain\Common\Dtos\ActionResponse; use SP\Domain\Common\Enums\ResponseType; use SP\Domain\Common\Services\ServiceException; use SP\Domain\Core\Acl\AclActionsInterface; use SP\Domain\Core\Exceptions\ConstraintException; use SP\Domain\Core\Exceptions\QueryException; use SP\Domain\Core\Exceptions\SPException; use SP\Infrastructure\Common\Repositories\NoSuchItemException; use SP\Modules\Web\Controllers\Traits\JsonTrait; use function SP\__; use function SP\__u; /** * Class ViewController * * @package SP\Modules\Web\Controllers */ final class ViewController extends ClientViewBase { use JsonTrait; /** * View action * * @param int $id * * @return ActionResponse * @throws ServiceException * @throws ConstraintException * @throws QueryException * @throws SPException * @throws NoSuchItemException */ #[Action(ResponseType::JSON)] public function viewAction(int $id): ActionResponse { if (!$this->acl->checkUserAccess(AclActionsInterface::CLIENT_VIEW)) { return ActionResponse::error(__u('You don\'t have permission to do this operation')); } $this->view->assign('header', __('View Client')); $this->view->assign('isView', true); $this->setViewData($id); $this->eventDispatcher->notify('show.client', new Event($this)); return ActionResponse::ok('', ['html' => $this->render()]); } }