Your IP : 18.216.203.204
<?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();
}
}