filterOrders($request); $orders = $orders->paginate(10); return view('bo.orders.index', compact('orders')); } /** * orders that ship today * * @param SortOrders $request * @return \Illuminate\Contracts\View\View */ public function today(SortOrders $request) { $orders = $this->filterOrders($request); // Filter today. $today = CarbonImmutable::now()->startOfDay(); $orders = $orders->whereHas('timeslot', function ($q) use ($today) { $q->where('day', '=', $today->format('d/m/Y')); }); $orders = $orders->get(); return view('bo.orders.index', compact('orders', 'today')); } /** * Filter orders * * @param Request $request * @return \Illuminate\Database\Eloquent\Builder */ protected function filterOrders(Request $request) { $orders = Order::query(); if ($request->rst) { Session::remove('orders.sort_col'); Session::remove('orders.sort_way'); } if ($request->sort_col) { Session::put('orders.sort_col', $request->sort_col); Session::save(); } if ($request->sort_way) { Session::put('orders.sort_way', $request->sort_way); Session::save(); } if (Session::has('orders.sort_col') and Session::has('orders.sort_way')) { switch (Session::get('orders.sort_col')) { case 'date': $orders = $orders->orderBy('date', Session::get('orders.sort_way')); break; case 'status_id': $orders = $orders->orderBy('status_id', Session::get('orders.sort_way')); break; case 'magasin_id': $orders = $orders->select('orders.*'); $orders = $orders->leftJoin('timeslots', 'timeslots.order_id', '=', 'orders.id'); $orders = $orders->leftJoin('magasins', 'timeslots.magasin_id', '=', 'magasins.id'); $orders = $orders->orderBy('magasins.id', Session::get('orders.sort_way')); break; case 'date_retrait': $orders = $orders->select('orders.*'); $orders = $orders->leftJoin('timeslots', 'timeslots.order_id', '=', 'orders.id'); $orders = $orders->orderBy('timeslots.day', Session::get('orders.sort_way')); $orders = $orders->orderBy('timeslots.time', Session::get('orders.sort_way')); break; case 'customer_id': $orders = $orders->orderBy('customer_id', Session::get('orders.sort_way')); break; }//end switch }//end if return $orders; } /** * action de changement de statut vers l'avant * envoi de mails transctionnels * * @param string $reference Reference de la commande. * @return \Illuminate\Http\RedirectResponse */ public function changeStatus(string $reference) { $order = Order::where('reference', $reference)->first(); $order->status_id = $order->status_id + 1; $order->save(); // Send confirm mail. Mail::to($order->customer->email)->send(new OrderStatusMail($order)); return back()->with('success', "Changement de status enregistré pour la commande " . $order->reference . "."); } /** * mise au statut annulé d'une commande * * @param string $reference * @return \Illuminate\Http\RedirectResponse */ public function cancelOrder(string $reference) { $order = Order::where('reference', $reference)->first(); $order->status_id = 7; $order->save(); return back()->with('success', "La commande " . $order->reference . " à été annulée."); } /** * bo * ajx : affichage d'infos sur un client * * @param integer $id * @param string|null $mode * @return \Illuminate\Contracts\View\View */ public function getCustomerInfo(int $id, string $mode = null) { $cust = Customers::findOrFail($id); if (!is_null($mode)) { if ($mode == "tippy") { return view('bo.customer.tippy-card', compact('cust')); } if ($mode == "json") { return $cust->apiData; } return view('bo.customer.info-card', compact('cust')); } return view('bo.customer.info-popup', compact('cust')); } /** * bo : page détail commande * * @param string $reference * @return \Illuminate\Contracts\View\View */ public function orderDetail(string $reference) { $order = Order::where('reference', '=', $reference)->firstOrFail(); return view('bo.orders.detail', compact('order')); } }