public function buy()
 {
     $totalSum = 0;
     $cart = Session::get('cart');
     $this->product->startTran();
     $productsFromCart = $this->getProductsFromCart($cart);
     foreach ($productsFromCart as $item) {
         if ($this->product->changeQuantity($item['id'], $item['cart_quantity']) !== 1) {
             $this->product->rollback();
             Session::setError('not enough available product');
             Redirect::back();
         }
         $totalSum += $item['price'] * $item['cart_quantity'];
     }
     $user = new User();
     if ($user->changeUserCash(Auth::getUserId(), $totalSum) !== 1) {
         $this->product->rollback();
         Session::setError('not enough money');
         Redirect::back();
     }
     foreach ($productsFromCart as $item) {
         if ($user->addProduct(Auth::getUserId(), $item['id'], $item['cart_quantity'], $item['price']) !== 1) {
             $this->product->rollback();
             Session::setError('something went wrong');
             Redirect::back();
         }
     }
     $this->product->commit();
     Session::remove('cart');
     Session::setMessage('Done');
     Redirect::to('user/cart');
 }