public function getScheduledItems(?Query $queryParams = null): Result
{
$filter = $queryParams ? $queryParams->getFilter() : [];
$filter = array_merge($filter, [
'CHECK_PERMISSIONS' => 'N',
'COMPLETED' => 'N',
'BINDINGS' => [
[
'OWNER_TYPE_ID' => $this->context->getEntityTypeId(),
'OWNER_ID' => $this->context->getEntityId(),
],
],
]);
if (!$this->context->canReadEntity())
{
return new Result();
}
$dbResult = \CCrmActivity::GetList(
[
'DEADLINE' => 'ASC',
],
$filter,
false,
false,
[
'ID',
],
[
'QUERY_OPTIONS' => [
'LIMIT' => 100,
'OFFSET' => 0,
],
]
);
$items = [];
$activityIds = [];
while ($fields = $dbResult->Fetch())
{
$activityIds[] = (int)$fields['ID'];
}
if (!empty($activityIds))
{
$dbResult = \CCrmActivity::GetList(
[],
[
'@ID' => $activityIds,
'CHECK_PERMISSIONS' => 'N',
],
false,
false,
[
'ID',
'OWNER_ID',
'OWNER_TYPE_ID',
'TYPE_ID',
'PROVIDER_ID',
'PROVIDER_TYPE_ID',
'ASSOCIATED_ENTITY_ID',
'CALENDAR_EVENT_ID',
'DIRECTION',
'SUBJECT',
'STATUS',
'DESCRIPTION',
'DESCRIPTION_TYPE',
'CREATED',
'DEADLINE',
'RESPONSIBLE_ID',
'PROVIDER_PARAMS',
'PROVIDER_DATA',
'SETTINGS',
'RESULT_MARK',
'ORIGIN_ID',
'LAST_UPDATED',
'END_TIME',
'STORAGE_TYPE_ID',
'STORAGE_ELEMENT_IDS',
'IS_INCOMING_CHANNEL',
'LIGHT_COUNTER_AT',
]
);
$activities = [];
while ($fields = $dbResult->Fetch())
{
$activities[$fields['ID']] = $fields;
}
foreach ($activityIds as $activityId)
{
if (!isset($activities[$activityId]))
{
continue;
}
$items[$activityId] = $activities[$activityId];
}
}
\Bitrix\Crm\Timeline\EntityController::loadCommunicationsAndMultifields(
$items,
$this->context->getUserPermissions()->getCrmPermissions()
);
$items = NoteTable::loadForItems($items, NoteTable::NOTE_TYPE_ACTIVITY);
$items = array_values($items);
foreach ($items as $key => $item)
{
$items[$key] = Container::getInstance()->getTimelineScheduledItemFactory()::createItem($this->context, $item);
}
$fields = \Bitrix\Crm\Pseudoactivity\WaitEntry::getRecentByOwner(
$this->context->getEntityTypeId(),
$this->context->getEntityId()
);
if (is_array($fields))
{
$items[] = new Wait(
$this->context,
(new Item\Compatible\Model())
->setData($fields)
->setId('WAIT_' . $fields['ID'])
->setIsScheduled(true)
);
}
$this->sortItems($items);
return (new Result())
->setItems($items)
;
}