Spaces:
No application file
No application file
File size: 2,761 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 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 |
<?php
namespace Mautic\PluginBundle\Model;
use Mautic\CoreBundle\Model\FormModel;
use Mautic\PluginBundle\Entity\IntegrationEntity;
use Mautic\PluginBundle\Integration\IntegrationObject;
/**
* @extends FormModel<IntegrationEntity>
*/
class IntegrationEntityModel extends FormModel
{
public function getIntegrationEntityRepository()
{
return $this->em->getRepository(IntegrationEntity::class);
}
public function logDataSync(IntegrationObject $integrationObject): void
{
}
public function getSyncedRecords(IntegrationObject $integrationObject, $integrationName, $recordList, $internalEntityId = null)
{
if (!$formattedRecords = $this->formatListOfContacts($recordList)) {
return [];
}
$integrationEntityRepo = $this->getIntegrationEntityRepository();
return $integrationEntityRepo->getIntegrationsEntityId(
$integrationName,
$integrationObject->getType(),
$integrationObject->getInternalType(),
$internalEntityId,
null,
null,
false,
0,
0,
$formattedRecords
);
}
/**
* @return array<mixed, array<'id', mixed>>
*/
public function getRecordList($integrationObject): array
{
$recordList = [];
foreach ($integrationObject->getRecords() as $record) {
$recordList[$record['Id']] = [
'id' => $record['Id'],
];
}
return $recordList;
}
public function formatListOfContacts($recordList): ?string
{
if (empty($recordList)) {
return null;
}
$csList = is_array($recordList) ? implode('", "', array_keys($recordList)) : $recordList;
return '"'.$csList.'"';
}
public function getMauticContactsById($mauticContactIds, $integrationName, $internalObject)
{
if (!$formattedRecords = $this->formatListOfContacts($mauticContactIds)) {
return [];
}
$integrationEntityRepo = $this->getIntegrationEntityRepository();
return $integrationEntityRepo->getIntegrationsEntityId(
$integrationName,
null,
$internalObject,
null,
null,
null,
false,
0,
0,
$formattedRecords
);
}
/**
* @param int $id
*
* @return IntegrationEntity|null
*/
public function getEntityByIdAndSetSyncDate($id, \DateTime $dateTime)
{
$entity = $this->getIntegrationEntityRepository()->find($id);
if ($entity) {
$entity->setLastSyncDate($dateTime);
}
return $entity;
}
}
|