- Модуль: crm
- Путь к файлу: ~/bitrix/modules/crm/lib/integration/sender/segment.php
- Класс: Bitrix\Crm\Integration\Sender\Segment
- Вызов: Segment::uploadAction
public function uploadAction(?string $segmentId = null, string $entityTypeName = '', array $entities = [], ?string $gridId = null)
{
if (!GridPanel::canCurrentUserModifySegments())
{
return ['errors' => ['Access denied.']];
}
$entityTypeId = \CCrmOwnerType::resolveID($entityTypeName);
if (!$entityTypeId)
{
return ['errors' => ['Wrong entity type.']];
}
if (!in_array($entityTypeId, [\CCrmOwnerType::Contact, \CCrmOwnerType::Company, \CCrmOwnerType::Lead]))
{
return ['errors' => ['Entity type does not allowed.']];
}
if ($gridId) // for all
{
$entitiesResult = self::getEntitiesByGridId($entityTypeId, $gridId);
if (!$entitiesResult->isSuccess())
{
return ['errors' => $entitiesResult->getErrorMessages()];
}
$entities = $entitiesResult->getData();
}
$segment = new Sender\Entity\Segment((int)$segmentId);
if (!$segment->getId())
{
$segmentName = Loc::getMessage(
'CRM_INTEGRATION_SENDER_SEGMENT_NAME_PATTERN_' . $entityTypeName,
['%date%' => Sender\Internals\PrettyDate::formatDate()]
);
$segment
->set('NAME', $segmentName)
->set('HIDDEN', 'N')
->appendContactSetConnector()
->save();
if ($segment->hasErrors())
{
return ['errors' => $segment->getErrorMessages()];
}
}
$segment->upload(self::getAddresses($entityTypeName, $entities));
if ($segment->hasErrors())
{
return ['errors' => $segment->getErrorMessages()];
}
$segment->save();
$segmentId = $segment->getId();
$segmentName = $segment->get('NAME');
$textSuccess = Loc::getMessage(
'CRM_INTEGRATION_SENDER_SEGMENT_UPLOAD_SUCCESS',
[
'%name%' => $segmentName,
'%path%' => '/marketing/segment/'
]
);
return [
'id' => $segmentId,
'name' => $segmentName,
'textSuccess' => str_replace('%name%', $segmentName, $textSuccess),
];
}