Esempio n. 1
0
 public function actionCheckout()
 {
     $this->layout = 'layouts';
     if (Yii::$app->user->isGuest) {
         $this->redirect(Url::toRoute(['photobooks/not-found']));
         return;
     }
     $ref = Yii::$app->request->get('ref');
     $id = Yii::$app->request->get('id');
     $back = Yii::$app->request->get('back', 'index');
     $user_id = Yii::$app->user->identity->getId();
     $user = User::findOne(['id' => Yii::$app->user->identity->getId()]);
     $course = CurrencyConvertor::getCurse($user->default_currency);
     if (!empty($ref) && !empty($id)) {
         $user_id = AlphaId::id($ref, true);
         $pb_id = AlphaId::id($id, true);
         $model = new PhotobookForm();
         if (!$model->loadById($pb_id)) {
             Yii::$app->getSession()->setFlash('error', Yii::t('app', 'Фотокнига не найдена'));
             $this->redirect(Url::toRoute(['photobooks/not-found']));
             return;
         }
         $pages = $model->data['pages'];
         $print_count = 0;
         foreach ($pages as $key => $page) {
             if ($key == 0 || $key == count($pages) - 1) {
                 continue;
             }
             if ($page['action'] == 'print') {
                 $print_count++;
             }
         }
         $rows = CartForm::getUserCart($user_id);
         $selected_row = null;
         foreach ($rows as $key => $row) {
             if ($row->product_type == Cart::PRODUCT_PHOTOBOOK) {
                 $row->product_info = json_decode($row->product_info, true);
                 if (!empty($row->product_info) && !empty($row->product_info['Photobook']) && $row->product_info['Photobook']['id'] == $pb_id) {
                     $selected_row = $row;
                 }
             }
         }
         $productInfo = $model->getProductInfo();
         if (!empty($productInfo['error'])) {
             Yii::$app->getSession()->setFlash('error', $productInfo['error']['msg']);
             $this->redirect(Url::toRoute(['photobooks/index']));
             return;
         }
         $productInfo = $productInfo['response'];
         $cartForm = new CartForm();
         if ($selected_row) {
             $cartForm->loadById($selected_row->id);
         } else {
             $cartForm->quantity = 1;
             $cartForm->user_id = $user_id;
         }
         $cartForm->product_type = Cart::PRODUCT_PHOTOBOOK;
         $cartForm->title = $productInfo['text_info'];
         $cartForm->price = $productInfo['price'];
         if ($cartForm->quantity <= 0) {
             $cartForm->quantity = 1;
         }
         $cartForm->sub_total = $cartForm->price * $cartForm->quantity;
         $cartForm->product_info = ['Photobook' => ['id' => $pb_id]];
         if (!$model->setStatus(Photobook::STATUS_READY_FOR_PRINT_WAIT_PAYMENT)) {
             //Под вопросом остановка скрипта
         }
         if (!$cartForm->save()) {
             Yii::$app->getSession()->setFlash('error', "Не удалось записать в базу данных");
             $this->redirect(Url::toRoute(['photobooks/index']));
             return;
         } else {
             $this->redirect(Url::toRoute(['photobooks/checkout']));
             return;
         }
     }
     $cart_rows = CartForm::getUserCart($user_id);
     return $this->render('checkout', ['user_id' => $user_id, 'cart_rows' => $cart_rows, 'course' => $course, 'default_currency' => $user->default_currency, 'back' => $back]);
     /* {
     
                 Yii::$app->getSession()->setFlash('error', Yii::t('app', 'Фотокнига не найдена'));
                 $this->redirect(Url::toRoute(['photobooks/index']));
             }*/
 }
 public function actionUpdateCartQuantity()
 {
     \Yii::$app->response->format = \yii\web\Response::FORMAT_JSON;
     if (Yii::$app->user->isGuest) {
         return ['error' => ['msg' => Yii::t('app', 'Доступ закрыт')]];
     }
     $cart_id = Yii::$app->request->get('id', 0);
     $quantity = Yii::$app->request->post('quantity', 0);
     if ($quantity <= 0) {
         return ['error' => ['msg' => Yii::t('app', 'Количчество должно быть больше 0')]];
     }
     if ($cart_id <= 0) {
         return ['error' => ['msg' => Yii::t('app', 'Не верный id')]];
     }
     $carForm = new CartForm();
     if (!$carForm->loadById($cart_id)) {
         return ['error' => ['msg' => Yii::t('app', 'Запись не найдена')]];
     }
     if (Yii::$app->user->identity->role != User::ROLE_ADMIN) {
         if ($carForm->user_id != Yii::$app->user->identity->getId()) {
             return ['error' => ['msg' => Yii::t('app', 'Ошибка прав доступа')]];
         }
     }
     $carForm->quantity = intval($quantity);
     if (!$carForm->save()) {
         return ['error' => ['msg' => Yii::t('app', 'Не удалось сохранить в базу данных')]];
     }
     return ['response' => ['status' => true, 'sub_total' => $carForm->price * $carForm->quantity]];
 }