Spaces:
No application file
No application file
| declare(strict_types=1); | |
| namespace Mautic\IntegrationsBundle\Sync\Notification; | |
| use Mautic\IntegrationsBundle\Exception\IntegrationNotFoundException; | |
| use Mautic\IntegrationsBundle\Helper\ConfigIntegrationsHelper; | |
| use Mautic\IntegrationsBundle\Helper\SyncIntegrationsHelper; | |
| use Mautic\IntegrationsBundle\Integration\Interfaces\ConfigFormSyncInterface; | |
| use Mautic\IntegrationsBundle\Sync\DAO\Sync\Order\NotificationDAO; | |
| use Mautic\IntegrationsBundle\Sync\Exception\HandlerNotSupportedException; | |
| use Mautic\IntegrationsBundle\Sync\Notification\Handler\HandlerContainer; | |
| use Mautic\IntegrationsBundle\Sync\SyncDataExchange\MauticSyncDataExchange; | |
| use Symfony\Contracts\Translation\TranslatorInterface; | |
| class Notifier | |
| { | |
| public function __construct( | |
| private HandlerContainer $handlerContainer, | |
| private SyncIntegrationsHelper $syncIntegrationsHelper, | |
| private ConfigIntegrationsHelper $configIntegrationsHelper, | |
| private TranslatorInterface $translator | |
| ) { | |
| } | |
| /** | |
| * @param NotificationDAO[] $notifications | |
| * @param string $integrationHandler | |
| * | |
| * @throws HandlerNotSupportedException | |
| * @throws IntegrationNotFoundException | |
| */ | |
| public function noteMauticSyncIssue(array $notifications, $integrationHandler = MauticSyncDataExchange::NAME): void | |
| { | |
| foreach ($notifications as $notification) { | |
| $handler = $this->handlerContainer->getHandler($integrationHandler, $notification->getMauticObject()); | |
| $integrationDisplayName = $this->syncIntegrationsHelper->getIntegration($notification->getIntegration())->getDisplayName(); | |
| $objectDisplayName = $this->getObjectDisplayName($notification->getIntegration(), $notification->getIntegrationObject()); | |
| $handler->writeEntry($notification, $integrationDisplayName, $objectDisplayName); | |
| } | |
| } | |
| /** | |
| * Finalizes notifications such as pushing summary entries to the user notifications. | |
| */ | |
| public function finalizeNotifications(): void | |
| { | |
| foreach ($this->handlerContainer->getHandlers() as $handler) { | |
| $handler->finalize(); | |
| } | |
| } | |
| private function getObjectDisplayName(string $integration, string $object): string | |
| { | |
| try { | |
| $configIntegration = $this->configIntegrationsHelper->getIntegration($integration); | |
| } catch (IntegrationNotFoundException) { | |
| return ucfirst($object); | |
| } | |
| if (!$configIntegration instanceof ConfigFormSyncInterface) { | |
| return ucfirst($object); | |
| } | |
| $objects = $configIntegration->getSyncConfigObjects(); | |
| if (!isset($objects[$object])) { | |
| return ucfirst($object); | |
| } | |
| return $this->translator->trans($objects[$object]); | |
| } | |
| } | |