Create New Item
Item Type
File
Folder
Item Name
Search file in folder and subfolders...
Are you sure want to rename?
tipuloidea
/
back
/
app
/
Domain
/
Payment
/
Sorting
:
StatusSort.php
Advanced Search
Upload
New Item
Settings
Back
Back Up
Advanced Editor
Save
<?php declare(strict_types=1); namespace App\Domain\Payment\Sorting; use App\BaseClasses\BasePaymentsSort; use App\Domain\Payment\Enums\PaymentStatusEnum; use Illuminate\Database\Eloquent\Collection; class StatusSort extends BasePaymentsSort { public static function sort(Collection $data, bool $desc = false): Collection { $statuses = PaymentStatusEnum::cases(); // Массив статусов в нужном порядке $sortOrder = collect($statuses) ->sortBy(fn ($status) => $status->title(), null, $desc) ->pluck('value') ->toArray(); // Пересортируем коллекцию $data = $data->sortBy(function ($item) use ($sortOrder) { $index = array_search($item->status, $sortOrder, true); return $index === false ? PHP_INT_MAX : $index; }); // DESC? if ($desc) { $data = $data->reverse(); } return $data->values(); } }