SendCancelEmail.php 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. <?php
  2. /**
  3. * Refer to LICENSE.txt distributed with the Temando Shipping module for notice of license
  4. */
  5. namespace Temando\Shipping\Model\Sales\Service\Operation;
  6. use Magento\Framework\Exception\MailException;
  7. use Magento\Framework\Message\ManagerInterface;
  8. use Magento\Sales\Api\ShipmentRepositoryInterface;
  9. use Magento\Sales\Model\Order\Email\Sender\ShipmentSender;
  10. use Temando\Shipping\Model\ShipmentInterface;
  11. /**
  12. * Temando Shipment Operation: Send Shipment Cancellation Email.
  13. *
  14. * @package Temando\Shipping\Model
  15. * @author Nathan Wilson <cnathan.wilson@temando.com>
  16. * @license https://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
  17. * @link https://www.temando.com/
  18. */
  19. class SendCancelEmail implements ShipmentOperationInterface
  20. {
  21. /**
  22. * @var ShipmentRepositoryInterface
  23. */
  24. private $shipmentRepository;
  25. /**
  26. * @var ShipmentSender
  27. */
  28. private $emailSender;
  29. /**
  30. * @var ManagerInterface
  31. */
  32. private $messageManager;
  33. /**
  34. * SendCancelEmail constructor.
  35. * @param ShipmentRepositoryInterface $shipmentRepository
  36. * @param ShipmentSender $emailSender
  37. * @param ManagerInterface $messageManager
  38. */
  39. public function __construct(
  40. ShipmentRepositoryInterface $shipmentRepository,
  41. ShipmentSender $emailSender,
  42. ManagerInterface $messageManager
  43. ) {
  44. $this->shipmentRepository = $shipmentRepository;
  45. $this->emailSender = $emailSender;
  46. $this->messageManager = $messageManager;
  47. }
  48. /**
  49. * Send the shipment cancellation email
  50. * @param ShipmentInterface $shipment
  51. * @param int $salesShipmentId
  52. */
  53. public function execute(ShipmentInterface $shipment, int $salesShipmentId): void
  54. {
  55. /** @var \Magento\Sales\Model\Order\Shipment $salesShipment */
  56. $salesShipment = $this->shipmentRepository->get($salesShipmentId);
  57. try {
  58. $this->emailSender->send($salesShipment);
  59. $salesShipment->getEmailSent()
  60. ? $this->messageManager->addSuccessMessage(__('The shipment cancellation email was sent.'))
  61. : $this->messageManager->addWarningMessage(__('The shipment cancellation email was not sent.'));
  62. } catch (MailException $exception) {
  63. $this->messageManager->addErrorMessage(__('An error occurred during email sending.'));
  64. } catch (\Exception $exception) {
  65. $this->messageManager->addErrorMessage(__('An error occurred during email sending.'));
  66. }
  67. }
  68. }