File size: 1,337 Bytes
d2897cd
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
<?php

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());
        }
    }
}