Example #1
0
 public function run()
 {
     // если находимся в контроллере оформления заказа, то не отображаем корзину.
     if ($this->controller->id == 'offer') {
         return;
     }
     Yii::app()->user->setState("shop_cart", Yii::app()->request->url);
     $products = ShopModule::getProductsFromCookie();
     $this->render('cart', array('showPrice' => Yii::app()->getModule('shop')->showPrice, 'products' => $products));
 }
Example #2
0
 public static function clearProductsFromCookie()
 {
     ShopModule::$_productsCookie = array();
     unset(Yii::app()->request->cookies[self::CART_COOKIE_NAME]);
 }
Example #3
0
 public function actionIndex()
 {
     $offer = BaseActiveRecord::newModel('Offer');
     $offerModelClass = get_class($offer);
     $products = array();
     $transaction = null;
     // собираем данные, пришедшие от клиента
     if (isset($_POST[$offerModelClass])) {
         $offer->attributes = $_POST[$offerModelClass];
         //если данные пришли не аяксом, то стартуем транзакцию
         if (!isset($_POST['ajax'])) {
             Yii::app()->db->setAutoCommit(false);
             $transaction = Yii::app()->db->beginTransaction();
         }
         $products = $this->getProducts();
     }
     // валидация формы ajax
     if (isset($_POST['ajax']) && $_POST['ajax'] === 'offerForm') {
         $validateResult = CActiveForm::validate($offer, null, false);
         //Если валидация формы заказа прошла успешно, то валидируем выбранные товары
         if ($validateResult == '[]') {
             echo CActiveForm::validateTabular($products, null, false);
         } else {
             echo $validateResult;
         }
         Yii::app()->end();
     }
     // сохраняем
     if (isset($_POST[$offerModelClass])) {
         $valid = true;
         foreach ($products as $product) {
             $valid = $product->validate() && $valid;
             if (!$valid) {
                 break;
             }
         }
         if (count($products) == 0) {
             $valid = false;
             $offer->addError('offer_text', 'Для оформления заявки необходимо выбрать хотя бы один товар.');
         }
         if ($valid && $offer->validate()) {
             // Формируем текст заявки:
             foreach ($products as $product) {
                 $offerProduct = BaseActiveRecord::newModel('OfferProduct');
                 //Модель-связь многие-ко-многим м/у заказом и товарами
                 $offerProduct->id_product = $product->id_product;
                 $offerProduct->amount = $product->countInCart;
                 $offer->amount += $product->countInCart * $product->retail_price;
                 $offer->addRelatedRecord('offerProducts', $offerProduct, true);
             }
             $offer->offer_text = $this->renderPartial('/offerText', array('products' => $products), true);
             $offer->onAfterSave = array($this, 'sendMessage');
             $offer->save();
             if ($transaction != null) {
                 $transaction->commit();
             }
             if (Yii::app()->daShop->useOnlinePayment) {
                 $this->pay($offer);
             }
             Yii::app()->user->setFlash('offer-success', 'Спасибо, Ваш заказ успешно отправлен.');
             ShopModule::clearProductsFromCookie();
             $this->redirect(Yii::app()->createUrl(ShopModule::ROUTE_MAIN));
         } else {
             // вообще сюда попадать в штатных ситуациях не должны
             // только если кул хацкер резвится
             Yii::app()->user->setFlash('offer-message', CHtml::errorSummary($offer, '<p>Не удалось отправить заявку</p>'));
         }
     } else {
         $products = ShopModule::getProductsFromCookie();
     }
     $this->render('/offer', array('products' => $products, 'offer' => $offer, 'showPrice' => Yii::app()->getModule('shop')->showPrice));
 }
Example #4
0
<?php

define('MODULE_NAME', 'Shop');
$actions = array('index', 'show');
$action = 'index';
if (isset($_REQUEST['action'])) {
    $action = strtolower($_REQUEST['action']);
    if (!in_array($action, $actions)) {
        $action = 'index';
    }
}
define('ACTION_NAME', $action);
require dirname(__FILE__) . '/core/fanwe.php';
$fanwe =& FanweService::instance();
$fanwe->cache_list[] = 'shops';
$fanwe->initialize();
require fimport('module/shop');
$_FANWE['nav_title'] = lang('common', 'shop');
switch (ACTION_NAME) {
    case 'index':
        ShopModule::index();
        break;
    case 'show':
        ShopModule::show();
        break;
}