/** * Execute method. * * @param \Magento\Framework\Event\Observer $observer * * @return $this */ public function execute(\Magento\Framework\Event\Observer $observer) { $order = $observer->getEvent()->getOrder(); $email = $order->getCustomerEmail(); $website = $this->storeManager->getWebsite($order->getWebsiteId()); $storeName = $this->storeManager->getStore($order->getStoreId())->getName(); //if api is not enabled if (!$this->helper->isEnabled($website)) { return $this; } //automation enrolment for order if ($order->getCustomerIsGuest()) { // guest to automation mapped $programType = 'XML_PATH_CONNECTOR_AUTOMATION_STUDIO_GUEST_ORDER'; $automationType = \Dotdigitalgroup\Email\Model\Sync\Automation::AUTOMATION_TYPE_NEW_GUEST_ORDER; } else { // customer to automation mapped $programType = 'XML_PATH_CONNECTOR_AUTOMATION_STUDIO_ORDER'; $automationType = \Dotdigitalgroup\Email\Model\Sync\Automation::AUTOMATION_TYPE_NEW_ORDER; } $programId = $this->helper->getAutomationIdByType($programType, $order->getWebsiteId()); //the program is not mapped if (!$programId) { return $this; } try { $this->automationFactory->create()->setEmail($email)->setAutomationType($automationType)->setEnrolmentStatus(\Dotdigitalgroup\Email\Model\Sync\Automation::AUTOMATION_STATUS_PENDING)->setTypeId($order->getId())->setWebsiteId($website->getId())->setStoreName($storeName)->setProgramId($programId)->save(); } catch (\Exception $e) { $this->helper->debug((string) $e, []); } return $this; }
/** * If it's configured to capture on shipment - do this. * * @param \Magento\Framework\Event\Observer $observer * * @return $this */ public function execute(\Magento\Framework\Event\Observer $observer) { $dataObject = $observer->getEvent()->getDataObject(); if ($dataObject->getCustomerId() && $dataObject->getStatusId() == \Magento\Review\Model\Review::STATUS_APPROVED) { $customerId = $dataObject->getCustomerId(); $this->helper->setConnectorContactToReImport($customerId); //save review info in the table $this->registerReview($dataObject); $store = $this->storeManager->getStore($dataObject->getStoreId()); $storeName = $store->getName(); $website = $this->storeManager->getStore($store)->getWebsite(); $customer = $this->customerFactory->create()->load($customerId); //if api is not enabled if (!$this->helper->isEnabled($website)) { return $this; } $programId = $this->helper->getWebsiteConfig('connector_automation/visitor_automation/review_automation'); if ($programId) { $automation = $this->automationFactory->create(); $automation->setEmail($customer->getEmail())->setAutomationType(\Dotdigitalgroup\Email\Model\Sync\Automation::AUTOMATION_TYPE_NEW_REVIEW)->setEnrolmentStatus(\Dotdigitalgroup\Email\Model\Sync\Automation::AUTOMATION_STATUS_PENDING)->setTypeId($dataObject->getReviewId())->setWebsiteId($website->getId())->setStoreName($storeName)->setProgramId($programId); $automation->save(); } } return $this; }
/** * Register subscriber to automation. * * @param $email * @param $subscriber * @param $websiteId * * @throws \Magento\Framework\Exception\LocalizedException */ public function addSubscriberToAutomation($email, $subscriber, $websiteId) { $storeId = $subscriber->getStoreId(); $store = $this->storeManager->getStore($storeId); $programId = $this->helper->getWebsiteConfig('connector_automation/visitor_automation/subscriber_automation', $websiteId); //not mapped ignore if (!$programId) { return; } try { //@codingStandardsIgnoreStart //check the subscriber alredy exists $enrolmentCollection = $this->automationFactory->create()->getCollection()->addFieldToFilter('email', $email)->addFieldToFilter('automation_type', \Dotdigitalgroup\Email\Model\Sync\Automation::AUTOMATION_TYPE_NEW_SUBSCRIBER)->addFieldToFilter('website_id', $websiteId)->setPageSize(1); $enrolment = $enrolmentCollection->getFirstItem(); //@codingStandardsIgnoreEnd //add new subscriber to automation if (!$enrolment->getId()) { //save subscriber to the queue $automation = $this->automationFactory->create()->setEmail($email)->setAutomationType(\Dotdigitalgroup\Email\Model\Sync\Automation::AUTOMATION_TYPE_NEW_SUBSCRIBER)->setEnrolmentStatus(\Dotdigitalgroup\Email\Model\Sync\Automation::AUTOMATION_STATUS_PENDING)->setTypeId($subscriber->getId())->setWebsiteId($websiteId)->setStoreName($store->getName())->setProgramId($programId); $automation->save(); } } catch (\Exception $e) { throw new \Magento\Framework\Exception\LocalizedException(__($e->getMessage())); } }
/** * Automation new wishlist program. * * @param array $wishlist * * @return $this * * @throws \Magento\Framework\Exception\LocalizedException */ public function registerWishlist($wishlist) { try { $emailWishlist = $this->wishlistFactory->create(); $customer = $this->customerFactory->create(); //if wishlist exist not to save again if (!$emailWishlist->getWishlist($wishlist['wishlist_id'])) { $customer->load($wishlist['customer_id']); $email = $customer->getEmail(); $wishlistId = $wishlist['wishlist_id']; $websiteId = $customer->getWebsiteId(); $emailWishlist->setWishlistId($wishlistId)->setCustomerId($wishlist['customer_id'])->setStoreId($customer->getStoreId())->save(); $store = $this->storeManager->getStore($customer->getStoreId()); $storeName = $store->getName(); //if api is not enabled if (!$this->helper->isEnabled($websiteId)) { return $this; } $programId = $this->helper->getWebsiteConfig('connector_automation/visitor_automation/wishlist_automation', $websiteId); //wishlist program mapped if ($programId) { $automation = $this->automationFactory->create(); //save automation type $automation->setEmail($email)->setAutomationType(\Dotdigitalgroup\Email\Model\Sync\Automation::AUTOMATION_TYPE_NEW_WISHLIST)->setEnrolmentStatus(\Dotdigitalgroup\Email\Model\Sync\Automation::AUTOMATION_STATUS_PENDING)->setTypeId($wishlistId)->setWebsiteId($websiteId)->setStoreName($storeName)->setProgramId($programId); $automation->save(); } } } catch (\Exception $e) { $this->helper->error((string) $e, []); } }
/** * save enrolment to queue for cron automation enrolment * * @param $data */ public function doAutomationEnrolment($data) { //the program is not mapped if (!$data['programId']) { $this->helper->log('automation type : ' . $data['automationType'] . ' program id not found'); } else { try { $this->automationFactory->create()->setEmail($data['email'])->setAutomationType($data['automationType'])->setEnrolmentStatus(\Dotdigitalgroup\Email\Model\Sync\Automation::AUTOMATION_STATUS_PENDING)->setTypeId($data['order_id'])->setWebsiteId($data['website_id'])->setStoreName($data['store_name'])->setProgramId($data['programId'])->save(); } catch (\Exception $e) { $this->helper->debug((string) $e, []); } } }
/** * @return \Magento\Backend\Model\View\Result\Redirect */ public function execute() { $searchIds = $this->getRequest()->getParam('selected'); if (!is_array($searchIds)) { $this->messageManager->addErrorMessage(__('Please select automation.')); } else { try { //@codingStandardsIgnoreStart foreach ($searchIds as $searchId) { $model = $this->automation->create()->setId($searchId); $model->delete(); } //@codingStandardsIgnoreEnd $this->messageManager->addSuccessMessage(__('Total of %1 record(s) were deleted.', count($searchIds))); } catch (\Exception $e) { $this->messageManager->addErrorMessage($e->getMessage()); } } /** @var \Magento\Backend\Model\View\Result\Redirect $resultRedirect */ $resultRedirect = $this->resultFactory->create(ResultFactory::TYPE_REDIRECT); $resultRedirect->setPath('*/*/'); return $resultRedirect; }