ldc-boutique-cnc-sable/app/Traits/Controllers/ChangesModelOrder.php
Jérémy Munsch 8e42639134
feat(order): implement change selected order functionality
Add functionality to change the order of models in the product list.
This includes new actions, requests, and UI components for user interaction.
2026-10-29 16:39:23 +01:00

64 lines
1.8 KiB
PHP

<?php
declare(strict_types=1);
namespace App\Traits\Controllers;
use App\Actions\Common\ChangeModelOrder;
use App\Actions\Common\ChangeModelOrderInput;
use App\Actions\Common\ChangeModelOrderPosition;
use App\Contracts\Executor;
use App\Http\Requests\Bo\ChangeOrderRequest;
use App\Http\Requests\Bo\ChangeSelectedOrderRequest;
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,
Executor $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();
}
public function changeSelectedOrder(
Model & ModelWithOrder $model,
ChangeSelectedOrderRequest $request,
ChangeModelOrderPosition $action,
Executor $executor,
FlashMessageService $flashMessageService
): RedirectResponse {
$changed = $executor->execute(
$action,
$request->toChangeModelOrderPositionInput($model)
);
if (! $changed) {
$flashMessageService->error(trans('crud.messages.order_not_changed'));
return back();
}
$flashMessageService->success(trans('crud.messages.order_changed'));
return back();
}
}