protected function execute(\Symfony\Component\Console\Input\InputInterface $input, \Symfony\Component\Console\Output\OutputInterface $output) { $def = $this->manTrans->begin(); try { foreach ($this->DEFAULT_DWNL_TREE as $custId => $parentId) { $first = 'User' . $custId; $last = 'Last'; $email = "customer_{$custId}@test.com"; if ($custId != $parentId) { /* save parent ID to registry */ $referralCode = $this->mapCustomerMageIdByIndex[$parentId]; $this->toolReferral->replaceCodeInRegistry($referralCode); } /** @var \Magento\Customer\Api\Data\CustomerInterface $customer */ $customer = $this->_manObj->create(\Magento\Customer\Api\Data\CustomerInterface::class); $customer->setEmail($email); $customer->setFirstname($first); $customer->setLastname($last); /* MOBI-427: change group ID for retail customers */ if (in_array($custId, $this->GROUP_RETAIL)) { $customer->setGroupId(BusinessCodesManager::M_CUST_GROUP_RETAIL); } /** @var \Magento\Customer\Api\Data\CustomerInterface $saved */ $saved = $this->repoCustomer->save($customer, $this->DEFAULT_PASSWORD_HASH); $this->mapCustomerMageIdByIndex[$custId] = $saved->getId(); $this->mapCustomerIndexByMageId[$saved->getId()] = $custId; } /* MOBI-426 : rename customer groups according to Generic App scheme. */ $this->subCustomerGroups->renameGroups(); $this->manTrans->commit($def); } finally { // transaction will be rolled back if commit is not done (otherwise - do nothing) $this->manTrans->end($def); } }
/** * Analyze referral code and get parent for the customer. * * @param int $customerId * @param int $parentId * @return int */ public function getReferredParentId($customerId, $parentId) { /* use customer ID as parent ID if parent ID is missed */ $result = $parentId ? $parentId : $customerId; $code = $this->_toolReferral->getReferralCode(); if ($code) { $parentDo = $this->_repoCustomer->getByReferralCode($code); if ($parentDo) { $result = $parentDo->getCustomerId(); } } return $result; }
/** * Extract referral code from GET-variable or cookie and save it into registry. * * @param \Magento\Framework\App\FrontControllerInterface $subject * @param \Magento\Framework\App\RequestInterface $request */ public function beforeDispatch(\Magento\Framework\App\FrontControllerInterface $subject, \Magento\Framework\App\RequestInterface $request) { $reqCode = $request->getParam(static::REQ_REFERRAL); $this->_toolReferralCode->processHttpRequest($reqCode); }