dataObjectProcessor = $dataObjectProcessor; parent::__construct( $context, $coreRegistry, $groupRepository, $groupDataFactory, $resultForwardFactory, $resultPageFactory ); } /** * Store Customer Group Data to session * * @param array $customerGroupData * @return void */ protected function storeCustomerGroupDataToSession($customerGroupData) { if (array_key_exists('code', $customerGroupData)) { $customerGroupData['customer_group_code'] = $customerGroupData['code']; unset($customerGroupData['code']); } $this->_getSession()->setCustomerGroupData($customerGroupData); } /** * Create or save customer group. * * @return \Magento\Backend\Model\View\Result\Redirect|\Magento\Backend\Model\View\Result\Forward */ public function execute() { $taxClass = (int)$this->getRequest()->getParam('tax_class'); /** @var \Magento\Customer\Api\Data\GroupInterface $customerGroup */ $customerGroup = null; if ($taxClass) { $id = $this->getRequest()->getParam('id'); $resultRedirect = $this->resultRedirectFactory->create(); try { $customerGroupCode = (string)$this->getRequest()->getParam('code'); if ($id !== null) { $customerGroup = $this->groupRepository->getById((int)$id); $customerGroupCode = $customerGroupCode ?: $customerGroup->getCode(); } else { $customerGroup = $this->groupDataFactory->create(); } $customerGroup->setCode(!empty($customerGroupCode) ? $customerGroupCode : null); $customerGroup->setTaxClassId($taxClass); $this->groupRepository->save($customerGroup); $this->messageManager->addSuccess(__('You saved the customer group.')); $resultRedirect->setPath('customer/group'); } catch (\Exception $e) { $this->messageManager->addError($e->getMessage()); if ($customerGroup != null) { $this->storeCustomerGroupDataToSession( $this->dataObjectProcessor->buildOutputDataArray( $customerGroup, \Magento\Customer\Api\Data\GroupInterface::class ) ); } $resultRedirect->setPath('customer/group/edit', ['id' => $id]); } return $resultRedirect; } else { return $this->resultForwardFactory->create()->forward('new'); } } }