24 private const ERROR_HANDLER_ALREADY_EXISTS =
'ERROR_HANDLER_ALREADY_EXIST';
25 private const ERROR_HANDLER_NOT_FOUND =
'ERROR_HANDLER_NOT_FOUND';
26 private const ERROR_HANDLER_ADD =
'ERROR_HANDLER_ADD';
27 private const ERROR_HANDLER_UPDATE =
'ERROR_HANDLER_UPDATE';
28 private const ERROR_HANDLER_DELETE =
'ERROR_HANDLER_DELETE';
34 private static function checkParamsBeforeAddHandler(
$params)
38 throw new RestException(
'Parameter CODE is not defined', self::ERROR_CHECK_FAILURE);
43 throw new RestException(
'Parameter NAME is not defined', self::ERROR_CHECK_FAILURE);
48 throw new RestException(
'Parameter SETTINGS is not defined or empty', self::ERROR_CHECK_FAILURE);
51 self::checkHandlerSettingsBeforeAdd(
$params[
'SETTINGS']);
60 throw new RestException(
'Handler already exists!', self::ERROR_HANDLER_ALREADY_EXISTS);
69 private static function checkParamsBeforeUpdateHandler(
$params)
73 throw new RestException(
'Parameter ID is not defined', self::ERROR_CHECK_FAILURE);
83 throw new RestException(
'Handler not found', self::ERROR_HANDLER_NOT_FOUND);
86 if (
$params[
'APP_ID'] && !empty($handler[
'APP_ID']) && $handler[
'APP_ID'] !==
$params[
'APP_ID'])
93 throw new RestException(
'Parameter FIELDS is not defined', self::ERROR_CHECK_FAILURE);
96 if (isset(
$params[
'FIELDS'][
'SETTINGS']))
98 self::checkHandlerSettingsBeforeUpdate(
$params[
'FIELDS'][
'SETTINGS']);
107 private static function checkParamsBeforeDeleteHandler(
$params)
111 throw new RestException(
'Parameter ID is not defined', self::ERROR_CHECK_FAILURE);
121 throw new RestException(
'Handler not found', self::ERROR_HANDLER_NOT_FOUND);
124 if (
$params[
'APP_ID'] && !empty($handler[
'APP_ID']) && $handler[
'APP_ID'] !==
$params[
'APP_ID'])
130 'select' => [
'ID',
'HANDLER',
'SETTINGS'],
132 '=HANDLER' =>
'\\'.CashboxRest::class,
137 while ($cashbox = $cashboxListResult->fetch())
139 if ($cashbox[
'SETTINGS'][
'REST'][
'REST_CODE'] === $handler[
'CODE'])
141 $cashboxIdList[] = $cashbox[
'ID'];
148 'There are cashboxes with this handler: '.implode(
', ', $cashboxIdList),
149 self::ERROR_CHECK_FAILURE
157 private static function checkHandlerSettingsBeforeAdd(
$settings):
void
159 self::checkRequiredSettingsFields(
$settings, [
'PRINT_URL',
'CHECK_URL',
'CONFIG']);
160 self::checkSettingsFieldValues(
$settings, [
'HTTP_VERSION',
'CONFIG']);
166 private static function checkHandlerSettingsBeforeUpdate(
$settings):
void
168 self::checkSettingsFieldValues(
$settings, [
'PRINT_URL',
'CHECK_URL',
'CONFIG',
'HTTP_VERSION']);
176 private static function checkRequiredSettingsFields(
array $settings,
array $requiredFields):
void
178 foreach ($requiredFields as $fieldName)
182 throw new RestException(
'Parameter SETTINGS[' . $fieldName .
'] is not defined', self::ERROR_CHECK_FAILURE);
194 foreach (
$fields as $fieldName)
196 if ($fieldName ===
'HTTP_VERSION' && array_key_exists(
'HTTP_VERSION',
$settings))
200 $version !==
Main\
Web\HttpClient::HTTP_1_0
201 && $version !==
Main\
Web\HttpClient::HTTP_1_1
204 throw new RestException(
'The value of SETTINGS[HTTP_VERSION] is not valid', self::ERROR_CHECK_FAILURE);
207 elseif ($fieldName ===
'CONFIG' && array_key_exists(
'CONFIG',
$settings))
209 self::checkSettingsConfig(
$settings[
'CONFIG']);
213 throw new RestException(
'The value of SETTINGS[' . $fieldName .
'] is not valid', self::ERROR_CHECK_FAILURE);
222 private static function checkSettingsConfig(
array $config):
void
224 foreach (
$config as $group => $block)
226 foreach ($block[
'ITEMS'] as
$code => $item)
234 throw new RestException(
'The config provided in SETTINGS[CONFIG] is not valid', self::ERROR_CHECK_FAILURE);
245 private static function mergeHandlerSettings($cashboxId,
array $newSettings):
array
248 'select' => [
'SETTINGS'],
249 'filter' => [
'=ID' => $cashboxId],
258 $existingSettings =
$dbResult[
'SETTINGS'];
259 if (!$existingSettings)
264 return array_replace_recursive($existingSettings, $newSettings);
277 self::checkParamsBeforeAddHandler(
$params);
279 if (!isset(
$params[
'SETTINGS'][
'SUPPORTS_FFD105']))
281 $params[
'SETTINGS'][
'SUPPORTS_FFD105'] =
'N';
287 'SORT' =>
$params[
'SORT'] ?: 100,
288 'SETTINGS' =>
$params[
'SETTINGS'],
312 self::checkParamsBeforeUpdateHandler(
$params);
314 $handlerFields =
$params[
'FIELDS'];
315 if ($handlerFields[
'SETTINGS'])
317 $handlerFields[
'SETTINGS'] = self::mergeHandlerSettings(
$params[
'ID'], $handlerFields[
'SETTINGS']);
339 self::checkParamsBeforeDeleteHandler(
$params);
361 'select' => [
'ID',
'NAME',
'CODE',
'SORT',
'SETTINGS'],
363 while ($item =
$dbRes->fetch())
static includeModule($moduleName)
static getList(array $parameters=array())
static update($primary, array $data)
if( $daysToExpire >=0 &&$daysToExpire< 60 elseif)( $daysToExpire< 0)