Пример #1
0
 public function actionOrder()
 {
     $order = new Order();
     /* @var $cart ShoppingCart */
     $cart = \Yii::$app->cart;
     /* @var $products Product[] */
     $products = $cart->getPositions();
     $total = $cart->getCost();
     // echo var_dump($order->errors). "<br>";
     // echo var_dump($order->validate()). "<br>";
     // die('fdf');
     if ($total === 0) {
         \Yii::$app->session->addFlash('info', 'У вас корзина пуста.');
     }
     if ($order->load(\Yii::$app->request->post()) && $order->validate() && $total) {
         $transaction = $order->getDb()->beginTransaction();
         $order->total_price = $total;
         $order->save(false);
         foreach ($products as $product) {
             $orderItem = new OrderItem();
             $orderItem->order_id = $order->id;
             $orderItem->title = $product->title;
             $orderItem->price = $product->getPrice();
             $orderItem->product_id = $product->id;
             $orderItem->quantity = $product->getQuantity();
             if (!$orderItem->save(false)) {
                 $transaction->rollBack();
                 \Yii::$app->session->addFlash('error', 'Не можете оформить заказ. Пожалуйста свяжитесь с нами.');
                 return $this->redirect('catalog/list');
             }
         }
         $transaction->commit();
         \Yii::$app->cart->removeAll();
         $order->sendEmail('Новый Заказ', 'order');
         \Yii::$app->session->addFlash('success', 'Спасибо за ваш заказ. Мы свяжемся с Вами в ближайшее время.');
         return $this->goHome();
         // return $this->redirect('catalog/list');
     }
     return $this->render('order', ['order' => $order, 'products' => $products, 'total' => $total]);
 }
Пример #2
0
 /**
  * @return \yii\db\ActiveQuery
  */
 public function getOrderItems()
 {
     return $this->hasMany(OrderItem::className(), ['order_id' => 'id']);
 }