Example #1
0
 public function testCheckoutFromOrder()
 {
     $list = new ProductList();
     $cart = new Cart($list);
     $checkout = $cart->checkOut();
     $this->assertInstanceOf('App\\Order', $checkout);
 }
 public function getAddress($number, Cart $cart)
 {
     if (!($shipment = $cart->getShipment($number))) {
         // unknown shipment, start over
         return redirect('cart/shipment');
     }
     return view('cart.shipment.address');
 }
 /**
  * @return Cart
  */
 protected function getCart()
 {
     $cart = Cart::where('user_id', Auth::user()->id)->first();
     if (!$cart) {
         $cart = new Cart();
         $cart->user_id = Auth::user()->id;
         $cart->save();
         return $cart;
     }
     return $cart;
 }
Example #4
0
 public function showCart()
 {
     $cart = Cart::where('user_id', Auth::user()->id)->first();
     if (!$cart) {
         $cart = new Cart();
         $cart->user_id = Auth::user()->id;
         $cart->save();
     }
     $items = $cart->cartItems;
     $total = 0;
     foreach ($items as $item) {
         $total += $item->product->price;
     }
     return view('cart.view', ['items' => $items, 'total' => $total]);
 }
Example #5
0
 public function store($id)
 {
     /*Стирает все данные из сессии*/
     //  session()->flush();
     /*
      * Если в сессии есть ключ product:
          * 1)Записываем в переменную currentCount количество конкретного продукта в корзине
          * 2)Добавляем +1 в этому числу через метод setCount
          * 3)Теперь удаляем это значение из сессии
          * 4)Берем новое значение количества товара
          * 5)Записываем новые данные в сессиию
     
        Если ключа нет:
            1)Берем  количество с переменной count (1 товар)
            2)Записываем данные в сессию
     */
     if (session()->has('products.' . $id)) {
         $currentCount = session()->get('products.' . $id);
         //  dd($currentCount);
         $count = Cart::setCount($currentCount);
         session()->pull('products.' . $id, $count);
         $count = Cart::$count;
         session()->put('products.' . $id, $count);
         //  dd($currentCount);
     } else {
         $count = Cart::getCount();
         session()->put('products.' . $id, $count);
     }
     return session()->all();
 }
 public function checkout(Request $request)
 {
     $token = $request->input('stripeToken');
     //Retriieve cart information
     $cart = Cart::where('user_id', Auth::user()->id)->first();
     $items = $cart->cartItems;
     $total = 0;
     foreach ($items as $item) {
         $total += $item->product->price;
     }
     if (Auth::user()->charge($total * 100, ['source' => $token, 'receipt_email' => Auth::user()->email])) {
         $order = new Order();
         $order->total_paid = $total;
         $order->user_id = Auth::user()->id;
         $order->save();
         foreach ($items as $item) {
             $orderItem = new OrderItem();
             $orderItem->order_id = $order->id;
             $orderItem->product_id = $item->product->id;
             $orderItem->file_id = $item->product->file->id;
             $orderItem->save();
             CartItem::destroy($item->id);
         }
         return redirect('/order/' . $order->id);
     } else {
         return redirect('/cart');
     }
 }
 public function postOrder()
 {
     $member_id = \Auth::user()->id;
     $address = \Request::get('address');
     $books_in_cart = \App\Cart::with('books')->where('member_id', '=', $member_id)->get();
     $cart_total = \App\Cart::with('books')->where('member_id', '=', $member_id)->sum('total');
     $order = \App\Order::create(['member_id' => $member_id, 'address' => $address, 'total' => $cart_total, 'created_at' => \Carbon\Carbon::now()]);
     $message = [];
     foreach ($books_in_cart as $cart_item) {
         // dobavlenie v pivot
         $order->orderItems()->attach($cart_item->book_id, ['amount' => $cart_item->amount, 'price' => $cart_item->books->price, 'total' => $cart_item->books->price * $cart_item->amount]);
         array_push($message, $cart_item);
     }
     // dd($books_in_cart[0]->books->title);
     // $to = '*****@*****.**';
     // $subject = 'Tema';
     // mail($to, $subject, implode($message));
     // dd($message);
     \Mail::send('emails.order', ['cart' => $message, 'order' => $order], function ($msg) {
         //  and a copy to users
         $msg->to(['*****@*****.**', \Auth::user()->email])->subject('Order');
     });
     //Udalyaem iz korziny vse Posle uspeshnogo dobavleniya v book_order
     //To est sozdaniya zakaza i dobavleniya ego v PIVOT
     \App\Cart::where('member_id', '=', $member_id)->delete();
     return \Redirect::to('index')->with('message', 'Your order successfully added');
 }
 public function postLogin(Request $request)
 {
     $email = $request->input('email');
     $password = $request->input('password');
     $user = User::where('email', $email)->first();
     if ($user == NULL) {
         return view('auth.login')->withErrors('Email has not been found');
     }
     $cart = new Cart();
     $dictionary = $user->dictionary;
     //        var_dump($dictionary);
     //        die();
     if (strlen($dictionary != 0)) {
         for ($i = 0; $i < strlen($dictionary) - 1; $i += 2) {
             //                var_dump($i);
             $key = $dictionary[$i];
             $i += 2;
             $value = $dictionary[$i];
             $cart->addNewProduct($key);
             $cart->setQuantity($key, $value);
         }
     }
     $cart->setOwnerId($user->id);
     Session::put('cart', $cart);
     if (Hash::check($password, $user->password)) {
         Auth::login($user);
         return redirect('/')->withMessage('Logged in successfully');
     } else {
         return view('auth.login')->withErrors('wrong password');
     }
 }
