public function actionUpdate($id, $quantity) { $product = Product::findOne($id); if ($product) { \Yii::$app->cart->update($product, $quantity); $this->redirect(['cart/list']); } else { throw new NotFoundHttpException('The requested page does not exist.'); } }
/** * Finds the Product model based on its primary key value. * If the model is not found, a 404 HTTP exception will be thrown. * @param integer $id * @return Product the loaded model * @throws NotFoundHttpException if the model cannot be found */ protected function findModel($id) { if (($model = Product::findOne($id)) !== null) { return $model; } else { throw new NotFoundHttpException('The requested page does not exist.'); } }
/** * Updates an existing PurchaseOrder model. * If update is successful, the browser will be redirected to the 'view' page. * @param integer $id * @return mixed */ public function actionUpdate($id) { $username = Yii::$app->user->identity->username; if ($model = $this->findModel($id)) { $this->purchase_order_id = $model->id; $old_status = $model->status; if (Yii::$app->request->isPost && $model->update2(Yii::$app->request->post())) { $new_status = $model->status; $details = PurchaseOrderDetail::find()->where(['purchase_order_id' => $model->id])->all(); switch ($old_status) { case PurchaseOrder::STATUS_NEW: case PurchaseOrder::STATUS_PENDING: switch ($new_status) { case PurchaseOrder::STATUS_SUCCESS: foreach ($details as $item) { if ($product = Product::findOne($item->product_id)) { $product->order_quantity -= $item->quantity; $product->sold_quantity += $item->quantity; $product->total_revenue += $item->quantity * $item->unit_price; $product->save(); } } break; case PurchaseOrder::STATUS_REJECT: case PurchaseOrder::STATUS_CANCELLED: case PurchaseOrder::STATUS_FAIL: foreach ($details as $item) { if ($product = Product::findOne($item->product_id)) { $product->order_quantity -= $item->quantity; $product->available_quantity += $item->quantity; $product->save(); } } default: } break; case PurchaseOrder::STATUS_SUCCESS: switch ($new_status) { case PurchaseOrder::STATUS_NEW: case PurchaseOrder::STATUS_PENDING: foreach ($details as $item) { if ($product = Product::findOne($item->product_id)) { $product->sold_quantity -= $item->quantity; $product->order_quantity += $item->quantity; $product->total_revenue -= $item->quantity * $item->unit_price; $product->save(); } } break; case PurchaseOrder::STATUS_REJECT: case PurchaseOrder::STATUS_CANCELLED: case PurchaseOrder::STATUS_FAIL: foreach ($details as $item) { if ($product = Product::findOne($item->product_id)) { $product->sold_quantity -= $item->quantity; $product->available_quantity += $item->quantity; $product->total_revenue -= $item->quantity * $item->unit_price; $product->save(); } } default: } break; case PurchaseOrder::STATUS_REJECT: case PurchaseOrder::STATUS_CANCELLED: case PurchaseOrder::STATUS_FAIL: switch ($new_status) { case PurchaseOrder::STATUS_NEW: case PurchaseOrder::STATUS_PENDING: foreach ($details as $item) { if ($product = Product::findOne($item->product_id)) { $product->available_quantity -= $item->quantity; $product->order_quantity += $item->quantity; $product->save(); } } break; case PurchaseOrder::STATUS_SUCCESS: foreach ($details as $item) { if ($product = Product::findOne($item->product_id)) { $product->available_quantity -= $item->quantity; $product->sold_quantity += $item->quantity; $product->total_revenue += $item->quantity * $item->unit_price; $product->save(); } } default: } break; default: } return $this->goBack(Url::previous()); } else { return $this->render('update', ['username' => $username, 'model' => $model]); } } else { throw new NotFoundHttpException(); } }
public function actionProductRating() { if (Yii::$app->request->isAjax and $rating = Yii::$app->request->post('rating') and $id = Yii::$app->request->post('id')) { if ($product = Product::findOne($id)) { $ip = Yii::$app->request->userIP; $ipModel = Ip::find()->where(['name' => $ip, 'product_id' => $id])->one(); if ($ipModel === null) { $currentRating = $product->rating; $currentRatingCount = $product->rating_count; $resultRating = round(($currentRating + $rating) / 2, 1); $product->rating = $resultRating; $product->rating_count = $currentRatingCount + 1; $product->save(); $model = new Ip(); $model->name = $ip; $model->product_id = $id; $model->save(); return true; } else { return 'forbidden'; // $this->refresh(); } } else { return false; } // return json_encode([$rating, $id]); } else { throw new NotFoundHttpException('The requested page does not exist.'); } }
public function actionEditproduct() { $user = new AdminUser(); if (!$user->checkUserIsLogin()) { $this->redirect(Variable::$home_url); return; } $req = Yii::$app->request; //创建一个请求对象 $form = new ProductForm(); $form->setScenario('update'); $id = trim($req->get('id')); if (!is_numeric($id) || $id == 0) { $this->redirect(Variable::$productManger_url); return; } $productModel = Product::findOne($id); $form->productName = $productModel->productName; $form->productBrief = $productModel->productBrief; $form->productStock = $productModel->productStock; $form->productPrice = $productModel->productPrice; $form->productStatus = $productModel->productStatus; $form->productStock = $productModel->productStock; //修改 if ($form->load($req->post()) && $form->validate()) { $isSuccess = (new Product())->updateProduct($id, $form->productName, $form->productBrief, $form->productStatus, $form->productPrice, $form->productStock); if ($isSuccess) { $form->addError('', '资料更新成功'); } else { $form->addError('', '资料更新失败'); } } return $this->render(Variable::$editProduct_view, ['model' => $form, 'productModel' => $productModel]); }
public function updateProduct($productId, $productName, $productBrief, $productStatus, $productPrice, $productStock) { $model = Product::findOne($productId); if (!$model) { return false; } $model->productName = $productName; $model->productBrief = $productBrief; $model->productStock = intval($productStock); $model->productStatus = $productStatus; switch ($productStatus) { case 0: $model->onSaleTime = date('Y-m-d H:i:s', time()); break; case 1: $model->offSaleTime = date('Y-m-d H:i:s', time()); break; case 2: $model->onSaleTime = date('Y-m-d H:i:s', time()); break; } $model->productPrice = $productPrice; if ($model->save()) { return true; } return false; }