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