ldc-boutique-cnc-sable/app/Traits/Controllers/ChangesModelOrder.php

39 lines
1 KiB
PHP

<?php
declare(strict_types=1);
namespace App\Traits\Controllers;
use App\Actions\Common\ChangeModelOrder;
use App\Actions\Common\ChangeModelOrderInput;
use App\Contracts\ActionExecutor;
use App\Http\Requests\Bo\ChangeOrderRequest;
use App\Interfaces\ModelWithOrder;
use App\Services\FlashMessageService;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Http\RedirectResponse;
trait ChangesModelOrder
{
public function changeOrder(
Model & ModelWithOrder $model,
ChangeOrderRequest $request,
ChangeModelOrder $action,
ActionExecutor $executor,
FlashMessageService $flashMessageService
): RedirectResponse {
$direction = $request->getSortDirection();
$changed = $executor->execute($action, new ChangeModelOrderInput($model, $direction));
if (! $changed) {
$flashMessageService->error(trans('crud.messages.order_not_changed'));
return back();
}
$flashMessageService->success(trans('crud.messages.order_changed'));
return back();
}
}