Your IP : 3.147.43.16


Current Path : /home/bitrix/ext_www/rk_shared_core/bitrix/admin/
Upload File :
Current File : /home/bitrix/ext_www/rk_shared_core/bitrix/admin/offersgroup_setPrice.php

<?
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;
}