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