CCrmEMail::OnImapEmailMessageObsolete

  1. Bitrix24 API (v. 23.675.0)
  2. crm
  3. CCrmEMail
  4. OnImapEmailMessageObsolete
  • Модуль: crm
  • Путь к файлу: ~/bitrix/modules/crm/classes/general/crm_email.php
  • Класс: \CCrmEMail
  • Вызов: CCrmEMail::OnImapEmailMessageObsolete
static function OnImapEmailMessageObsolete(\Bitrix\Main\Event $event)
{
	global $DB;

	$resp = $event->getParameter('user');
	$hash = $event->getParameter('hash');

	$res = \Bitrix\Crm\Activity\MailMetaTable::getList(array(
		'select' => array('ACTIVITY_ID'),
		'filter' => array('=MSG_HEADER_HASH' => $hash),
	));

	while ($mailMeta = $res->fetch())
	{
		if ($activity = \CCrmActivity::getById($mailMeta['ACTIVITY_ID'], false))
		{
			if ($activity['TYPE_ID'] != \CCrmActivityType::Email || $activity['DIRECTION'] != \CCrmActivityDirection::Incoming)
				break;

			if ($resp > 0 && $activity['RESPONSIBLE_ID'] != $resp)
				break;

			$response = $DB->query(sprintf('SELECT 1 FROM b_crm_act WHERE PARENT_ID = %u', $activity['ID']))->fetch();
			if (!$response)
			{
				$bindRes = $DB->query(sprintf(
					'SELECT OWNER_ID FROM b_crm_act_bind WHERE ACTIVITY_ID = %u AND OWNER_TYPE_ID = %u',
					$activity['ID'], \CCrmOwnerType::Lead
				));

				$leadIds = array();
				while ($bind = $bindRes->fetch())
					$leadIds[] = $bind['OWNER_ID'];

				\CCrmActivity::delete($activity['ID'], false, false);
				\Bitrix\Crm\Activity\MailMetaTable::delete($activity['ID']);

				if (!empty($leadIds))
				{
					$leadRes = \CCrmLead::getListEx(
						array(),
						array(
							'ID'                => $leadIds,
							'ORIGINATOR_ID'     => 'email-tracker',
							'STATUS_ID'         => 'NEW',
							'CHECK_PERMISSIONS' => 'N'
						),
						false, false,
						array('ID', 'DATE_CREATE', 'DATE_MODIFY')
					);

					while ($lead = $leadRes->fetch())
					{
						if ($lead['DATE_CREATE'] == $lead['DATE_MODIFY'])
						{
							$response = $DB->query(sprintf(
								'SELECT 1 FROM b_crm_act_bind WHERE OWNER_ID = %u AND OWNER_TYPE_ID = %u',
								$lead['ID'], \CCrmOwnerType::Lead
							))->fetch();
							if (!$response)
							{
								$obsoleteLead = new \CCrmLead(false);
								$obsoleteLead->delete($lead['ID']);
							}
						}
					}
				}
			}

			break;
		}
	}
}

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