/** * Send customer email * * @return bool */ public function send() { if (is_null($this->_website) || is_null($this->_customer)) { return false; } if ($this->_type == 'price' && count($this->_priceProducts) == 0 || $this->_type == 'stock' && count($this->_stockProducts) == 0) { return false; } if (!$this->_website->getDefaultGroup() || !$this->_website->getDefaultGroup()->getDefaultStore()) { return false; } $store = $this->_website->getDefaultStore(); $storeId = $store->getId(); if ($this->_type == 'price' && !$this->_scopeConfig->getValue(self::XML_PATH_EMAIL_PRICE_TEMPLATE, \Magento\Store\Model\ScopeInterface::SCOPE_STORE, $storeId)) { return false; } elseif ($this->_type == 'stock' && !$this->_scopeConfig->getValue(self::XML_PATH_EMAIL_STOCK_TEMPLATE, \Magento\Store\Model\ScopeInterface::SCOPE_STORE, $storeId)) { return false; } if ($this->_type != 'price' && $this->_type != 'stock') { return false; } $initialEnvironmentInfo = $this->_appEmulation->startEnvironmentEmulation($storeId); if ($this->_type == 'price') { $this->_getPriceBlock()->setStore($store)->reset(); foreach ($this->_priceProducts as $product) { $product->setCustomerGroupId($this->_customer->getGroupId()); $this->_getPriceBlock()->addProduct($product); } $block = $this->_getPriceBlock(); $templateId = $this->_scopeConfig->getValue(self::XML_PATH_EMAIL_PRICE_TEMPLATE, \Magento\Store\Model\ScopeInterface::SCOPE_STORE, $storeId); } else { $this->_getStockBlock()->setStore($store)->reset(); foreach ($this->_stockProducts as $product) { $product->setCustomerGroupId($this->_customer->getGroupId()); $this->_getStockBlock()->addProduct($product); } $block = $this->_getStockBlock(); $templateId = $this->_scopeConfig->getValue(self::XML_PATH_EMAIL_STOCK_TEMPLATE, \Magento\Store\Model\ScopeInterface::SCOPE_STORE, $storeId); } $alertGrid = $this->_appState->emulateAreaCode(\Magento\Framework\App\Area::AREA_FRONTEND, array($block, 'toHtml')); $this->_appEmulation->stopEnvironmentEmulation($initialEnvironmentInfo); $transport = $this->_transportBuilder->setTemplateIdentifier($templateId)->setTemplateOptions(array('area' => \Magento\Framework\App\Area::AREA_FRONTEND, 'store' => $storeId))->setTemplateVars(array('customerName' => $this->_customerHelper->getCustomerName($this->_customer), 'alertGrid' => $alertGrid))->setFrom($this->_scopeConfig->getValue(self::XML_PATH_EMAIL_IDENTITY, \Magento\Store\Model\ScopeInterface::SCOPE_STORE, $storeId))->addTo($this->_customer->getEmail(), $this->_customerHelper->getCustomerName($this->_customer))->getTransport(); $transport->sendMessage(); return true; }
/** * Load subscriber by customer * * @param \Magento\Customer\Service\V1\Data\Customer $customer * @return array */ public function loadByCustomerData(\Magento\Customer\Service\V1\Data\Customer $customer) { $select = $this->_read->select()->from($this->getMainTable())->where('customer_id=:customer_id'); $result = $this->_read->fetchRow($select, array('customer_id' => $customer->getId())); if ($result) { return $result; } $select = $this->_read->select()->from($this->getMainTable())->where('subscriber_email=:subscriber_email'); $result = $this->_read->fetchRow($select, array('subscriber_email' => $customer->getEmail())); if ($result) { return $result; } return array(); }