Spaces:
No application file
No application file
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; | |
} | |
} | |