diff --git a/app/Http/Controllers/Bo/SliderController.php b/app/Http/Controllers/Bo/SliderController.php index 79ca0a5..b470aeb 100644 --- a/app/Http/Controllers/Bo/SliderController.php +++ b/app/Http/Controllers/Bo/SliderController.php @@ -4,20 +4,19 @@ namespace App\Http\Controllers\Bo; use App\Enums\Sliders\SliderType; use App\Http\Controllers\Controller; -use App\Http\Requests\Bo\ChangeOrderRequest; use App\Http\Requests\Bo\Sliders\StoreSliderRequest; use App\Http\Requests\Bo\Sliders\UpdateSliderRequest; use App\Models\Slider; use App\Traits\Controllers\UpdateModelStatus; -use Illuminate\Database\Eloquent\ModelNotFoundException; +use App\Traits\Models\ChangesModelOrder; use Illuminate\Http\Request; use Illuminate\Support\Facades\DB; -use Illuminate\Support\Facades\Session; use Illuminate\Support\Str; use Kwaadpepper\Enum\Exceptions\EnumNotRoutableException; class SliderController extends Controller { + use ChangesModelOrder; use UpdateModelStatus; /** @@ -145,43 +144,4 @@ class SliderController extends Controller } return back(); } - - /** - * Change Item Order - * - * @param \App\Http\Requests\Bo\ChangeOrderRequest $request - * @param \App\Models\Slider $slider - * @return \Illuminate\Http\RedirectResponse - */ - public function changeOrder(ChangeOrderRequest $request, Slider $slider) - { - try { - DB::transaction(function () use ($request, $slider) { - $tmp = Slider::query(); - if ($request->action === 'up') { - // * Push Item upward - $tmp->where('order', '<', $slider->order) - ->orderBy('order', 'DESC'); - } else { - // * Push Item downward - $tmp->where('order', '>', $slider->order) - ->orderBy('order', 'ASC'); - } - $tmp->whereType('type', $slider->type); - $tmp = $tmp->firstOrFail(); - $newOrder = $tmp->order; - $tmp->order = $slider->order; - $slider->order = $newOrder; - if (!$slider->saveOrFail() or !$tmp->saveOrFail()) { - throw new \ErrorException("Error Processing Request", 1); - } - }); - } catch (\ErrorException | ModelNotFoundException $e) { - Session::flash('error', trans('Erreur lors de la modification de l\'ordre :message', [ - 'message' => $e->getMessage() - ])); - } //end try - - return redirect()->back(); - } } diff --git a/app/Traits/Models/ChangesModelOrder.php b/app/Traits/Models/ChangesModelOrder.php new file mode 100644 index 0000000..249c43b --- /dev/null +++ b/app/Traits/Models/ChangesModelOrder.php @@ -0,0 +1,39 @@ +direction ? '<' : '>', $model->order) + ->orderBy('order', $request->direction ? 'DESC' : 'ASC')->first(); + if (!$tmp) { + return back()->with('error', trans('L\'ordre n\'a pas pu être modifié')); + } + $newOrder = $tmp->order; + $tmp->order = $model->order; + $model->order = $newOrder; + $tmp->saveOrFail(); + $model->saveOrFail(); + Session::flash('success', trans('L\'ordre à été modifié')); + return back(); + }); + } +}