Spaces:
No application file
No application file
declare(strict_types=1); | |
namespace Mautic\IntegrationsBundle\Sync\Notification; | |
use Doctrine\ORM\EntityManagerInterface; | |
use Mautic\CoreBundle\Service\BulkNotificationInterface; | |
use Mautic\IntegrationsBundle\Sync\Notification\Helper\UserNotificationBuilder; | |
use Mautic\UserBundle\Entity\User; | |
class BulkNotification | |
{ | |
public function __construct( | |
private BulkNotificationInterface $bulkNotification, | |
private UserNotificationBuilder $userNotificationBuilder, | |
private EntityManagerInterface $entityManager | |
) { | |
} | |
public function addNotification( | |
string $deduplicateValue, | |
string $message, | |
string $integrationDisplayName, | |
string $objectDisplayName, | |
string $mauticObject, | |
int $id, | |
string $linkText | |
): void { | |
$link = $this->userNotificationBuilder->buildLink($mauticObject, $id, $linkText); | |
$userIds = $this->userNotificationBuilder->getUserIds($mauticObject, $id); | |
foreach ($userIds as $userId) { | |
/** @var User $user */ | |
$user = $this->entityManager->getReference(User::class, $userId); | |
$this->bulkNotification->addNotification( | |
$deduplicateValue, | |
$this->userNotificationBuilder->formatMessage($message, $link), | |
null, | |
$this->userNotificationBuilder->formatHeader($integrationDisplayName, $objectDisplayName), | |
'ri-refresh-line', | |
null, | |
$user | |
); | |
} | |
} | |
/** | |
* @param \DateTime|null $deduplicateDateTimeFrom If last 24 hours for deduplication does not fit, change it here | |
*/ | |
public function flush(\DateTime $deduplicateDateTimeFrom = null): void | |
{ | |
$this->bulkNotification->flush($deduplicateDateTimeFrom); | |
} | |
} | |