* @license https://opensource.org/licenses/MIT MIT License * @link http://www.retailcrm.ru/docs/Developers/ApiVersion5 */ namespace RetailCrm\Methods\V4; use RetailCrm\Methods\V3\Stores as Previous; /** * PHP version 5.4 * * TaskTrait class * * @category RetailCrm * @package RetailCrm * @author RetailCrm * @license https://opensource.org/licenses/MIT MIT License * @link http://www.retailcrm.ru/docs/Developers/ApiVersion5 */ trait Stores { use Previous; /** * Get store settings * * @param string $code get settings code * * @return \RetailCrm\Response\ApiResponse * @throws \RetailCrm\Exception\InvalidJsonException * @throws \RetailCrm\Exception\CurlException * @throws \InvalidArgumentException * * @return \RetailCrm\Response\ApiResponse */ public function storeSettingsGet($code) { if (empty($code)) { throw new \InvalidArgumentException('Parameter `code` must be set'); } return $this->client->makeRequest( "/store/setting/$code", "GET" ); } /** * Edit store configuration * * @param array $configuration * * @throws \RetailCrm\Exception\InvalidJsonException * @throws \RetailCrm\Exception\CurlException * @throws \InvalidArgumentException * * @return \RetailCrm\Response\ApiResponse */ public function storeSettingsEdit(array $configuration) { if (!count($configuration) || empty($configuration['code'])) { throw new \InvalidArgumentException( 'Parameter `configuration` must contains a data & configuration `code` must be set' ); } return $this->client->makeRequest( sprintf('/store/setting/%s/edit', $configuration['code']), "POST", ['configuration' => json_encode($configuration)] ); } /** * Upload store prices * * @param array $prices prices data * @param string $site default: null) * * @throws \InvalidArgumentException * @throws \RetailCrm\Exception\CurlException * @throws \RetailCrm\Exception\InvalidJsonException * * @return \RetailCrm\Response\ApiResponse */ public function storePricesUpload(array $prices, $site = null) { if (!count($prices)) { throw new \InvalidArgumentException( 'Parameter `prices` must contains array of the prices' ); } return $this->client->makeRequest( '/store/prices/upload', "POST", $this->fillSite($site, ['prices' => json_encode($prices)]) ); } /** * Get products * * @param array $filter (default: array()) * @param int $page (default: null) * @param int $limit (default: null) * * @throws \InvalidArgumentException * @throws \RetailCrm\Exception\CurlException * @throws \RetailCrm\Exception\InvalidJsonException * * @return \RetailCrm\Response\ApiResponse */ public function storeProducts(array $filter = [], $page = null, $limit = null) { $parameters = []; if (count($filter)) { $parameters['filter'] = $filter; } if (null !== $page) { $parameters['page'] = (int) $page; } if (null !== $limit) { $parameters['limit'] = (int) $limit; } return $this->client->makeRequest( '/store/products', "GET", $parameters ); } }