2023-07-26 09:56:16 +02:00
|
|
|
<?php
|
|
|
|
|
|
2026-06-14 21:32:07 +02:00
|
|
|
declare(strict_types=1);
|
|
|
|
|
|
2023-07-26 09:56:16 +02:00
|
|
|
namespace App\Traits\Controllers;
|
|
|
|
|
|
2026-09-29 14:51:46 +02:00
|
|
|
use App\Actions\Common\ChangeModelOrder;
|
|
|
|
|
use App\Actions\Common\ChangeModelOrderInput;
|
2026-10-29 16:39:23 +01:00
|
|
|
use App\Actions\Common\ChangeModelOrderPosition;
|
2026-09-29 16:59:07 +02:00
|
|
|
use App\Contracts\Executor;
|
2026-06-14 21:32:07 +02:00
|
|
|
use App\Http\Requests\Bo\ChangeOrderRequest;
|
2026-10-29 16:39:23 +01:00
|
|
|
use App\Http\Requests\Bo\ChangeSelectedOrderRequest;
|
2026-09-29 14:51:46 +02:00
|
|
|
use App\Interfaces\ModelWithOrder;
|
2026-06-14 21:32:07 +02:00
|
|
|
use App\Services\FlashMessageService;
|
2023-07-26 09:56:16 +02:00
|
|
|
use Illuminate\Database\Eloquent\Model;
|
2026-06-14 21:32:07 +02:00
|
|
|
use Illuminate\Http\RedirectResponse;
|
2023-07-26 09:56:16 +02:00
|
|
|
|
|
|
|
|
trait ChangesModelOrder
|
|
|
|
|
{
|
2026-06-14 21:32:07 +02:00
|
|
|
public function changeOrder(
|
2026-09-29 14:51:46 +02:00
|
|
|
Model & ModelWithOrder $model,
|
2026-06-14 21:32:07 +02:00
|
|
|
ChangeOrderRequest $request,
|
2026-09-29 14:51:46 +02:00
|
|
|
ChangeModelOrder $action,
|
2026-09-29 16:59:07 +02:00
|
|
|
Executor $executor,
|
2026-06-14 21:32:07 +02:00
|
|
|
FlashMessageService $flashMessageService
|
|
|
|
|
): RedirectResponse {
|
2026-09-29 14:51:46 +02:00
|
|
|
$direction = $request->getSortDirection();
|
2026-06-14 21:32:07 +02:00
|
|
|
|
2026-09-29 14:51:46 +02:00
|
|
|
$changed = $executor->execute($action, new ChangeModelOrderInput($model, $direction));
|
2026-06-14 21:32:07 +02:00
|
|
|
|
2026-09-29 14:51:46 +02:00
|
|
|
if (! $changed) {
|
|
|
|
|
$flashMessageService->error(trans('crud.messages.order_not_changed'));
|
2023-07-26 09:56:16 +02:00
|
|
|
|
2026-06-14 21:32:07 +02:00
|
|
|
return back();
|
2026-09-29 14:51:46 +02:00
|
|
|
}
|
2026-06-14 21:32:07 +02:00
|
|
|
|
2026-09-29 14:51:46 +02:00
|
|
|
$flashMessageService->success(trans('crud.messages.order_changed'));
|
2026-06-14 21:32:07 +02:00
|
|
|
|
2026-09-29 14:51:46 +02:00
|
|
|
return back();
|
2026-06-14 21:32:07 +02:00
|
|
|
}
|
2026-10-29 16:39:23 +01:00
|
|
|
|
|
|
|
|
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();
|
|
|
|
|
}
|
2023-07-26 09:56:16 +02:00
|
|
|
}
|