/
ShipmentCommentSender.php
89 lines (81 loc) · 2.84 KB
/
ShipmentCommentSender.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
<?php
/**
* Copyright © Magento, Inc. All rights reserved.
* See COPYING.txt for license details.
*/
namespace Magento\Sales\Model\Order\Email\Sender;
use Magento\Sales\Model\Order;
use Magento\Sales\Model\Order\Email\Container\ShipmentCommentIdentity;
use Magento\Sales\Model\Order\Email\Container\Template;
use Magento\Sales\Model\Order\Email\NotifySender;
use Magento\Sales\Model\Order\Shipment;
use Magento\Sales\Model\Order\Address\Renderer;
use Magento\Framework\Event\ManagerInterface;
use Magento\Framework\DataObject;
/**
* Class ShipmentCommentSender
*/
class ShipmentCommentSender extends NotifySender
{
/**
* @var Renderer
*/
protected $addressRenderer;
/**
* Application Event Dispatcher
*
* @var ManagerInterface
*/
protected $eventManager;
/**
* @param Template $templateContainer
* @param ShipmentCommentIdentity $identityContainer
* @param Order\Email\SenderBuilderFactory $senderBuilderFactory
* @param \Psr\Log\LoggerInterface $logger
* @param Renderer $addressRenderer
* @param ManagerInterface $eventManager
*/
public function __construct(
Template $templateContainer,
ShipmentCommentIdentity $identityContainer,
\Magento\Sales\Model\Order\Email\SenderBuilderFactory $senderBuilderFactory,
\Psr\Log\LoggerInterface $logger,
Renderer $addressRenderer,
ManagerInterface $eventManager
) {
parent::__construct($templateContainer, $identityContainer, $senderBuilderFactory, $logger, $addressRenderer);
$this->addressRenderer = $addressRenderer;
$this->eventManager = $eventManager;
}
/**
* Send email to customer
*
* @param Shipment $shipment
* @param bool $notify
* @param string $comment
* @return bool
*/
public function send(Shipment $shipment, $notify = true, $comment = '')
{
$order = $shipment->getOrder();
$transport = [
'order' => $order,
'shipment' => $shipment,
'comment' => $comment,
'billing' => $order->getBillingAddress(),
'store' => $order->getStore(),
'formattedShippingAddress' => $this->getFormattedShippingAddress($order),
'formattedBillingAddress' => $this->getFormattedBillingAddress($order),
];
$transportObject = new DataObject($transport);
/**
* Event argument `transport` is @deprecated. Use `transportObject` instead.
*/
$this->eventManager->dispatch(
'email_shipment_comment_set_template_vars_before',
['sender' => $this, 'transport' => $transportObject->getData(), 'transportObject' => $transportObject]
);
$this->templateContainer->setTemplateVars($transportObject->getData());
return $this->checkAndSend($order, $notify);
}
}