Your IP : 18.216.203.204


Current Path : /home/bitrix/ext_www/dev.home-comfort.in.ua/local/classes/Webprofy/
Upload File :
Current File : /home/bitrix/ext_www/dev.home-comfort.in.ua/local/classes/Webprofy/FileStorage.php

<?php
namespace Webprofy;


use Bitrix\Main\Loader;
use Bitrix\Sale\Order;


/**
 * Class FileStorage
 * @package Webprofy
 */
class FileStorage
{
	/**
	 * @param $ID
	 * @param $arOrder
	 * @param $arParams
	 */
	function OnSaleComponentOrderOneStepFinal($ID, &$arOrder, &$arParams){
		Loader::includeModule('iblock');
		Loader::includeModule('sale');

		$saleOrder = Order::load($ID);
		$arItemsID = array();
		$arFiles = array();

		//Проверка товаров без цены
		foreach ($saleOrder->getBasket() as $basketItem){
			if (intval($basketItem->getPrice()) == 0){
				$arItemsID[] = $basketItem->getID();
			}
		}

		//Поиск файлов по id элементов корзины
		if (!empty($arItemsID)){
			$arElements = self::searchElement($arItemsID);
			foreach ($arElements as $arElement) {
				//Скопируем файл, потому что при удалении элемента инфоблока старая ссылка будет недоступна
				$arFiles[] = \CFile::CopyFile($arElement['PROPERTY_FILE_VALUE']);
			}
		}

		//Файлы есть, добавим их к заказу
		if (!empty($arFiles)){
			$personType = $saleOrder->getField('PERSON_TYPE_ID');
			$arProperty = $saleOrder->getPropertyCollection()->getArray();
			foreach ($arProperty['properties'] as $property) {
				if (($property['CODE'] == 'BASKET_FILE') && ($property['PERSON_TYPE_ID'] == $personType)) {
					$propertyID = $property['ID'];
				}
			}

			$arFieldsNew = array(
				"ORDER_ID" => $ID,
				"ORDER_PROPS_ID" => $propertyID,
				"NAME" => "Рецепт",
				"CODE" => "BASKET_FILE",
				"VALUE" => $arFiles
			);
			\CSaleOrderPropsValue::Add($arFieldsNew);

			//Удаление элементов из временного хранилища
			foreach ($arElements as $arElement) {
				\CIBlockElement::Delete($arElement['ID']);
			}
		}
	}

	/**
	 * @param $arItemsID
	 * @return array
	 */
	public static function searchElement($arItemsID)
	{
		Loader::includeModule('iblock');
		$result = array();
		//search element
		$arSelect = array(
			'ID',
			'NAME',
			'PROPERTY_FILE',
			'PROPERTY_BASKET_ITEM_ID'
		);
		$filter = array(
			'PROPERTY_BASKET_ITEM_ID' => $arItemsID,
			"IBLOCK_ID" => FILE_STORAGE_IBLOCK_ID,
		);

		$dbRes = \CIBlockElement::GetList(array(), $filter, false, false, $arSelect);
		while ($res = $dbRes->Fetch()) {
			$result[] = $res;
		}

		return $result;
	}

	/**
	 * @param $elementID
	 * @return array
	 */
	public static function searchByID($elementID)
	{
		Loader::includeModule('iblock');
		$filter = array(
			'ID' => intval($elementID),
			"IBLOCK_ID" => FILE_STORAGE_IBLOCK_ID,
		);
		return \CIBlockElement::GetList(array(), $filter, false, false, array('ID'))->Fetch();
	}

}