Skip to content

Commit 6e1263c

Browse files
committed
Non-blocking notifications
1 parent 4ef6b09 commit 6e1263c

File tree

7 files changed

+61
-53
lines changed

7 files changed

+61
-53
lines changed

Model/Customer/Erase/Notifier.php

+12-11
Original file line numberDiff line numberDiff line change
@@ -13,32 +13,29 @@
1313
use Opengento\Gdpr\Model\Customer\Notifier\SenderInterface;
1414
use Opengento\Gdpr\Model\Customer\OrigDataRegistry;
1515
use Opengento\Gdpr\Model\Erase\NotifierInterface;
16+
use Psr\Log\LoggerInterface;
1617

1718
final class Notifier implements NotifierInterface
1819
{
19-
/**
20-
* @var SenderInterface[]
21-
*/
20+
/** @var SenderInterface[] */
2221
private array $senders;
2322

24-
/**
25-
* @var CustomerRepositoryInterface
26-
*/
2723
private CustomerRepositoryInterface $customerRepository;
2824

29-
/**
30-
* @var OrigDataRegistry
31-
*/
3225
private OrigDataRegistry $origDataRegistry;
3326

27+
private LoggerInterface $logger;
28+
3429
public function __construct(
3530
array $senders,
3631
CustomerRepositoryInterface $customerRepository,
37-
OrigDataRegistry $origDataRegistry
32+
OrigDataRegistry $origDataRegistry,
33+
LoggerInterface $logger
3834
) {
3935
$this->senders = $senders;
4036
$this->customerRepository = $customerRepository;
4137
$this->origDataRegistry = $origDataRegistry;
38+
$this->logger = $logger;
4239
}
4340

4441
/**
@@ -51,7 +48,11 @@ public function notify(EraseEntityInterface $eraseEntity): void
5148
$customer = $this->origDataRegistry->get($customerId) ?? $this->customerRepository->getById($customerId);
5249

5350
foreach ($this->senders as $sender) {
54-
$sender->send($customer);
51+
try {
52+
$sender->send($customer);
53+
} catch (LocalizedException $e) {
54+
$this->logger->error($e->getLogMessage(), $e->getTrace());
55+
}
5556
}
5657
}
5758
}

Model/Customer/Export/Notifier.php

+12-8
Original file line numberDiff line numberDiff line change
@@ -12,25 +12,25 @@
1212
use Opengento\Gdpr\Api\Data\ExportEntityInterface;
1313
use Opengento\Gdpr\Model\Customer\Notifier\SenderInterface;
1414
use Opengento\Gdpr\Model\Export\NotifierInterface;
15+
use Psr\Log\LoggerInterface;
1516

1617
final class Notifier implements NotifierInterface
1718
{
18-
/**
19-
* @var SenderInterface[]
20-
*/
19+
/** @var SenderInterface[] */
2120
private array $senders;
2221

23-
/**
24-
* @var CustomerRepositoryInterface
25-
*/
2622
private CustomerRepositoryInterface $customerRepository;
2723

24+
private LoggerInterface $logger;
25+
2826
public function __construct(
2927
array $senders,
30-
CustomerRepositoryInterface $customerRepository
28+
CustomerRepositoryInterface $customerRepository,
29+
LoggerInterface $logger
3130
) {
3231
$this->senders = $senders;
3332
$this->customerRepository = $customerRepository;
33+
$this->logger = $logger;
3434
}
3535

3636
/**
@@ -42,7 +42,11 @@ public function notify(ExportEntityInterface $exportEntity): void
4242
$customer = $this->customerRepository->getById($exportEntity->getEntityId());
4343

4444
foreach ($this->senders as $sender) {
45-
$sender->send($customer);
45+
try {
46+
$sender->send($customer);
47+
} catch (LocalizedException $e) {
48+
$this->logger->error($e->getLogMessage(), $e->getTrace());
49+
}
4650
}
4751
}
4852
}

Model/Customer/Notifier/MailSender.php

+3-24
Original file line numberDiff line numberDiff line change
@@ -16,42 +16,26 @@
1616
use Magento\Framework\Mail\Template\TransportBuilder;
1717
use Magento\Store\Model\StoreManagerInterface;
1818
use Opengento\Gdpr\Model\Notifier\AbstractMailSender;
19-
use Psr\Log\LoggerInterface;
2019

2120
final class MailSender extends AbstractMailSender implements SenderInterface
2221
{
23-
/**
24-
* @var LoggerInterface
25-
*/
26-
private LoggerInterface $logger;
27-
28-
/**
29-
* @var View
30-
*/
3122
private View $customerViewHelper;
3223

33-
/**
34-
* @var StoreManagerInterface
35-
*/
36-
private $storeManager;
24+
private StoreManagerInterface $storeManager;
3725

3826
public function __construct(
39-
LoggerInterface $logger,
4027
View $customerViewHelper,
4128
TransportBuilder $transportBuilder,
4229
ScopeConfigInterface $scopeConfig,
4330
StoreManagerInterface $storeManager,
4431
array $configPaths
4532
) {
46-
$this->logger = $logger;
4733
$this->customerViewHelper = $customerViewHelper;
4834
$this->storeManager = $storeManager;
4935
parent::__construct($transportBuilder, $scopeConfig, $configPaths);
5036
}
5137

5238
/**
53-
* @param CustomerInterface $customer
54-
* @return void
5539
* @throws LocalizedException
5640
* @throws MailException
5741
* @throws NoSuchEntityException
@@ -66,12 +50,7 @@ public function send(CustomerInterface $customer): void
6650
'customer_name' => $this->customerViewHelper->getCustomerName($customer),
6751
],
6852
];
69-
70-
try {
71-
$this->sendMail($customer->getEmail(), $this->customerViewHelper->getCustomerName($customer), $storeId, $vars);
72-
$this->logger->debug(__('GDPR Email Success'));
73-
} catch (MailException $exc) {
74-
$this->logger->error(__('GDPR Email Error: %1', $exc->getMessage()));
75-
}
53+
54+
$this->sendMail($customer->getEmail(), $this->customerViewHelper->getCustomerName($customer), $storeId, $vars);
7655
}
7756
}

Model/Customer/Notifier/SenderInterface.php

+4
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,15 @@
88
namespace Opengento\Gdpr\Model\Customer\Notifier;
99

1010
use Magento\Customer\Api\Data\CustomerInterface;
11+
use Magento\Framework\Exception\LocalizedException;
1112

1213
/**
1314
* @api
1415
*/
1516
interface SenderInterface
1617
{
18+
/**
19+
* @throws LocalizedException
20+
*/
1721
public function send(CustomerInterface $customer): void;
1822
}

Model/Order/Erase/Notifier.php

+13-5
Original file line numberDiff line numberDiff line change
@@ -7,34 +7,42 @@
77

88
namespace Opengento\Gdpr\Model\Order\Erase;
99

10+
use Magento\Framework\Exception\LocalizedException;
1011
use Magento\Sales\Api\OrderRepositoryInterface;
1112
use Opengento\Gdpr\Api\Data\EraseEntityInterface;
1213
use Opengento\Gdpr\Model\Erase\NotifierInterface;
1314
use Opengento\Gdpr\Model\Order\Notifier\SenderInterface;
15+
use Psr\Log\LoggerInterface;
1416

1517
final class Notifier implements NotifierInterface
1618
{
17-
/**
18-
* @var SenderInterface[]
19-
*/
19+
/** @var SenderInterface[] */
2020
private array $senders;
2121

2222
private OrderRepositoryInterface $orderRepository;
2323

24+
private LoggerInterface $logger;
25+
2426
public function __construct(
2527
array $senders,
26-
OrderRepositoryInterface $orderRepository
28+
OrderRepositoryInterface $orderRepository,
29+
LoggerInterface $logger
2730
) {
2831
$this->senders = $senders;
2932
$this->orderRepository = $orderRepository;
33+
$this->logger = $logger;
3034
}
3135

3236
public function notify(EraseEntityInterface $eraseEntity): void
3337
{
3438
$order = $this->orderRepository->get($eraseEntity->getEntityId());
3539

3640
foreach ($this->senders as $sender) {
37-
$sender->send($order);
41+
try {
42+
$sender->send($order);
43+
} catch (LocalizedException $e) {
44+
$this->logger->error($e->getLogMessage(), $e->getTrace());
45+
}
3846
}
3947
}
4048
}

Model/Order/Export/Notifier.php

+13-5
Original file line numberDiff line numberDiff line change
@@ -7,26 +7,30 @@
77

88
namespace Opengento\Gdpr\Model\Order\Export;
99

10+
use Magento\Framework\Exception\LocalizedException;
1011
use Magento\Sales\Api\OrderRepositoryInterface;
1112
use Opengento\Gdpr\Api\Data\ExportEntityInterface;
1213
use Opengento\Gdpr\Model\Export\NotifierInterface;
1314
use Opengento\Gdpr\Model\Order\Notifier\SenderInterface;
15+
use Psr\Log\LoggerInterface;
1416

1517
final class Notifier implements NotifierInterface
1618
{
17-
/**
18-
* @var SenderInterface[]
19-
*/
19+
/** @var SenderInterface[] */
2020
private array $senders;
2121

2222
private OrderRepositoryInterface $orderRepository;
2323

24+
private LoggerInterface $logger;
25+
2426
public function __construct(
2527
array $senders,
26-
OrderRepositoryInterface $orderRepository
28+
OrderRepositoryInterface $orderRepository,
29+
LoggerInterface $logger
2730
) {
2831
$this->senders = $senders;
2932
$this->orderRepository = $orderRepository;
33+
$this->logger = $logger;
3034
}
3135

3236
/**
@@ -37,7 +41,11 @@ public function notify(ExportEntityInterface $exportEntity): void
3741
$order = $this->orderRepository->get($exportEntity->getEntityId());
3842

3943
foreach ($this->senders as $sender) {
40-
$sender->send($order);
44+
try {
45+
$sender->send($order);
46+
} catch (LocalizedException $e) {
47+
$this->logger->error($e->getLogMessage(), $e->getTrace());
48+
}
4149
}
4250
}
4351
}

Model/Order/Notifier/SenderInterface.php

+4
Original file line numberDiff line numberDiff line change
@@ -7,12 +7,16 @@
77

88
namespace Opengento\Gdpr\Model\Order\Notifier;
99

10+
use Magento\Framework\Exception\LocalizedException;
1011
use Magento\Sales\Api\Data\OrderInterface;
1112

1213
/**
1314
* @api
1415
*/
1516
interface SenderInterface
1617
{
18+
/**
19+
* @throws LocalizedException
20+
*/
1721
public function send(OrderInterface $order): void;
1822
}

0 commit comments

Comments
 (0)