Spaces:
No application file
No application file
declare(strict_types=1); | |
namespace Mautic\MessengerBundle\MessageHandler; | |
use Doctrine\DBAL\Exception\RetryableException; | |
use Mautic\CoreBundle\Helper\CoreParametersHelper; | |
use Mautic\EmailBundle\Model\EmailModel; | |
use Mautic\MessengerBundle\Message\EmailHitNotification; | |
use Symfony\Component\Messenger\Exception\RecoverableMessageHandlingException; | |
use Symfony\Component\Messenger\Handler\Acknowledger; | |
use Symfony\Component\Messenger\Handler\MessageHandlerInterface; | |
class EmailHitNotificationHandler implements MessageHandlerInterface | |
{ | |
private bool $isSyncTransport; | |
public function __construct( | |
private EmailModel $emailModel, | |
CoreParametersHelper $parametersHelper | |
) { | |
$this->isSyncTransport = str_starts_with($parametersHelper->get('messenger_dsn_hit'), 'sync://'); | |
} | |
public function __invoke(EmailHitNotification $message, Acknowledger $ack = null): void | |
{ | |
try { | |
$this->emailModel->hitEmail( | |
$message->getStatId(), | |
$message->getRequest(), | |
false, | |
$this->isSyncTransport, | |
$message->getEventTime(), | |
true | |
); | |
} catch (RetryableException $e) { | |
throw new RecoverableMessageHandlingException($e->getMessage()); | |
} | |
} | |
} | |