- Модуль: crm
- Путь к файлу: ~/bitrix/modules/crm/lib/controller/activity/configurable.php
- Класс: Bitrix\Crm\Controller\Activity\Configurable
- Вызов: Configurable::validateFields
private function validateFields(?array $fields): Result
{
$result = new Result();
$allowedBooleanValues = array_merge(
self::VALID_TRUE_VALUES,
self::VALID_FALSE_VALUES
);
if (isset($fields['completed']) && !in_array($fields['completed'], $allowedBooleanValues, true))
{
$this->addWrongFieldValueError('completed', $result);
}
if (isset($fields['isIncomingChannel']) && !in_array($fields['isIncomingChannel'], $allowedBooleanValues, true))
{
$this->addWrongFieldValueError('isIncomingChannel', $result);
}
if (isset($fields['isIncomingChannel']) && isset($fields['deadline']) && !empty($fields['deadline']) && $this->castToBool($fields['isIncomingChannel']))
{
$result->addError(new Error(
(string)Loc::getMessage('CRM_CONFIGURABLE_REST_APP_INCOMING_NO_DEADLINE'),
'INCOMING_ACTIVITY_CAN_NOT_BE_WITH_DEADLINE'
));
}
if (isset($fields['pingOffsets']))
{
if (!is_array($fields['pingOffsets']))
{
$this->addWrongFieldValueError('pingOffsets', $result);
}
else
{
foreach ($fields['pingOffsets'] as $index => $pingOffsetValue)
{
if (!is_scalar($pingOffsetValue) || (int)$pingOffsetValue < 0)
{
$this->addWrongFieldValueError("pingOffsets[$index]", $result);
}
}
}
}
if (isset($fields['responsibleId']) && (int)$fields['responsibleId'] <= 0)
{
$this->addWrongFieldValueError('responsibleId', $result);
}
if (
isset($fields['badgeCode'])
&& $fields['badgeCode'] !== ''
&& !\Bitrix\Crm\Badge\Model\CustomBadgeTable::query()
->setSelect(['ID'])
->where('CODE', (string)$fields['badgeCode'])
->setLimit(1)
->fetch()
)
{
$this->addWrongFieldValueError('badgeCode', $result);
}
return $result;
}