• Модуль: crm
  • Путь к файлу: ~/bitrix/modules/crm/lib/timeline/tasks/controller.php
  • Класс: Bitrix\Crm\Timeline\Tasks\Controller
  • Вызов: Controller::handleTaskActivity
private function handleTaskActivity(int $typeCategoryId, array $params, Bindings $bindings): void
{
	$taskId = $params['TASK_ID'] ?? null;
	if(is_null($taskId))
	{
		return;
	}

	$desiredStatus = null;
	switch ($typeCategoryId)
	{
		case CategoryType::DEADLINE_CHANGED:
			$this->taskActivityProvider->updateDeadline($taskId, $params);
			$desiredStatus = TaskActivityStatus::STATUS_DEADLINE_CHANGED;
			break;

		case CategoryType::VIEWED:
			$desiredStatus = TaskActivityStatus::STATUS_VIEWED;
			break;

		case CategoryType::STATUS_CHANGED:
			$desiredStatus = (new TaskActivityStatus())->onStatusChange(
				(int)$params['TASK_CURRENT_STATUS'],
				$params['IS_EXPIRED'] ?? false
			);
			break;

		case CategoryType::RESULT_ADDED:
			$desiredStatus = TaskActivityStatus::STATUS_RESULT_ADDED;
			break;

		case CategoryType::EXPIRED:
			$desiredStatus = TaskActivityStatus::STATUS_EXPIRED;
			break;

		case CategoryType::DESCRIPTION_CHANGED:
			$this->taskActivityProvider->updateDescription($params);
			$desiredStatus = TaskActivityStatus::STATUS_UPDATED;
			break;

		case CategoryType::RESPONSIBLE_CHANGED:
		case CategoryType::ACCOMPLICE_ADDED:
		case CategoryType::AUDITOR_ADDED:
		case CategoryType::CHECKLIST_ADDED:
		case CategoryType::GROUP_CHANGED:
		case CategoryType::TASK_UPDATED:
			$desiredStatus = TaskActivityStatus::STATUS_UPDATED;
			break;

		case CategoryType::DISAPPROVED:
			$activity = $this->taskActivityProvider->find($taskId);
			if (!is_null($activity))
			{
				$this->taskActivityProvider->renew($activity->getId());
			}
			break;
	}

	if ($desiredStatus && $this->isActivityStatusUpdateRequired($params, $bindings, $desiredStatus))
	{
		$this->taskActivityProvider->updateStatus(
			$taskId,
			$desiredStatus
		);
	}

	$this->taskActivityProvider->updateByTask($params);
	if (!isset($params['SKIP_BINDINGS_UPDATE']) || $params['SKIP_BINDINGS_UPDATE'] === false)
	{
		$this->taskActivityProvider->updateBindings($bindings, $this->getCurrentBindings($params), $params);
	}


	if (isset($params['REFRESH_TASK_ACTIVITY']) && $params['REFRESH_TASK_ACTIVITY'] === true)
	{
		$this->refreshTaskActivity($bindings, $params);
	}
}