public function postCreate() { $validator = Validator::make(Input::all(), Order::$rules); if ($validator->passes()) { $order = new Order(); $order->user_id = Auth::id(); $order->delivery_address = Input::get('delivery_address'); $order->sum = Cart::total(); $order->payment_type = Input::get('payment_type'); $order->save(); foreach (Cart::content() as $cart_item) { $order_product = new OrderProduct(); $order_product->order_id = $order->id; $order_product->product_id = $cart_item->id; $order_product->qty = $cart_item->qty; $order_product->sum = $cart_item->price; $order_product->save(); } Cart::destroy(); if ($order->payment_type == 0) { //pay card return Redirect::to('order/pay'); } return Redirect::to('cart/confirmed')->with('message', 'Заказ оформлен.'); } return Redirect::to('cart/confirm')->with('message', 'Проверьте корректность заполнения полей!')->withErrors($validator)->withInput(); }
private function send_new_order_email(Order $order) { $emails = \App\Models\Mail::actives(); $order_products = OrderProduct::where('order_id', $order->id)->get(); return Mail::send('emails.new_order', ['order' => $order, 'order_products' => $order_products], function ($message) use($emails) { $message->to($emails)->from('*****@*****.**')->subject('Новый заказ'); }); }
public function getOrders($id = null) { if ($id) { //details return view('order.details', ['products' => OrderProduct::where('order_id', $id)->get(), 'order' => Order::find($id)]); } else { return view('order.index', ['orders' => Order::where('user_id', Auth::id())->get()]); } }
public function postDestroy() { $order_product = OrderProduct::find(Input::get('id')); if ($order_product) { $order_product->delete(); return Redirect::back()->with('message', 'Продукт удален'); } return Redirect::back('admin/products/index')->with('message', 'Ошибка удаления'); }
/** * Proccess payment * * @param Request $request * @return Response */ public function pay(Request $request) { $user = Auth::user(); if ($request->session()->has('addressId')) { $address = Address::find($request->session()->get('addressId')); $request->session()->forget('addressId'); } else { $address = $user->address; } // array for order data $orderData = []; $orderData['full_price'] = Cart::totalWithShipping(); $orderData['user_id'] = $user->id; $orderData['address_id'] = $address->id; if ($request->has('stripeToken')) { \Stripe\Stripe::setApiKey(env('STRIPE_TEST_SECRET_KEY')); $orderData['stripeToken'] = $request->get('stripeToken'); $orderData['payment_method_id'] = 1; try { $charge = \Stripe\Charge::create(array("amount" => $orderData['full_price'] * 100, "currency" => "usd", "source" => $orderData['stripeToken'], "description" => "Test charge; user e-mail: " . $user->email)); } catch (\Stripe\Error\Card $e) { $request->session()->flash('status', 'Card declined, please fill your card and try again later.'); return redirect('/'); } } else { $orderData['payment_method_id'] = 2; } $cartProducts = \Cart::associate('Product', 'App\\Models')->content(); $products = new Collection(); foreach ($cartProducts as $item) { $products->push(['product' => \App\Models\Product::find($item->id), 'quantity' => $item->qty]); } // Get the order weight $orderData['weight'] = 0; foreach ($products as $product) { $orderData['weight'] += $product['product']->weight * $product['quantity']; } $order = Order::create($orderData); foreach ($products as $product) { OrderProduct::create(['order_id' => $order->id, 'product_id' => $product['product']->id, 'quantity' => $product['quantity'], 'price' => (double) $product['product']->price * $product['quantity']]); } Event::fire(new OrderWasPlaced($order)); Cart::destroy(); $request->session()->flash('status', 'Order recieved.'); return redirect('/'); }