Exemple #1
0
 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();
 }
Exemple #2
0
 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('Новый заказ');
     });
 }
Exemple #3
0
 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('/');
 }