public function actionAdd() { $item_id = (int) Yii::$app->request->post('item_id'); $qty = (int) Yii::$app->request->post('qty'); $data = Yii::$app->request->post('data'); $props = Yii::$app->request->post('props'); if ($props) { $tmp = explode(';', $props); $props = []; foreach ($tmp as $v) { $a = explode(':', $v); $props[$a[0]] = $v; } $sku = Sku::find()->where(['item_id' => $item_id, 'props' => Json::encode($props)])->one(); $sku_id = $sku->sku_id; } $shoppingCartModel = new ShoppingCart(); if ($shoppingCartModel->add($sku_id, $qty, $data)) { return Json::encode(['message' => \Yii::t('app', 'add to cart success')]); } else { return Json::encode(['message' => \Yii::t('app', 'add to cart fail')]); } }
public function updateItemStock() { foreach ($this->items as $orderItem) { /** @var \star\catalog\models\Sku $item */ $item = Sku::findOne(['sku_id' => $orderItem->item_id]); $item->quantity = $item->quantity - $orderItem->qty; if (!$item->save()) { throw new Exception('update item fail'); } } }
/** * @param $event CartEvent */ public function validate($event) { //@TODO need to move to cart model the have error message $sku = Sku::find()->where($event->item_id)->one(); if (!$sku) { $event->isValid = false; return; } $item = Item::find()->where($sku->item_id)->one(); if (!$item || intval($event->qty) != $event->qty) { $event->isValid = false; return; } if ($event->qty <= 0) { $event->isValid = false; return; } }
public function getSku() { return $this->hasOne(Sku::className(), ['item_id' => 'item_id']); }
public function actionAjaxSkus() { if (!Yii::$app->request->isAjax && empty($_POST['item_id'])) { return; } $skuModel = Yii::createObject(Sku::className()); $skus = $skuModel::findAll(["item_id" => $_POST["item_id"]]); $data = array(); foreach ($skus as $sku) { $arr = array(); $arr['sku_id'] = $sku->sku_id; $json = JSON::decode($sku->props); $arr['props'] = implode("_", $json); $arr['price'] = $sku->price; $arr['stock'] = $sku->quantity; $arr['outer_id'] = $sku->outer_id; $arr['tag'] = $sku->tag; $data[] = $arr; } echo json_encode($data); }
public function beforeDelete() { if (parent::beforeDelete()) { //delete images and sku ItemImg::deleteAll(['item_id' => $this->item_id]); Sku::deleteAll(['item_id' => $this->item_id]); return true; } else { return false; } }