• Модуль: crm
  • Путь к файлу: ~/bitrix/modules/crm/lib/Service/WebForm/WebFormScenarioService.php
  • Класс: Bitrix\Crm\Service\WebForm\WebFormScenarioService
  • Вызов: WebFormScenarioService::getScenario
private function getScenario($templateId): BaseScenario
{
	$baseScenario = new BaseScenario($templateId, $this->culture);
	switch ($templateId)
	{
		case BaseScenario::SCENARIO_EXPERT:
			return $this->prepareExpertScenario($baseScenario);
		case BaseScenario::SCENARIO_CONTACTS:
			return $this->prepareContactsScenario($baseScenario);
		case BaseScenario::SCENARIO_CALLBACK:
			return $this->prepareCallbackScenario($baseScenario);
		case BaseScenario::SCENARIO_FEEDBACK:
			return $this->prepareFeedbackScenario($baseScenario);
		case BaseScenario::SCENARIO_PRODUCT1:
		case BaseScenario::SCENARIO_PRODUCT3:
			return $this->prepareProductsScenario($baseScenario);
		case BaseScenario::SCENARIO_PRODUCT2:
			return $this->prepareProductsScenario(
				$baseScenario,
				false,
				Entity::ENUM_ENTITY_SCHEME_DEAL_INVOICE,
				true,
				Loc::getMessage('CRM_SERVICE_FORM_SCENARIO_PRODUCT2')
			);
		case BaseScenario::SCENARIO_PRODUCT4:
			return $this->prepareProductsScenario($baseScenario, true);
		case BaseScenario::SCENARIO_VK:
			return $this->prepareSocialScenario($baseScenario, ScenarioMenuItem::VK['id']);
		case BaseScenario::SCENARIO_FACEBOOK:
			return $this->prepareSocialScenario($baseScenario, ScenarioMenuItem::FACEBOOK['id']);
		case BaseScenario::SCENARIO_PERSONALISATION:
			return $this->preparePersonalisationScenario($baseScenario);
		case BaseScenario::SCENARIO_WHATSAPP:
			return $this->prepareWhatsAppScenario($baseScenario);
		case BaseScenario::SCENARIO_DELIVERY_AND_PAY:
			return $this->prepareDeliveryAddressScenario($baseScenario, true);
		case BaseScenario::SCENARIO_DELIVERY_ADDRESS:
			return $this->prepareDeliveryAddressScenario($baseScenario);
		case BaseScenario::SCENARIO_OFFLINE_EVENT:
			return $this->prepareEventScenario($baseScenario, true, false);
		case BaseScenario::SCENARIO_OFFLINE_REGISTRATION_EVENT:
			return $this->prepareEventScenario($baseScenario, false, true,'live');
		case BaseScenario::SCENARIO_EVENT_REGISTRATION:
			return $this->prepareEventScenario($baseScenario, false, true, 'online');
		case BaseScenario::SCENARIO_FORM_ON_SITE:
		case BaseScenario::SCENARIO_FORM_IN_BUTTON:
		case BaseScenario::SCENARIO_FORM_ON_PAGE:
		case BaseScenario::SCENARIO_FORM_IN_LINK:
		case BaseScenario::SCENARIO_FORM_IN_WIDGET:
		case BaseScenario::SCENARIO_FORM_ON_TIMER:
			return $this->prepareTourScenario($baseScenario, $templateId);
		case BaseScenario::SCENARIO_DEPENDENCY_UNRELATED:
		case BaseScenario::SCENARIO_DEPENDENCY_EXCLUDING:
		case BaseScenario::SCENARIO_DEPENDENCY_RELATED:
			$dependencyScenario = DependencyScenarioCreator::getDependencyScenario($templateId);

			if (!$dependencyScenario)
			{
				$baseScenario->setCanUse(false);
				return $baseScenario;
			}
			return $this->prepareDependencyScenario(
				$baseScenario,
				$dependencyScenario->getFields(),
				$dependencyScenario->getDependencies()
			);
		case BaseScenario::SCENARIO_FILLING_DATA:
			return $this->prepareFillingDataScenario($baseScenario);
		case BaseScenario::SCENARIO_MULTI_PAGE:
			return $this->prepareMultiPageContactsScenario($baseScenario);
	}

	return $baseScenario;
}