• Модуль: sale
  • Путь к файлу: ~/bitrix/modules/sale/lib/delivery/rest/requestservice.php
  • Класс: BitrixSaleDeliveryRestRequestService
  • Вызов: RequestService::getMessage
static function getMessage(array $params, string $key): RequestsMessageMessage
{
	if (
		!isset($params[$key])
		|| !is_array($params[$key])
		|| (
			(!is_string($params[$key]['SUBJECT']) || empty($params[$key]['SUBJECT']))
			&& (!is_string($params[$key]['BODY']) || empty($params[$key]['BODY']))
		)
	)
	{
		throw new RestException(
			sprintf('Parameter %s is not specified', $key),
			self::ERROR_CODE_MESSAGE_NOT_SPECIFIED
		);
	}

	$message = new RequestsMessageMessage();

	if (!empty($params[$key]['SUBJECT']))
	{
		$message->setSubject($params[$key]['SUBJECT']);
	}
	if (!empty($params[$key]['BODY']))
	{
		$message->setBody($params[$key]['BODY']);
	}

	if (isset($params[$key]['MONEY_VALUES']) && is_array($params[$key]['MONEY_VALUES']))
	{
		foreach ($params[$key]['MONEY_VALUES'] as $key => $moneyValue)
		{
			$message->addMoneyValue(
				(string)$key,
				(float)$moneyValue
			);
		}
	}

	if (isset($params[$key]['DATE_VALUES']) && is_array($params[$key]['DATE_VALUES']))
	{
		foreach ($params[$key]['DATE_VALUES'] as $key => $dateValue)
		{
			if (!isset($dateValue['VALUE']) || !isset($dateValue['FORMAT']))
			{
				throw new RestException(
					'Unexpected date value format',
					self::ERROR_CODE_DATE_VALUE_UNEXPECTED_FORMAT
				);
			}

			$message->addDateValue(
				(string)$key,
				(int)$dateValue['VALUE'],
				(string)$dateValue['FORMAT']
			);
		}
	}

	if (isset($params[$key]['STATUS']))
	{
		if (!is_string($params[$key]['STATUS']['MESSAGE']) || empty($params[$key]['STATUS']['MESSAGE']))
		{
			throw new RestException(
				'Status message is not specified',
				self::ERROR_CODE_MESSAGE_STATUS_NOT_SPECIFIED
			);
		}

		if (!is_string($params[$key]['STATUS']['SEMANTIC']) || empty($params['MESSAGE']['STATUS']['SEMANTIC']))
		{
			throw new RestException(
				'Message status semantic is not specified',
				self::ERROR_CODE_MESSAGE_STATUS_SEMANTIC_NOT_SPECIFIED
			);
		}

		if (!in_array($params[$key]['STATUS']['SEMANTIC'], RequestsMessageStatus::getAvailableSemantics(), true))
		{
			throw new RestException(
				sprintf('Unexpected message status semantic: %s', $params['MESSAGE']['STATUS']['SEMANTIC']),
				self::ERROR_CODE_UNEXPECTED_MESSAGE_STATUS_SEMANTIC
			);
		}

		$message->setStatus(
			new RequestsMessageStatus(
				$params[$key]['STATUS']['MESSAGE'],
				$params[$key]['STATUS']['SEMANTIC']
			)
		);
	}

	return $message;
}