Your IP : 3.147.43.16
<?
use Webprofy\Offersgroup\Conflicts;
use Webprofy\Offersgroup\Message;
use Webprofy\Offersgroup\OffersGroupMain;
use Webprofy\Offersgroup\PropertiesMain;
use Webprofy\Offersgroup\TempTable;
require_once($_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/main/include/prolog_admin_before.php");
Bitrix\Main\Loader::includeModule('webprofy.offersgroup');
if (!$_POST) {
return false;
}
if (!$_POST['next']) {
if (TempTable::getCount() > 0 && TempTable::checkLock()) {
return Message::sendOneMessage('block');
}
$groupID = intval($_POST['groupID']);
$price = intval($_POST['price']);
//Свойства текущей группы
$arProperty = OffersGroupMain::getPropertiesID($groupID, true);
//Товары текущей группы
$arProducts = PropertiesMain::getProductsByGroup($groupID);
//Проверка на конфликты, по группе товарам и свойствам
$arConflicts = Conflicts::isConflict($groupID, $arProducts, $arProperty);
//Если есть конфликты то выход
if (!empty($arConflicts)) {
return Message::sendGroupMessage(array('conflicts' => true));
}
//Обновим цену у группы
OffersGroupMain::updateGroupPrice($groupID, $price);
//Генерация предложений по набору свойств, с записью в темповую таблицу
$generator = new \Webprofy\Offersgroup\Combination(true);
$arPropertySort = $generator->sort($arProperty);
//Количество сгенерированных предложений * количество товаров
$_SESSION['WP_OFFERS']['COMBINATION_COUNT'] = $generator->generate($arPropertySort) * count($arProducts);
//Группа
$_SESSION['WP_OFFERS']['GROUP_ID'] = $groupID;
//Цена
$_SESSION['WP_OFFERS']['PRICE'] = $price;
//Выбранные товары
$_SESSION['WP_OFFERS']['PRODUCTS'] = $arProducts;
//Обнулим количество добавляемых элементов
$_SESSION['WP_OFFERS']['UPDATED'] = 0;
$_SESSION['WP_OFFERS']['SKIP'] = 0;
$_SESSION['WP_OFFERS']['START_TIME'] = date('d.m.Y H:i:s');
//Все переменные инициализированы, можно вернуть ответ
return Message::showStep(true);
} else {
//Обработаем пачку Комбинаций для текущих продуктов - установим цену
$result = PropertiesMain::updateOffers($_SESSION['WP_OFFERS']['PRODUCTS'], $_SESSION['WP_OFFERS']['PRICE']);
if (!empty($result)) {
if (count($result['updated']) > 0) {
$_SESSION['WP_OFFERS']['UPDATED'] += count($result['updated']);
}
if (count($result['skip']) > 0) {
$_SESSION['WP_OFFERS']['SKIP'] += count($result['skip']);
}
$progressValue = $_SESSION['WP_OFFERS']['UPDATED'] + $_SESSION['WP_OFFERS']['SKIP'];
if (!$result['end']) {
$progress = new \CAdminMessage(array(
'PROGRESS_WIDTH' => 600,
'PROGRESS_TOTAL' => $_SESSION['WP_OFFERS']['COMBINATION_COUNT'],
'PROGRESS_VALUE' => $progressValue,
"HTML" => true
));
return Message::showStep(true, $progress->_getProgressHtml());
} else {
$resultResponse['productsName'] = implode(', ', $result['productsName']);
$resultResponse['updated'] = $_SESSION['WP_OFFERS']['UPDATED'];
$resultResponse['time_start'] = $_SESSION['WP_OFFERS']['START_TIME'];
$resultResponse['time_end'] = date('d.m.Y H:i:s');
$groupID = $_SESSION['WP_OFFERS']['GROUP_ID'];
unset($_SESSION['WP_OFFERS']);
return Message::sendGroupMessage(array($groupID => $resultResponse), true);
}
}
echo json_encode('result is empty'); return;
}