Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
Sender.php
Go to the documentation of this file.
1 <?php
7 
12 
19 abstract class Sender
20 {
25 
29  protected $templateContainer;
30 
34  protected $identityContainer;
35 
39  protected $logger;
40 
44  protected $addressRenderer;
45 
53  public function __construct(
56  \Magento\Sales\Model\Order\Email\SenderBuilderFactory $senderBuilderFactory,
57  \Psr\Log\LoggerInterface $logger,
59  ) {
60  $this->templateContainer = $templateContainer;
61  $this->identityContainer = $identityContainer;
62  $this->senderBuilderFactory = $senderBuilderFactory;
63  $this->logger = $logger;
64  $this->addressRenderer = $addressRenderer;
65  }
66 
71  protected function checkAndSend(Order $order)
72  {
73  $this->identityContainer->setStore($order->getStore());
74  if (!$this->identityContainer->isEnabled()) {
75  return false;
76  }
77  $this->prepareTemplate($order);
78 
80  $sender = $this->getSender();
81 
82  try {
83  $sender->send();
84  $sender->sendCopyTo();
85  } catch (\Exception $e) {
86  $this->logger->error($e->getMessage());
87 
88  return false;
89  }
90 
91  return true;
92  }
93 
98  protected function prepareTemplate(Order $order)
99  {
100  $this->templateContainer->setTemplateOptions($this->getTemplateOptions());
101 
102  if ($order->getCustomerIsGuest()) {
103  $templateId = $this->identityContainer->getGuestTemplateId();
104  $customerName = $order->getBillingAddress()->getName();
105  } else {
106  $templateId = $this->identityContainer->getTemplateId();
107  $customerName = $order->getCustomerName();
108  }
109 
110  $this->identityContainer->setCustomerName($customerName);
111  $this->identityContainer->setCustomerEmail($order->getCustomerEmail());
112  $this->templateContainer->setTemplateId($templateId);
113  }
114 
118  protected function getSender()
119  {
120  return $this->senderBuilderFactory->create(
121  [
122  'templateContainer' => $this->templateContainer,
123  'identityContainer' => $this->identityContainer,
124  ]
125  );
126  }
127 
131  protected function getTemplateOptions()
132  {
133  return [
135  'store' => $this->identityContainer->getStore()->getStoreId()
136  ];
137  }
138 
144  {
145  return $order->getIsVirtual()
146  ? null
147  : $this->addressRenderer->format($order->getShippingAddress(), 'html');
148  }
149 
154  protected function getFormattedBillingAddress($order)
155  {
156  return $this->addressRenderer->format($order->getBillingAddress(), 'html');
157  }
158 }
$order
Definition: order.php:55
$templateId
Definition: queue.php:15
__construct(Template $templateContainer, IdentityInterface $identityContainer, \Magento\Sales\Model\Order\Email\SenderBuilderFactory $senderBuilderFactory, \Psr\Log\LoggerInterface $logger, Renderer $addressRenderer)
Definition: Sender.php:53