Example #9
0
 public function calculate()
 {
     $user = Auth::user();
     $cart = Cart::where('user_id', '=', $user->id)->where('status', '=', 'pending')->first();
     $invoice = new Invoice();
     if (!empty($cart)) {
         $total = 0;
         foreach ($cart->Product as $order) {
             $product = $order->Product;
             if ($product->special_price > 0 && $product->special_price < $product->price) {
                 $total += $product->special_price * $order->quanlity;
             } else {
                 $total += $product->price * $order->quanlity;
             }
         }
         $invoice->cart_id = $cart->id;
         $invoice->total = $total;
         $invoice->user_id = Auth::user()->id;
         $invoice->status = 'pending';
         $invoice->save();
         $cart->status = 'confirm';
         $cart->save();
         return redirect('checkout/calculate/success');
     } else {
         return redirect('/');
     }
 }
 /**
  * Setups test data.
  */
 public function setUp()
 {
     parent::setUp();
     $this->user = factory('App\\User')->create(['password' => Hash::make('laravel-shop')]);
     Auth::attempt(['email' => $this->user->email, 'password' => 'laravel-shop']);
     $this->cart = App\Cart::current()->add(['price' => 9.99, 'sku' => str_random(15)]);
 }
Example #11
0
 public static function unsetCart()
 {
     $key = \Request::cookie('shoppingCart');
     $cart = \App\Cart::where('key', $key)->first();
     $cookie = \Cookie::forget('shoppingCart');
     $cart->delete();
     return $cookie;
 }
 public function deleteFromCart()
 {
     $member_id = \Auth::user()->id;
     $book_id = \Request::get('book');
     $cart_id = \Request::get('cart');
     \App\Cart::where('member_id', '=', $member_id)->where('id', '=', $cart_id)->delete();
     return \Redirect::route('cart');
 }
Example #13
0
 public function showCart()
 {
     // displays current items a user currently has in their cart
     $cart = Cart::where('user_id', Auth::user()->id)->first();
     // A new cart is generated if a user has not got one, but accesses the showCart url.
     if (!$cart) {
         $cart = new Cart();
         $cart->user_id = Auth::user()->id;
         $cart->save();
     }
     // Runs a loop that infers for every item bought, the total value will be increased by that price.
     $items = $cart->cartItems;
     $total = 0;
     foreach ($items as $item) {
         $total += $item->movie->price;
     }
     return view('cart.show', ['items' => $items, 'total' => $total]);
 }
 /**
  * Remove the specified resource from storage.
  *
  * @param  int  $id
  * @return \Illuminate\Http\Response
  */
 public function destroy($id)
 {
     $cart = Cart::find($id);
     if ($cart) {
         $id = $cart['id'];
         $name = $cart['name'];
         $cart->delete();
         return redirect()->route('admin_cart')->with('message', 'تم حذف طلب الشراء رقم ' . $id . ' باسم "' . $name . '" بنجاح!')->with('alert-class', 'alert-warning');
     }
 }
