• Модуль: crm
  • Путь к файлу: ~/bitrix/modules/crm/lib/ads/form/webhookformfillhandler.php
  • Класс: Bitrix\Crm\Ads\Form\WebHookFormFillHandler
  • Вызов: WebHookFormFillHandler::process
public function process(): void
{
	if (!$application = Application::getInstance())
	{
		$this->addError("Can't load application instance.");

		return;
	}
	if (!$service = $this->service)
	{
		$this->addError("Can't load Seo service.");

		return;
	}
	if (0 === count($this->payload->getItems()))
	{
		$this->addError('Empty payload items.');

		return;
	}
	if (!($code = $this->payload->getCode()) || !$externalServiceType = $service::getTypeByEngine($code))
	{
		$this->addError('Empty payload code.');

		return;
	}

	foreach ($this->payload->getItems() as $externalFormFillItem)
	{
		if (!$externalFormFillItem->getFormId())
		{
			$this->addError("Empty payload item parameters `formId`.");
			continue;
		}
		if (!$formFillId = $externalFormFillItem->getLeadId())
		{
			$this->addError("Empty payload item parameters `leadId`.");
			continue;
		}

		if ($application::getConnection()->lock($originId = "{$externalServiceType}/{$formFillId}"))
		{
			try
			{
				$this->processItem($externalServiceType, $externalFormFillItem, $originId);
			}
			catch (Throwable $throwable)
			{
				$this->addError($throwable->getMessage());
			}
			finally
			{
				$application::getConnection()->unlock($originId);
			}
		}
	}
}