/** * @return \Magento\Framework\Controller\Result\Forward|void */ public function execute() { $app = $this->application->getApp(); $merchant = $app['merchant.provider']->getMerchant(); $uuid = $this->_request->getParam('uuid'); $event = new CustomerMigrateEvent($merchant, $uuid); $content = ''; try { $app['dispatcher']->dispatch(CustomerMigrationSubscriber::CUSTOMER_MIGRATE_POPUP, $event); if (!$event->isSuccessful()) { throw new GenericException(Router::processError($event)); } $content = $event->getContent(); } catch (\Exception $e) { // log error var_dump($e->getMessage()); } $pageId = $this->_objectManager->get('Magento\\Framework\\App\\Config\\ScopeConfigInterface')->getValue(\Magento\Cms\Helper\Page::XML_PATH_HOME_PAGE, \Magento\Store\Model\ScopeInterface::SCOPE_STORE); $page = $this->_objectManager->get(Page::class)->prepareResultPage($this, $pageId); if (!$page) { $forward = $this->resultForwardFactory->create(); $forward->forward('defaultIndex'); return $forward; } // XML injection doesn't work to add this javascript as we're overriding the page completely $js = '<script type="text/javascript"> (function() { popupContinue = function (event) { event.style.display = \'none\'; var loader = event.nextElementSibling; loader.style.display = \'block\'; loader.nextElementSibling.style.display = \'none\'; window.location.replace(window.location.origin + window.location.pathname + \'/migrate\'); }; popupClose = function (event) { window.location.replace(window.location.origin); }; openTerms = function (event) { window.open(event.href, \'_blank\'); }; openPrivacy = function (event) { window.open(event.href, \'_blank\'); }; (function () { // make sure our popup is on top or hierarchy content = document.getElementById(\'xly\'); document.body.insertBefore(content, document.body.children[0]); })(); })(); </script>'; $page->renderResult($this->getResponse()); $this->getResponse()->appendBody($js); $this->getResponse()->appendBody($content); return; }
public function execute() { $uuid = $this->_request->getParam('uuid'); $exists = false; try { $event = new CustomerMigrateEvent($this->merchant, $uuid); $this->application['dispatcher']->dispatch(CustomerMigrationSubscriber::CUSTOMER_MIGRATE_DATA, $event); $content = $event->getContent(); if (!$event->isSuccessful()) { if (!empty($json['code']) && $json['code'] == 'USER_ALREADY_MIGRATED') { $exists = true; throw new UserExistsException(); } throw new GenericException(Router::processError($event)); } // if customer exists $email = $content['migration']['data']['email']; if (true == false) { $exists = true; $event = new CustomerMigrateEvent($this->merchant, $uuid, CustomerMigrateEvent::EXISTING_CUSTOMER); } else { $customer = $content['migration']['data']['customerData']; $magentoCustomer = $this->customerFactory->create(); $magentoCustomer->setEmail($email)->setFirstname()->setLastname()->setPassword(md5('xly' . microtime()))->save(); foreach ($customer['addresses'] as $index => $address) { $magentoAddress = $this->addressFactory->create(); $safelyGet = function ($key) use($address) { if (!empty($address[$key])) { return $address[$key]; } return ''; }; $magentoAddress->setCustomer($magentoCustomer)->setFirstname($address['firstName'])->setLastname($address['lastName'])->setCompanyName($safelyGet('company'))->setStreet([$safelyGet('address1'), $safelyGet('address2')])->setCity($safelyGet('city'))->setRegion($safelyGet('stateProvince'))->setPostcode($safelyGet('zip'))->setCountry($this->countryProvider->getIso2($address['country']))->save(); if ($customer['billingAddress'] == $index) { $magentoCustomer->setDefaultBilling($magentoAddress->getId()); } if ($customer['shippingAddress'] == $index) { $magentoCustomer->setDefaultShipping($magentoAddress->getId()); } } $magentoCustomer->sendPasswordResetConfirmationEmail(); // log user in $this->customerSession->loginById($magentoCustomer->getId()); } // add item to cart if (!empty($content['cart']['productId'])) { $this->cart->addProduct($content['cart']['productId']); $this->cart->save(); } // add coupon to cart if (!empty($content['cart']['couponCode'])) { $this->cart->getQuote()->setCouponCode($content['cart']['couponCode']); $this->cart->saveQuote(); } $this->application['dispatcher']->dispatch(CustomerMigrationSubscriber::CUSTOMER_MIGRATE_SUCCESS, $event); } catch (GenericException $e) { // log error } if ($exists) { // show exists popup } }