- Модуль: tasks
- Путь к файлу: ~/bitrix/modules/tasks/lib/rest/controllers/task.php
- Класс: BitrixTasksRestControllersTask
- Вызов: Task::fillResultInfo
private function fillResultInfo(array $tasks): array
{
if (empty($tasks))
{
return [];
}
$taskIds = [];
foreach ($tasks as $key => $task)
{
$taskIds[(int)$task['ID']] = $key;
$tasks[$key]['TASK_REQUIRE_RESULT'] = 'N';
$tasks[$key]['TASK_HAS_OPEN_RESULT'] = 'N';
$tasks[$key]['TASK_HAS_RESULT'] = 'N';
}
$query = (new MainORMQueryQuery(ResultTable::getEntity()))
->addSelect('TASK_ID')
->addSelect(new MainEntityExpressionField(
'RES_ID',
'MAX(%s)',
'ID'
))
->whereIn('TASK_ID', array_keys($taskIds))
->addGroup('TASK_ID');
$lastResults = $query->fetchAll();
if (!empty($lastResults))
{
$lastResults = array_column($lastResults, 'RES_ID');
$results = ResultTable::GetList([
'select' => ['TASK_ID', 'STATUS'],
'filter' => [
'@ID' => $lastResults,
],
])->fetchAll();
foreach ($results as $row)
{
$taskId = $row['TASK_ID'];
$tasks[$taskIds[$taskId]]['TASK_HAS_RESULT'] = 'Y';
if ((int)$row['STATUS'] === ResultTable::STATUS_OPENED)
{
$tasks[$taskIds[$taskId]]['TASK_HAS_OPEN_RESULT'] = 'Y';
}
}
}
$requireResults = ParameterTable::getList([
'select' => ['TASK_ID'],
'filter' => [
'@TASK_ID' => array_keys($taskIds),
'=CODE' => ParameterTable::PARAM_RESULT_REQUIRED,
'=VALUE' => 'Y',
],
])->fetchAll();
foreach ($requireResults as $row)
{
$taskId = $row['TASK_ID'];
$tasks[$taskIds[$taskId]]['TASK_REQUIRE_RESULT'] = 'Y';
}
return $tasks;
}