paginate(); return view('bo.ranges.index', compact('r')); } public function create() { return view('bo.ranges.create'); } public function store(StoreRange $request) { $range = new Range($request->validated()); $this->storeUploadedImage($request, $range, 'picture'); $this->storeUploadedImage($request, $range, 'picture_r'); $range->order = $this->getLastOrder(); $range->save(); return redirect()->route('bo.ranges.edit', $range) ->with('success', 'Gamme enregistrée'); } public function edit(Range $range) { $productSubRanges = $range->subRanges()->orderBy('order')->get(); $subranges = SubRange::whereNotIn('id', $productSubRanges->pluck('id'))->get(); $products = Products::where('range_id', $range->id)->get(); return view('bo.ranges.edit', compact('range', 'products', 'subranges', 'productSubRanges')); } public function update(UpdateRange $request, Range $range) { $range->fill($request->validated()); $this->storeUploadedImage($request, $range, 'picture'); $this->storeUploadedImage($request, $range, 'picture_r'); if (empty($request->flagship_product) && $request->status == true) { return back()->withErrors('Une gamme doit avoir un produit phare pour pouvoir être publiée.'); } $range->saveOrFail(); // subranges handle $i = 0; $range->subRanges()->sync(collect($request->subranges)->map(function ($v) { return \intval($v); })->flip() // phpcs:ignore Generic.CodeAnalysis.UnusedFunctionParameter.FoundInExtendedClassBeforeLastUsed ->mapWithKeys(function ($value, $key) use (&$i) { return [ $key => [ 'order' => $i++ ] ]; })); return redirect()->route('bo.ranges.edit', $range) ->with('success', 'Gamme enregistrée'); } public function destroy(Range $r) { if (file_exists(public_path() . '/' . $r->picture)) { unlink(public_path() . '/' . $r->picture); } if (file_exists(public_path() . '/' . $r->picture_r)) { unlink(public_path() . '/' . $r->picture_r); } $r->delete(); return redirect()->route('bo.ranges.index') ->with('warning', 'Le contenu à bien été supprimé'); } public function changeOrder($id, $action) { $current = Range::findOrFail($id); if ($action === 'up') { $tmp = Range::where('order', '<', $current->order) ->orderBy('order', 'DESC')->first(); $newOrder = $tmp->order; $tmp->order = $current->order; $current->order = $newOrder; } else { $tmp = Range::where('order', '>', $current->order) ->orderBy('order', 'ASC')->first(); $newOrder = $tmp->order; $tmp->order = $current->order; $current->order = $newOrder; } $tmp->save(); $current->save(); return redirect()->route('bo.ranges.index'); } private function getLastOrder() { $order = Range::select('order')->orderBy('order', 'DESC')->first(); if ($order === null) { return 1; } return $order->order + 1; } }