Example #15
0
 public static function saveOrder()
 {
     $cartCollection = \Cart::getContent();
     $order = new self();
     $order->user_id = \Session::get('user_id');
     $order->data = $cartCollection->toJson();
     $order->save();
     \Cart::clear();
     \Session::flash('sm', 'Your order has been saved !');
 }
 /**
  * Update the specified resource in storage.
  *
  * @param  \Illuminate\Http\Request  $request
  * @param  int  $id
  * @return \Illuminate\Http\Response
  */
 public function update(Request $request, $id)
 {
     $products = \App\Cart::where('product_id', $id);
     for ($i = 0; $i <= count($products); $i++) {
         $product = \App\Product::where('product_id', $products[$i]['product_id'])->first();
         $newstock = $product['stock'] - $products[$i]['amount'];
         DB::update('update tbl_products set stock = ? where product_id = ?', array($newstock, $product['product_id']));
     }
     // return redirect('products')->with('message', 'payment succesfully');
 }
Example #17
0
 public function save(Request $request, Order $order, OrderContent $order_content, Cart $cart)
 {
     // Валидация данных из формы в соответствии с заданными правилами
     $this->validate($request, $this->validationRules);
     // Получаем массив с данными покупателя
     $input = $request->only('customer_name', 'email', 'phone', 'delivery_address', 'comment');
     // Получаем данные о заказе из корзины
     $cart_content = $cart->cartConstruct();
     // Получаем сумму заказа
     $sum_order = $cart->CostSumOrder($cart_content);
     // Записываем данные покупателя и сумму заказа в таблицу #orders
     // и получаем id заказа
     $data['order_id'] = $order->addOrder($input, $sum_order);
     // Записываем данные с содержимым заказа в таблицу #order_contents
     $order_content->AddOrderContent($cart_content, $data['order_id']);
     // Удаляем сессионную переменную с корзиной
     Session::forget('cart');
     return view('order_success', $data);
 }
Example #18
0
 public function getEmpty($user_id)
 {
     $carts = Cart::with('Items')->where('user_id', $user_id)->get();
     Cart::with('Items')->where('user_id', $user_id)->delete();
     foreach ($carts as $item) {
         $item->Items->increment('stock');
     }
     User::where('id', $user_id)->update(['last_cart_timestamp' => NULL]);
     return redirect('/');
 }
Example #19
0
 public function addToCart(Request $req)
 {
     $user = $req->user;
     $cart = Cart::firstOrCreate(['user_id' => $user, 'status' => "pending"]);
     $addProduct = new CartOrder();
     $addProduct->cart_id = $cart->id;
     $addProduct->pro_id = $req->product;
     $addProduct->quanlity = $req->qty;
     $addProduct->save();
     return redirect('/');
 }
 /**
  * Show the form for creating a new resource.
  *
  * @return \Illuminate\Http\Response
  */
 public function create()
 {
     // \App\Cart::where('customer_id', 'ChWvZc3Mm6GtY7EJCvKnr4XZqllJQZ8w033KRTVEUKOYj1kCR7')->get()
     // \Mail::send('emails.Newsale', array('cart' => $cart_id, 'customer' => \App\Shipping::where('cart_id', $cart_id)->first()), function($message){
     // $checkoutAmt = \Session::get('checkoutAmt');
     // $message->to(\App\Shipping::where('cart_id', \Session::get('cart_id'))->pluck('email'))->subject("Your Eternally Nocturnal Order");
     // });
     \Mail::send('emails.productshipped', array('cart' => \App\Cart::where('customer_id', 'AnVUUCPqtts5zelVNJS9i7hvs3YC4eju4ps5ydTP40SP3pbd23')->get(), 'customer' => \App\Shipping::where('id', 13)->first()), function ($message) {
         $message->to('*****@*****.**')->subject("Your Eternally Nocturnal Order");
     });
     return 'success';
     // return $ship->buildLabel();
 }
Example #21
0
 /**
  * Tests item in cart functionality.
  */
 public function testPurchasedItemAttribute()
 {
     $user = factory('App\\User')->create(['password' => Hash::make('laravel-shop')]);
     Auth::attempt(['email' => $user->email, 'password' => 'laravel-shop']);
     $product = App\TestProduct::create(['price' => 9.99, 'sku' => str_random(15), 'name' => str_random(64), 'description' => str_random(500)]);
     $cart = App\Cart::current()->add($product);
     Shop::setGateway('testPass');
     $order = Shop::placeOrder();
     $this->assertTrue($order->isCompleted);
     $this->assertTrue($product->wasPurchased);
     $user->delete();
     $product->delete();
 }
