public static function getCurrentCart() { if (($cart = self::findOne(['customer_id' => \Yii::$app->user->identity->id, 'status' => self::CART_PENDING])) !== null) { $cart->cleanUp(); return $cart; } $cart = new Cart(); $cart->customer_id = \Yii::$app->user->identity->id; $cart->session_id = session_id(); $cart->created = date('Y-m-d H:i:s'); $cart->status = self::CART_PENDING; $cart->save(); return $cart; }
public function actionAjaxAdd() { Yii::$app->response->format = Response::FORMAT_JSON; $request = Yii::$app->request; $id = $request->get('id'); $color = $request->get('color'); $size = $request->get('size'); $number = $request->get('num'); $model = Product::findOne($id); if (!Yii::$app->session->isActive) { Yii::$app->session->open(); } $cart = new Cart(); $cart->session_id = Yii::$app->session->id; $cart->user_id = Yii::$app->user->isGuest ? 0 : Yii::$app->user->id; $cart->product_id = $id; $cart->name = $model->name; $cart->color = $color; $cart->size = $size; $cart->number = $number; $cart->price = $model->price; if ($cart->save()) { return ['status' => 1, 'productId' => $id, 'size' => $size, 'color' => $color]; } else { return ['status' => -2, 'productId' => $id, 'size' => $size, 'color' => $color]; } }
public function actionAddToCart($productId, $quantity) { if (isset(Yii::$app->user->id)) { $cart = Cart::findOne(['user_id' => Yii::$app->user->id, 'status' => 'CREATED']); if ($cart) { $productCart = ProductsCart::findOne(['cart_id' => $cart->id, 'product_id' => $productId]); if ($productCart) { $productCart->quantity += $quantity; } else { $productCart = new ProductsCart(); $productCart->cart_id = $cart->id; $productCart->product_id = $productId; $productCart->quantity = $quantity; } $productCart->save(); } else { $cart = new Cart(); $cart->user_id = Yii::$app->user->id; $cart->status = 'CREATED'; $cart->creation_date = date('Y-m-d H:i:s'); if ($cart->save()) { $productCart = new ProductsCart(); $productCart->cart_id = $cart->id; $productCart->product_id = $productId; $productCart->quantity = $quantity; $productCart->save(); } } } else { $cart = Yii::$app->session['cart']; if (isset($cart[$productId])) { $cart[$productId] += intval($quantity); } else { $cart[$productId] = intval($quantity); } Yii::$app->session['cart'] = $cart; } $this->actionLoadCart(); }
public static function new($user_id = null) { $cart = new Cart(['user_id' => $user_id]); $cart->save(); return $cart; }