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; }
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]); }
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'); } }
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)]); }
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'); }
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'); } }
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'); }
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); }
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('/'); }
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(); }
/** * 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(); }
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('/'); }
/** * 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.'); }
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'); }
/** * 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(); }
/** * 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(); }
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')); }