. */ 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 EditController */ final class EditController extends ClientViewBase { use JsonTrait; /** * Edit action * * @param int $id * * @return ActionResponse * @throws ServiceException * @throws ConstraintException * @throws QueryException * @throws SPException * @throws NoSuchItemException */ #[Action(ResponseType::JSON)] public function editAction(int $id): ActionResponse { if (!$this->acl->checkUserAccess(AclActionsInterface::CLIENT_EDIT)) { return ActionResponse::error(__u('You don\'t have permission to do this operation')); } $this->view->assign('header', __('Edit Client')); $this->view->assign('isView', false); $this->view->assign('route', 'client/saveEdit/' . $id); $this->setViewData($id, false); $this->eventDispatcher->notify('show.client.edit', new Event($this)); return ActionResponse::ok('', ['html' => $this->render()]); } }