- Модуль: crm
- Путь к файлу: ~/bitrix/modules/crm/lib/controller/status.php
- Класс: Bitrix\Crm\Controller\Status
- Вызов: Status::playActions
protected function playActions(string $statusTypeId, array $actions, &$newStatusList): void
{
$status = new CCrmStatus($statusTypeId);
$isError = false;
if (is_array($actions['delete']))
{
foreach ($actions['delete'] as $info)
{
$deleteResult = StatusTable::delete($info['FIELDS']['ID']);
if (!$deleteResult->isSuccess())
{
$isError = true;
break;
}
}
}
if ($isError)
{
$this->addError(
new Error(
'Unable to delete item.',
self::ERR_ACTION_SET_DELETED_ITEM
)
);
}
if (!$this->getErrors() && is_array($actions['add']))
{
$addIndex = [];
$addIds = [];
foreach ($actions['add'] as $info)
{
$id = $status->Add($info['FIELDS']);
if ($id)
{
$addIndex[$id] = $info['INDEX'];
$addIds[] = $id;
}
else
{
$isError = true;
break;
}
}
if (!$isError && !empty($addIds))
{
$res = StatusTable::getList(
[
'filter' => [
'=ENTITY_ID' => $statusTypeId,
'@ID' => $addIds
],
'select' => ['ID', 'STATUS_ID'],
]
);
while($row = $res->fetch())
{
$newStatusList[$addIndex[$row['ID']]]['ID'] = $row['STATUS_ID'];
}
}
}
if ($isError)
{
$this->addError(
new Error(
'Unable to add item.',
self::ERR_ACTION_SET_ADD_ITEM
)
);
}
if (!$this->getErrors() && is_array($actions['update']))
{
foreach ($actions['update'] as $info)
{
if (!$status->Update($info['ID'], $info['FIELDS']))
{
$isError = true;
break;
}
}
}
if ($isError)
{
$this->addError(
new Error(
'Unable to update item.',
self::ERR_ACTION_SET_UPDATE_ITEM
)
);
}
}