fix: use increment/decrement instead of loop

This commit is contained in:
Noah Lancien 2025-11-20 09:55:38 +01:00
parent 950b2babdc
commit c09214f59a

View file

@ -892,22 +892,13 @@ class TicketController extends Controller
$newPriority = $request->validated('priority');
return DB::transaction(function () use ($ticket, $newPriority) {
$getHigherPriority = $ticket->order < $newPriority;
// Update all tickets who will be moved with this priority update.
Ticket::query()
$request = Ticket::query()
->where('site_id', $ticket->site_id)
->whereNot('status', TicketStatusEnum::archived)
->whereNot('id', $ticket->id)
->whereBetween('order', [min($ticket->order, $newPriority), max($ticket->order, $newPriority)])
->each(
function (Ticket $ticket) use ($getHigherPriority) {
$ticket->order += $getHigherPriority ? -1 : 1;
if (!$ticket->saveOrFail()) {
return back()->with('error', trans('crud.messages.order_not_changed'));
};
}
);
->whereBetween('order', [min($ticket->order, $newPriority), max($ticket->order, $newPriority)]);
$ticket->order < $newPriority ? $request->decrement('order', 1) : $request->increment('order', 1);
// Update the ticket.
$ticket->order = $newPriority;