public function getIndex() { return DB::transaction(function () { if (count(Cart::getContent()) != 0) { $sale = new Sale(); $sale->client_id = Auth::user()->id; $sale->user_id = Auth::user()->id; $sale->branch_id = 1; $sale->save(); $total = 0; foreach (Cart::getContent() as $cartProduct) { /** @var Product $product */ $product = Product::findOrFail($cartProduct->id); /** @var BranchProduct $branchProduct */ $branchProduct = $product->BranchProduct->first(); $sale->products()->attach($product->id, ['quantity' => $cartProduct->quantity, 'price' => $branchProduct->price]); $total += $cartProduct->quantity * $branchProduct->price; $pivot = $product->branches()->first()->pivot; $pivot->stock -= $cartProduct->quantity; $pivot->update(); } $sale->total = $total; $sale->update(); Cart::clear(); return ['success' => true]; } else { return ['success' => false]; } }); }
public function getDecrease(Request $request, $product_id) { /** @var BranchProduct $pivot */ $pivot = Product::find($product_id)->branches()->first()->pivot; $pivot->stock--; $pivot->update(); return redirect()->back(); }
public function getIndex(Request $request) { $category_id = $request->input('category_id'); $category = ''; $products = Product::search($request->input('search')); if ($category_id) { $category = Category::find($category_id); if ($category) { $category = $category->name; } $products->whereCategoryId($category_id); } $products->with(['branches' => function ($query) { $query->whereId(1); }, 'category']); $products = $products->get(); return $products; }
public function postIndex(Request $request, $id, $quantity) { /** @var Product $product */ $product = Product::findOrFail($id); $productInCart = Cart::get($id); /** @var BranchProduct $branchProduct */ $branchProduct = $product->branchProduct->first(); if ($productInCart) { $myquantity = $productInCart->quantity + $quantity; } else { $myquantity = $quantity; } if ($myquantity <= $branchProduct->stock) { Cart::add(['id' => $product->id, 'name' => $product->name, 'price' => $branchProduct->price, 'quantity' => $quantity, 'attributes' => []]); return ['success' => true]; } else { return ['success' => false]; } }