static function getEntityFields(Identificator\Complex $entity, ?int $presetId): array
{
$data = [
/*
'name' => '',
'last-name' => '',
'email' => '',
'phone' => '',
'second-name' => '',
'company-name' => '',
*/
];
switch ($entity->getTypeId())
{
case \CCrmOwnerType::Deal:
return self::getClientDataByFields(
Crm\DealTable::getRow([
'select' => ['CONTACT_ID', 'COMPANY_ID'],
'filter' => ['=ID' => $entity->getId()]
]), $presetId
);
case \CCrmOwnerType::Quote:
return self::getClientDataByFields(
Crm\QuoteTable::getRow([
'select' => ['CONTACT_ID', 'COMPANY_ID'],
'filter' => ['=ID' => $entity->getId()]
]), $presetId
);
case \CCrmOwnerType::Company:
$map = self::richMap(
$entity->getTypeId(),
[
'TITLE' => 'company-name'
]
);
return self::getDataByFieldsMap(self::loadEntityData($entity), $map);
case \CCrmOwnerType::Lead:
$map = self::richMap(
$entity->getTypeId(),
[
'NAME' => 'name',
'LAST_NAME' => 'last-name',
'SECOND_NAME' => 'second-name',
'EMAIL_WORK' => 'email',
'EMAIL_MAILING' => 'email',
'EMAIL_HOME' => 'email',
'PHONE_WORK' => 'phone',
'PHONE_MAILING' => 'phone',
'PHONE_MOBILE' => 'phone',
'COMPANY_TITLE' => 'company-name',
'COMPANY_ID' => '',
'CONTACT_ID' => '',
]
);
$fields = Crm\LeadTable::getRow([
'select' => array_keys($map),
'filter' => ['=ID' => $entity->getId()]
]);
return self::getClientDataByFields($fields, $presetId) + self::getDataByFieldsMap($fields, $map);
case \CCrmOwnerType::Contact:
$map = self::richMap(
$entity->getTypeId(),
[
'NAME' => 'name',
'LAST_NAME' => 'last-name',
'SECOND_NAME' => 'second-name',
'EMAIL_WORK' => 'email',
'EMAIL_MAILING' => 'email',
'EMAIL_HOME' => 'email',
'PHONE_WORK' => 'phone',
'PHONE_MAILING' => 'phone',
'PHONE_MOBILE' => 'phone',
'COMPANY_ID' => '',
]
);
$fields = self::loadEntityData($entity);
return self::getDataByFieldsMap($fields, $map) + self::getClientDataByFields($fields, $presetId);
default:
if (!\CCrmOwnerType::isUseDynamicTypeBasedApproach($entity->getTypeId()))
{
break;
}
$dynamicFactory = Crm\Service\Container::getInstance()->getFactory($entity->getTypeId());
$dynamicItem = $dynamicFactory->getItem($entity->getId());
if (!$dynamicItem)
{
break;
}
$data += self::getDataByFieldsMap(
$dynamicItem->getData(),
self::richMap($entity->getTypeId(), [])
);
if (!$dynamicItem->getContactId() && !$dynamicItem->getCompanyId())
{
break;
}
$data += self::getClientDataByFields([
'CONTACT_ID' => $dynamicItem->getContactId(),
'COMPANY_ID' => $dynamicItem->getCompanyId(),
], $presetId);
}
return $data;
}