Your IP : 216.73.216.86


Current Path : /var/www/homesaver/www/bitrix/modules/sale/lib/cashbox/rest/
Upload File :
Current File : /var/www/homesaver/www/bitrix/modules/sale/lib/cashbox/rest/ofdservice.php

<?php

namespace Bitrix\Sale\Cashbox\Rest;

use Bitrix\Main;
use Bitrix\Sale;
use Bitrix\Rest;

if (!Main\Loader::includeModule('rest'))
{
	return;
}

/**
 *
 */
class OfdService extends RestService
{
	/**
	 * @param $params
	 * @param $page
	 * @param $server
	 * @return array
	 */
	public static function getOfdList($params, $page, $server)
	{
		Sale\Helpers\Rest\AccessChecker::checkAccessPermission();

		return array_keys(self::getOfdHandlersMap());
	}

	/**
	 * @param $params
	 * @param $page
	 * @param $server
	 * @return array|array[]
	 */
	public static function getOfdSettings($params, $page, $server)
	{
		Sale\Helpers\Rest\AccessChecker::checkAccessPermission();
		$params = self::prepareHandlerParams($params, $server);
		self::checkParamsBeforeOfdSettingsGet($params);

		$ofdHandlersMap = self::getOfdHandlersMap();
		/** @var Sale\Cashbox\Ofd $ofdClass */
		$ofdClass = $ofdHandlersMap[$params['OFD']];
		return $ofdClass::getSettings();
	}

	/**
	 * @param array $params
	 * @throws Rest\RestException
	 */
	private static function checkParamsBeforeOfdSettingsGet(array $params)
	{
		if (empty($params['OFD']))
		{
			throw new Rest\RestException('Parameter OFD is not defined', self::ERROR_CHECK_FAILURE);
		}

		$ofdHandlersMap = self::getOfdHandlersMap();
		if (!isset($ofdHandlersMap[$params['OFD']]))
		{
			throw new Rest\RestException('Ofd not found', self::ERROR_CHECK_FAILURE);
		}
	}

	/**
	 * @return array
	 */
	private static function getOfdHandlersMap(): array
	{
		static $result = [];

		if (empty($result))
		{
			$ofdHandlers = array_keys(Sale\Cashbox\Ofd::getHandlerList());
			/** @var Sale\Cashbox\Ofd $handler */
			foreach ($ofdHandlers as $handler)
			{
				$result[$handler::getCode()] = $handler;
			}
		}

		return $result;
	}
}