Example #22
0
 public function parseSale()
 {
     $total = number_format(\Session::get('checkoutAmt') / 100, 2);
     $messageitems = [];
     foreach (\App\Cart::where('customer_id', \Session::get('cart_id'))->get() as $cart) {
         $name = $cart->findItemProp('name');
         $messageitems[] = ['title' => "Item {$name}"];
         $messageitems[] = ['title' => "Size: {$cart->size}"];
         $messageitems[] = ['title' => "Quantity: {$cart->quantity}"];
         $messageitems[] = ['title' => "_________________________"];
     }
     $slackcart = ['fallback' => 'It is all broken, man', 'color' => 'good', 'fields' => $messageitems];
     return $slackcart;
 }
 public function storeCommand()
 {
     $user = Auth::user();
     $token = Session('_token');
     $command = Cart::where('_token', $token)->get();
     foreach ($command as $item) {
         $product_id = $item->product_id;
         $price = $item->price;
         $quantity = $item->quantity;
         $customer = $user->customer;
         $history = History::create(['product_id' => $product_id, 'quantity' => $quantity, 'price' => $price, 'customer_id' => $customer->id, 'status' => 'finalized']);
         $item->delete();
     }
     return redirect('/');
 }
Example #24
0
 /**
  * Tests if failed transactions are being created.
  */
 public function testFailedTransactions()
 {
     // Prepare
     $user = factory('App\\User')->create(['password' => Hash::make('laravel-shop')]);
     $bool = Auth::attempt(['email' => $user->email, 'password' => 'laravel-shop']);
     $cart = App\Cart::current()->add(['sku' => '0001', 'price' => 1.99])->add(['sku' => '0002', 'price' => 2.99]);
     Shop::setGateway('testFail');
     // Beging test
     $order = Shop::placeOrder();
     $this->assertNotNull($order);
     $this->assertNotEmpty($order->id);
     $this->assertTrue($order->hasFailed);
     $this->assertEquals(count($order->transactions), 1);
     $user->delete();
 }
 /**
  * Store a newly created resource in storage.
  *
  * @param  \Illuminate\Http\Request $request
  *
  * @return \Illuminate\Http\Response
  */
 public function store(Request $request)
 {
     $qtys = $request->get('qty');
     $charge = Cart::where('user_id', Auth::user()->id)->get()->map(function ($c) {
         return $c->product;
     })->sum(function ($p) use($qtys) {
         return $p->price * $qtys[$p->id];
     });
     $order = Order::create(['user_id' => Auth::user()->id, 'note' => $request->get('note'), 'charge' => $charge, 'status' => 'Cooking', 'address' => $request->get('address')]);
     foreach ($qtys as $pid => $qty) {
         OrderItem::create(['product_id' => $pid, 'order_id' => $order->id, 'qty' => $qty]);
     }
     Cart::where('user_id', Auth::user()->id)->delete();
     return redirect('/')->with('success', 'Your order will be delivered to ' . $request->get('address') . ' soon.');
 }
Example #26
0
 public function shopCart(Request $request)
 {
     $cart_list = Cart::where('uid', $this->user->getKey())->with('product_size')->get()->keyBy('id');
     //刪除无效產品,修正數量
     foreach ($cart_list as $key => $cart) {
         if (empty($cart->product_size)) {
             $cart->delete();
             unset($cart_list[$key]);
         } elseif ($cart->product_size->count < $cart->count) {
             $cart->count = $cart->product_size->count;
         }
     }
     $this->_cart_list = $cart_list;
     return $this->view('m.shopcart');
 }
Example #27
0
 /**
  * Tests a purchase and shop flow.
  */
 public function testFailPurchase()
 {
     // Prepare
     $user = factory('App\\User')->create(['password' => Hash::make('laravel-shop')]);
     $bool = Auth::attempt(['email' => $user->email, 'password' => 'laravel-shop']);
     $cart = App\Cart::current()->add(['sku' => '0001', 'price' => 1.99])->add(['sku' => '0002', 'price' => 2.99]);
     Shop::setGateway('testFail');
     $this->assertFalse(Shop::checkout());
     $this->assertEquals(Shop::exception()->getMessage(), 'Checkout failed.');
     $order = Shop::placeOrder();
     $this->assertNotNull($order);
     $this->assertNotEmpty($order->id);
     $this->assertTrue($order->hasFailed);
     $this->assertEquals(Shop::exception()->getMessage(), 'Payment failed.');
     $user->delete();
 }
