- Модуль: 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);
}
}