search) { $this->searchQuery( $orders, $request->search, null, 'label' ); } $this->sortQuery($orders); $searchFields = trans('Réference'); if ($this->indexModeTodayOnly) { $orders->whereHas('timeslot', function (Builder $q) { $q->whereDate('slot', \now()->today()); }); } $orders->orderBy('updated_at', 'DESC'); $orders = $orders->paginate(10); return view('back::pages.orders.index', compact('orders', 'searchFields')); } /** * Display a listing of the resource. * * @param \Illuminate\Http\Request $request * @return \Illuminate\Contracts\View\View|\Illuminate\Contracts\View\Factory */ public function indexToday(Request $request) { $this->indexModeTodayOnly = true; return $this->callAction('index', ['request' => $request]); } /** * Display the specified resource. * * @param \App\Models\Order $order * @return \Illuminate\Http\Response * @phpcs:disable Generic.CodeAnalysis.UnusedFunctionParameter.FoundInExtendedClass */ public function show(Order $order) { // phpcs:enable return view('back::pages.orders.show', compact('order')); } /** * Mettre a jour le status de validation d'une commande * * @param \App\Http\Requests\Bo\Orders\ChangeOrderValidationStatusRequest $request * @param \App\Models\Order $order * @return \Illuminate\Http\RedirectResponse */ public function changeValidationStatus(ChangeOrderValidationStatusRequest $request, Order $order) { return DB::transaction(function () use ($request, $order) { $order->validation_status = $request->validation_status; switch ($request->validation_status) { case ValidationStatus::validated()->value: case ValidationStatus::cancelled()->value: $order->saveOrFail(); return \back()->with('success', trans( ':model a été mis à jour', ['model' => Str::singular(trans('models.classes.orders'))] )); case ValidationStatus::pending()->value: return \back()->with('errors', \trans('Il faut choisir un statut pour cette commande.')); default: throw new \RuntimeException("Unhandled status `{$request->validation_status}`"); } }); } /** * Mettre a jour le status de livraison d'une commande * * @param \App\Http\Requests\Bo\Orders\ChangeOrderDeliveryStatusRequest $request * @param \App\Models\Order $order * @return \Illuminate\Http\RedirectResponse */ public function changeDeliveryStatus(ChangeOrderDeliveryStatusRequest $request, Order $order) { return DB::transaction(function () use ($request, $order) { $order->delivery_status = $request->delivery_status; switch ($request->delivery_status) { case DeliveryStatus::recovered()->value: $order->payment_status = PaymentStatus::payed(); // Fall trough. case DeliveryStatus::preparation()->value: case DeliveryStatus::ready()->value: $order->saveOrFail(); return \back()->with('success', trans( ':model a été mis à jour', ['model' => Str::singular(trans('models.classes.orders'))] )); case DeliveryStatus::pending()->value: return \back()->with('errors', \trans('Il faut choisir un statut pour cette commande.')); default: throw new \RuntimeException("Unhandled status `{$request->delivery_status}`"); }//end switch }); } }