Rewrite SendingErrorHandler using Doctrine

[MAILPOET-5682]
This commit is contained in:
Jan Jakes
2023-10-27 14:29:20 +02:00
committed by Jan Jakeš
parent 7e45fb1c79
commit fa266dadcd
3 changed files with 12 additions and 27 deletions

View File

@ -2,30 +2,36 @@
namespace MailPoet\Cron\Workers\SendingQueue;
use MailPoet\Entities\ScheduledTaskEntity;
use MailPoet\Mailer\MailerError;
use MailPoet\Mailer\MailerLog;
use MailPoet\Tasks\Sending as SendingTask;
use MailPoet\Newsletter\Sending\ScheduledTaskSubscribersRepository;
class SendingErrorHandler {
/** @var ScheduledTaskSubscribersRepository */
private $scheduledTaskSubscribersRepository;
/** @var SendingThrottlingHandler */
private $throttlingHandler;
public function __construct(
ScheduledTaskSubscribersRepository $scheduledTaskSubscribersRepository,
SendingThrottlingHandler $throttlingHandler
) {
$this->scheduledTaskSubscribersRepository = $scheduledTaskSubscribersRepository;
$this->throttlingHandler = $throttlingHandler;
}
public function processError(
MailerError $error,
SendingTask $sendingTask,
ScheduledTaskEntity $task,
array $preparedSubscribersIds,
array $preparedSubscribers
) {
if ($error->getLevel() === MailerError::LEVEL_HARD) {
return $this->processHardError($error);
}
$this->processSoftError($error, $sendingTask, $preparedSubscribersIds, $preparedSubscribers);
$this->processSoftError($error, $task, $preparedSubscribersIds, $preparedSubscribers);
}
private function processHardError(MailerError $error) {
@ -40,11 +46,11 @@ class SendingErrorHandler {
}
}
private function processSoftError(MailerError $error, SendingTask $sendingTask, $preparedSubscribersIds, $preparedSubscribers) {
private function processSoftError(MailerError $error, ScheduledTaskEntity $task, $preparedSubscribersIds, $preparedSubscribers) {
foreach ($error->getSubscriberErrors() as $subscriberError) {
$subscriberIdIndex = array_search($subscriberError->getEmail(), $preparedSubscribers);
$message = $subscriberError->getMessage() ?: $error->getMessage();
$sendingTask->saveSubscriberError($preparedSubscribersIds[$subscriberIdIndex], $message);
$this->scheduledTaskSubscribersRepository->saveError($task, $preparedSubscribersIds[$subscriberIdIndex], $message ?? '');
}
}
}