Initial commit: Vendor Sales Report Magento 2 module
This commit is contained in:
116
Model/EmailSender.php
Normal file
116
Model/EmailSender.php
Normal file
@@ -0,0 +1,116 @@
|
||||
<?php
|
||||
namespace Shopkeeper\VendorSalesReport\Model;
|
||||
|
||||
use Magento\Framework\Mail\Template\TransportBuilder;
|
||||
use Magento\Framework\Translate\Inline\StateInterface;
|
||||
use Magento\Store\Model\StoreManagerInterface;
|
||||
use Shopkeeper\VendorSalesReport\Helper\Data as ConfigHelper;
|
||||
use Psr\Log\LoggerInterface;
|
||||
|
||||
class EmailSender
|
||||
{
|
||||
/**
|
||||
* @var TransportBuilder
|
||||
*/
|
||||
protected $transportBuilder;
|
||||
|
||||
/**
|
||||
* @var StateInterface
|
||||
*/
|
||||
protected $inlineTranslation;
|
||||
|
||||
/**
|
||||
* @var StoreManagerInterface
|
||||
*/
|
||||
protected $storeManager;
|
||||
|
||||
/**
|
||||
* @var ConfigHelper
|
||||
*/
|
||||
protected $configHelper;
|
||||
|
||||
/**
|
||||
* @var LoggerInterface
|
||||
*/
|
||||
protected $logger;
|
||||
|
||||
/**
|
||||
* @param TransportBuilder $transportBuilder
|
||||
* @param StateInterface $inlineTranslation
|
||||
* @param StoreManagerInterface $storeManager
|
||||
* @param ConfigHelper $configHelper
|
||||
* @param LoggerInterface $logger
|
||||
*/
|
||||
public function __construct(
|
||||
TransportBuilder $transportBuilder,
|
||||
StateInterface $inlineTranslation,
|
||||
StoreManagerInterface $storeManager,
|
||||
ConfigHelper $configHelper,
|
||||
LoggerInterface $logger
|
||||
) {
|
||||
$this->transportBuilder = $transportBuilder;
|
||||
$this->inlineTranslation = $inlineTranslation;
|
||||
$this->storeManager = $storeManager;
|
||||
$this->configHelper = $configHelper;
|
||||
$this->logger = $logger;
|
||||
}
|
||||
|
||||
/**
|
||||
* Send report email
|
||||
*
|
||||
* @param string $csvContent
|
||||
* @param string $filename
|
||||
* @param string $month
|
||||
* @param string $year
|
||||
* @return bool
|
||||
*/
|
||||
public function sendReport($csvContent, $filename, $month = null, $year = null)
|
||||
{
|
||||
if (!$this->configHelper->isEmailEnabled()) {
|
||||
return false;
|
||||
}
|
||||
|
||||
$recipients = $this->configHelper->getEmailRecipients();
|
||||
if (empty($recipients)) {
|
||||
$this->logger->warning('Vendor Sales Report: No email recipients configured');
|
||||
return false;
|
||||
}
|
||||
|
||||
try {
|
||||
$this->inlineTranslation->suspend();
|
||||
|
||||
$sender = [
|
||||
'name' => $this->storeManager->getStore()->getName(),
|
||||
'email' => $this->storeManager->getStore()->getConfig('trans_email/' . $this->configHelper->getEmailSender() . '/email')
|
||||
];
|
||||
|
||||
$subject = $this->configHelper->getEmailSubject($month, $year);
|
||||
|
||||
$transport = $this->transportBuilder
|
||||
->setTemplateIdentifier('vendorsalesreport_email_template')
|
||||
->setTemplateOptions([
|
||||
'area' => \Magento\Framework\App\Area::AREA_ADMINHTML,
|
||||
'store' => \Magento\Store\Model\Store::DEFAULT_STORE_ID,
|
||||
])
|
||||
->setTemplateVars([
|
||||
'subject' => $subject,
|
||||
'month' => $month,
|
||||
'year' => $year
|
||||
])
|
||||
->setFromByScope($sender)
|
||||
->addTo($recipients)
|
||||
->addAttachment($csvContent, $filename, 'text/csv')
|
||||
->getTransport();
|
||||
|
||||
$transport->sendMessage();
|
||||
|
||||
$this->inlineTranslation->resume();
|
||||
|
||||
return true;
|
||||
} catch (\Exception $e) {
|
||||
$this->logger->error('Vendor Sales Report Email Error: ' . $e->getMessage());
|
||||
$this->inlineTranslation->resume();
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user