Manager::resolveEntityCommunicationData

  1. Bitrix24 API (v. 23.675.0)
  2. crm
  3. Manager
  4. resolveEntityCommunicationData
  • Модуль: crm
  • Путь к файлу: ~/bitrix/modules/crm/lib/communication/manager.php
  • Класс: Bitrix\Crm\Communication\Manager
  • Вызов: Manager::resolveEntityCommunicationData
static function resolveEntityCommunicationData($entityTypeID, $entityID, array $typeIDs = null)
{
	if($entityTypeID === \CCrmOwnerType::Contact)
	{
		return self::getCommunicationData(
			\CCrmOwnerType::Contact,
			array($entityID),
			$typeIDs,
			array('deduplicate' => true)
		);
	}

	if($entityTypeID === \CCrmOwnerType::Company)
	{
		$results = self::getCommunicationData(
			$entityTypeID,
			array($entityID),
			$typeIDs,
			array('deduplicate' => true)
		);
		$contactsIDs = Crm\Binding\ContactCompanyTable::getCompanyContactIDs($entityID);
		if(!empty($contactsIDs))
		{
			$results = array_merge(
				$results,
				self::getCommunicationData(
					\CCrmOwnerType::Contact,
					$contactsIDs,
					$typeIDs,
					array('deduplicate' => true)
				)
			);
		}
		return $results;
	}

	if($entityTypeID === \CCrmOwnerType::Lead)
	{
		$dbResult = \CCrmLead::GetListEx(
			array(),
			array('ID' => $entityID, 'CHECK_PERMISSIONS' => 'N'),
			false,
			false,
			array('ID', 'IS_RETURN_CUSTOMER', 'COMPANY_ID')
		);

		$entityFields = $dbResult->Fetch();
		if(!is_array($entityFields))
		{
			return array();
		}

		if(!(isset($entityFields['IS_RETURN_CUSTOMER']) && $entityFields['IS_RETURN_CUSTOMER'] === 'Y'))
		{
			$results = self::getCommunicationData(
				\CCrmOwnerType::Lead,
				array($entityID),
				$typeIDs,
				array('deduplicate' => true)
			);
		}
		else
		{
			$results = array();

			$companyID = isset($entityFields['COMPANY_ID']) ? $entityFields['COMPANY_ID'] : 0;
			if($companyID > 0)
			{
				$results = self::getCommunicationData(
					\CCrmOwnerType::Company,
					array($companyID),
					$typeIDs,
					array('deduplicate' => true)
				);
			}

			$contactsIDs = Crm\Binding\LeadContactTable::getLeadContactIDs($entityID);
			if(!empty($contactsIDs))
			{
				$results = array_merge(
					$results,
					self::getCommunicationData(
						\CCrmOwnerType::Contact,
						$contactsIDs,
						$typeIDs,
						array('deduplicate' => true)
					)
				);
			}
		}
		return $results;
	}

	if($entityTypeID === \CCrmOwnerType::Deal)
	{
		$dbResult = \CCrmDeal::GetListEx(
			array(),
			array('ID' => $entityID, 'CHECK_PERMISSIONS' => 'N'),
			false,
			false,
			array('ID', 'COMPANY_ID')
		);

		$entityFields = $dbResult->Fetch();
		if(!is_array($entityFields))
		{
			return array();
		}

		$results = array();

		$companyID = isset($entityFields['COMPANY_ID']) ? $entityFields['COMPANY_ID'] : 0;
		if($companyID > 0)
		{
			$results = self::getCommunicationData(
				\CCrmOwnerType::Company,
				array($companyID),
				$typeIDs,
				array('deduplicate' => true)
			);
		}

		$contactsIDs = Crm\Binding\DealContactTable::getDealContactIDs($entityID);
		if(!empty($contactsIDs))
		{
			$results = array_merge(
				$results,
				self::getCommunicationData(
					\CCrmOwnerType::Contact,
					$contactsIDs,
					$typeIDs,
					array('deduplicate' => true)
				)
			);
		}
		return $results;
	}

	if($entityTypeID === \CCrmOwnerType::Quote)
	{
		$dbResult = \CCrmQuote::GetList(
			array(),
			array('ID' => $entityID, 'CHECK_PERMISSIONS' => 'N'),
			false,
			false,
			array('ID', 'COMPANY_ID')
		);

		$entityFields = $dbResult->Fetch();
		if(!is_array($entityFields))
		{
			return array();
		}

		$results = array();

		$companyID = isset($entityFields['COMPANY_ID']) ? $entityFields['COMPANY_ID'] : 0;
		if($companyID > 0)
		{
			$results = self::getCommunicationData(
				\CCrmOwnerType::Company,
				array($companyID),
				$typeIDs,
				array('deduplicate' => true)
			);
		}

		$contactsIDs = Crm\Binding\QuoteContactTable::getQuoteContactIDs($entityID);
		if(!empty($contactsIDs))
		{
			$results = array_merge(
				$results,
				self::getCommunicationData(
					\CCrmOwnerType::Contact,
					$contactsIDs,
					$typeIDs,
					array('deduplicate' => true)
				)
			);
		}
		return $results;
	}

	if($entityTypeID === \CCrmOwnerType::Invoice)
	{
		$dbResult = \CCrmInvoice::GetList(
			array(),
			array('ID' => $entityID, 'CHECK_PERMISSIONS' => 'N'),
			false,
			false,
			array('ID', 'UF_COMPANY_ID', 'UF_CONTACT_ID')
		);

		$entityFields = $dbResult->Fetch();
		if(!is_array($entityFields))
		{
			return array();
		}

		$results = array();

		$companyID = isset($entityFields['UF_COMPANY_ID']) ? $entityFields['UF_COMPANY_ID'] : 0;
		if($companyID > 0)
		{
			$results = self::getCommunicationData(
				\CCrmOwnerType::Company,
				array($companyID),
				$typeIDs,
				array('deduplicate' => true)
			);
		}

		$contactID = isset($entityFields['UF_CONTACT_ID']) ? $entityFields['UF_CONTACT_ID'] : 0;
		if($contactID > 0)
		{
			$results = array_merge(
				$results,
				self::getCommunicationData(
					\CCrmOwnerType::Contact,
					array($contactID),
					$typeIDs,
					array('deduplicate' => true)
				)
			);
		}
		return $results;
	}

	return array();
}

Добавить комментарий