Spaces:
No application file
No application file
File size: 3,363 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 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 |
<?php
declare(strict_types=1);
namespace Mautic\IntegrationsBundle\Sync\SyncService;
use GuzzleHttp\Exception\ClientException;
use Mautic\IntegrationsBundle\Helper\SyncIntegrationsHelper;
use Mautic\IntegrationsBundle\Sync\DAO\Sync\InputOptionsDAO;
use Mautic\IntegrationsBundle\Sync\Helper\MappingHelper;
use Mautic\IntegrationsBundle\Sync\Helper\RelationsHelper;
use Mautic\IntegrationsBundle\Sync\Helper\SyncDateHelper;
use Mautic\IntegrationsBundle\Sync\Logger\DebugLogger;
use Mautic\IntegrationsBundle\Sync\Notification\Notifier;
use Mautic\IntegrationsBundle\Sync\SyncDataExchange\MauticSyncDataExchange;
use Mautic\IntegrationsBundle\Sync\SyncProcess\Direction\Integration\IntegrationSyncProcess;
use Mautic\IntegrationsBundle\Sync\SyncProcess\Direction\Internal\MauticSyncProcess;
use Mautic\IntegrationsBundle\Sync\SyncProcess\SyncProcess;
use Psr\Log\LogLevel;
use Symfony\Component\EventDispatcher\EventDispatcherInterface;
final class SyncService implements SyncServiceInterface
{
public function __construct(
private MauticSyncDataExchange $internalSyncDataExchange,
private SyncDateHelper $syncDateHelper,
private MappingHelper $mappingHelper,
private RelationsHelper $relationsHelper,
private SyncIntegrationsHelper $syncIntegrationsHelper,
private EventDispatcherInterface $eventDispatcher,
private Notifier $notifier,
private IntegrationSyncProcess $integratinSyncProcess,
private MauticSyncProcess $mauticSyncProcess
) {
}
/**
* @throws \Mautic\IntegrationsBundle\Exception\IntegrationNotFoundException
*/
public function processIntegrationSync(InputOptionsDAO $inputOptionsDAO): void
{
$integrationSyncProcess = new SyncProcess(
$this->syncDateHelper,
$this->mappingHelper,
$this->relationsHelper,
$this->integratinSyncProcess,
$this->mauticSyncProcess,
$this->eventDispatcher,
$this->notifier,
$this->syncIntegrationsHelper->getMappingManual($inputOptionsDAO->getIntegration()),
$this->internalSyncDataExchange,
$this->syncIntegrationsHelper->getSyncDataExchange($inputOptionsDAO->getIntegration()),
$inputOptionsDAO,
$this
);
DebugLogger::log(
$inputOptionsDAO->getIntegration(),
sprintf(
'Starting %s sync from %s date/time',
$inputOptionsDAO->isFirstTimeSync() ? 'first time' : 'subsequent',
$inputOptionsDAO->getStartDateTime() ? $inputOptionsDAO->getStartDateTime()->format('Y-m-d H:i:s') : 'yet to be determined'
),
self::class.':'.__FUNCTION__
);
try {
$integrationSyncProcess->execute();
} catch (ClientException $exception) {
// The sync failed to communicate with the integration so log it
DebugLogger::log($inputOptionsDAO->getIntegration(), $exception->getMessage(), null, [], LogLevel::ERROR);
}
}
public function initiateDebugLogger(DebugLogger $logger): void
{
// Yes it's a hack to prevent from having to pass the logger as a dependency into dozens of classes
// So not doing anything with the logger, just need Symfony to initiate the service
}
}
|