Example #28
0
 /**
  * Define the application's command schedule.
  *
  * @param  \Illuminate\Console\Scheduling\Schedule  $schedule
  * @return void
  */
 protected function schedule(Schedule $schedule)
 {
     $schedule->call(function () {
         $cd = DB::table('master')->first()->carts_cd - 1;
         $olderThan = \Carbon\Carbon::now()->subMinutes($cd);
         $users = User::where('last_cart_timestamp', '<', $olderThan->format('Y-m-d H:i:s'))->get();
         foreach ($users as $user) {
             $carts = Cart::with('Items')->where('user_id', $user->id)->get();
             foreach ($carts as $item) {
                 $item->Items->increment('stock');
             }
             Cart::with('Items')->where('user_id', $user->id)->delete();
             $user->last_cart_timestamp = NULL;
             $user->save();
         }
     })->everyMinute();
 }
Example #29
0
 public function postOrder(Request $request)
 {
     $user = Auth::user();
     if ($user->firstname == NULL || $user->lastname == NULL) {
         return back()->withErrors('Merci d\'enregistrer vos nom et prénom sur la page Mon Compte avant de passer commande.');
     }
     $this->validate($request, ['address' => 'required']);
     if ($request->input('address') == 'saved') {
         $address = serialize(collect($user->Address)->only(['street', 'post_code', 'city', 'country']));
     } else {
         $this->validate($request, ['street' => 'required', 'postcode' => 'required|numeric', 'city' => 'required', 'country' => 'required']);
         $address = serialize(['street' => $request->input('street'), 'post_code' => $request->input('postcode'), 'city' => $request->input('city'), 'country' => $request->input('country')]);
         if ($request->input('remember') == 'remember') {
             if (!$user->Address()->exists()) {
                 $new_address = new Address();
             } else {
                 $new_address = $user->Address;
             }
             $new_address->street = $request->input('street');
             $new_address->post_code = $request->input('postcode');
             $new_address->city = $request->input('city');
             $new_address->country = $request->input('country');
             $user->Address()->save($new_address);
         }
     }
     $cart_items = Cart::with('Items')->where('user_id', $user->id)->get();
     $cart_total = Cart::with('Items')->where('user_id', $user->id)->sum('total');
     if ($cart_items->count() == 0) {
         return back()->withErrors('Une erreur est parvenue, vueillez recommencer l\'opération');
     }
     $order = new Order();
     $order->user_id = $user->id;
     $order->address = $address;
     $order->total = $cart_total;
     $order->fullname = serialize(['firstname' => $user->firstname, 'lastname' => $user->lastname]);
     $order->status = 1;
     $order->save();
     foreach ($cart_items as $order_item) {
         $order->orderItems()->attach($order_item->item_id, ['amount' => $order_item->amount, 'price' => $order_item->Items->price, 'total' => $order_item->Items->price * $order_item->amount]);
     }
     Cart::where('user_id', $user->id)->delete();
     Mail::send([], ['user' => $user], function ($mail) use($user) {
         $mail->to($user->email, $user->username)->subject('Commande enregistrée !')->setBody('Votre commande à été enregistrée');
     });
     return redirect('/')->with('status', 'Votre commande a été enregistrée.');
 }
 /**
  * Display a listing of the resource.
  *
  * @return \Illuminate\Http\Response
  */
 public function index()
 {
     $user_id = \Auth::user()->id;
     $orders = \App\Cart::where('user_id', $user_id)->groupby('id')->get();
     $total = 0;
     $order = [];
     for ($i = 0; $i < sizeof($orders); $i++) {
         $order[$i] = \App\Cart::where('id', $orders[$i]['id']);
     }
     dd($order);
     foreach ($orders as $order) {
         $productInfo = \App\Product::where('product_id', $order['product_id'])->first();
         $price = $productInfo['price'];
         $total += $price * $product->amount;
         dd($total);
     }
     $totalprice = $total * 1.21;
     return view('pages/orders/index', compact('order', 'totalprice'));
 }