Files
InvoiceShelf/app/Services/CurrencyService.php
Darko Gjorgjijoski 42ce99eeba Show common currencies first in dropdowns and default to USD in install wizard
Currency dropdowns now display the most-traded currencies (USD, EUR, GBP,
JPY, CAD, AUD, CHF, CNY, INR, BRL) at the top, followed by the rest
alphabetically. The install wizard defaults to USD instead of EUR and
formats currency names as "USD - US Dollar" for consistency with the
rest of the app.
2026-04-10 15:55:46 +02:00

30 lines
814 B
PHP

<?php
namespace App\Services;
use App\Models\Currency;
use Illuminate\Database\Eloquent\Collection;
class CurrencyService
{
/**
* Retrieve all currencies with commonly-used currencies sorted first.
*
* @return Collection<int, Currency>
*/
public function getAllWithCommonFirst(): Collection
{
$currencies = Currency::query()->get();
$commonCodes = Currency::COMMON_CURRENCY_CODES;
$common = $currencies->filter(fn (Currency $c): bool => in_array($c->code, $commonCodes, true))
->sortBy(fn (Currency $c): int => array_search($c->code, $commonCodes));
$rest = $currencies->reject(fn (Currency $c): bool => in_array($c->code, $commonCodes, true))
->sortBy('name');
return $common->concat($rest)->values();
}
}