/**
  * @param Request $request
  * @return mixed
  */
 public function finish(Request $request)
 {
     /**
      * @var $cart Cart
      */
     $cart = Session::get('cart');
     $order_id = null;
     /**
      * @var $last_order Orders
      */
     $last_order = Orders::whereNotNull('id')->orderBy('updated_at', 'desc')->first();
     if ($last_order == Null) {
         $order_id = 1;
     } else {
         $order_id = $last_order->order_id + 1;
     }
     $sum = 0;
     foreach ($cart->getCart() as $product_id => $quantity) {
         $product = Products::where('id', $product_id)->first();
         if ($product->quantity < $quantity) {
             return redirect('/cart/index')->withErrors('We are sorry, the product ' . $product->name . ' has only ' . $product->quantity . ' examples');
         } else {
             $product->quantity -= $quantity;
             if ($product->quantity == 0) {
                 $product->active = 0;
             }
             $product->save();
         }
         $sum += $product->price * $quantity;
         $order = new Orders();
         $order->order_id = $order_id;
         $order->product_id = $product_id;
         $order->quantity = $quantity;
         $order->author_id = $request->user()->id;
         $order->sum = $sum;
         $order->save();
         Session::forget('cart');
         Session::put('cart', new Cart());
     }
     return redirect('/')->withMessage('Order processed successfully');
 }