2024-08-01 13:53:10 -05:00
|
|
|
<?php
|
|
|
|
|
|
2025-01-28 17:33:54 -06:00
|
|
|
declare(strict_types=1);
|
|
|
|
|
|
2024-08-01 13:53:10 -05:00
|
|
|
namespace App\Providers;
|
|
|
|
|
|
2026-03-13 15:21:22 -05:00
|
|
|
use App\Interfaces\MarketData\FallbackInterface;
|
|
|
|
|
use App\Interfaces\MarketData\MarketDataInterface;
|
|
|
|
|
use Filament\Support\Colors\Color;
|
|
|
|
|
use Filament\Support\Facades\FilamentColor;
|
2025-01-23 22:47:16 -06:00
|
|
|
use Illuminate\Http\Resources\Json\JsonResource;
|
2025-04-09 19:25:15 -05:00
|
|
|
use Illuminate\Support\Arr;
|
|
|
|
|
use Illuminate\Support\Number;
|
2025-01-28 17:14:49 -06:00
|
|
|
use Illuminate\Support\ServiceProvider;
|
2025-04-09 19:25:15 -05:00
|
|
|
use NumberFormatter;
|
2024-08-01 13:53:10 -05:00
|
|
|
|
|
|
|
|
class AppServiceProvider extends ServiceProvider
|
|
|
|
|
{
|
|
|
|
|
/**
|
|
|
|
|
* Register any application services.
|
|
|
|
|
*/
|
|
|
|
|
public function register(): void
|
|
|
|
|
{
|
2024-08-24 22:19:40 -05:00
|
|
|
$this->app->bind(
|
2026-03-13 15:21:22 -05:00
|
|
|
MarketDataInterface::class,
|
|
|
|
|
FallbackInterface::class
|
2024-08-24 22:19:40 -05:00
|
|
|
);
|
2024-08-01 13:53:10 -05:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Bootstrap any application services.
|
|
|
|
|
*/
|
|
|
|
|
public function boot(): void
|
|
|
|
|
{
|
2026-03-13 15:21:22 -05:00
|
|
|
FilamentColor::register([
|
|
|
|
|
'primary' => Color::Stone,
|
|
|
|
|
'gray' => Color::Zinc,
|
|
|
|
|
'info' => Color::Blue,
|
|
|
|
|
'success' => Color::Emerald,
|
|
|
|
|
'warning' => Color::Amber,
|
|
|
|
|
'danger' => Color::Red,
|
|
|
|
|
]);
|
|
|
|
|
|
2025-01-23 22:47:16 -06:00
|
|
|
JsonResource::withoutWrapping();
|
2025-04-09 19:25:15 -05:00
|
|
|
|
|
|
|
|
Arr::macro('skipEmptyValues', function (array $array) {
|
|
|
|
|
|
|
|
|
|
return Arr::mapWithKeys($array, function (mixed $value, mixed $key) {
|
|
|
|
|
$result = [];
|
|
|
|
|
if (! empty($value)) {
|
|
|
|
|
$result[$key] = $value;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return $result;
|
|
|
|
|
});
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
Number::macro('currencySymbol', function (?string $currency = null, ?string $locale = null) {
|
|
|
|
|
|
|
|
|
|
$currency = $currency ?? Number::defaultCurrency();
|
|
|
|
|
|
|
|
|
|
$locale = $locale ?? Number::defaultLocale();
|
|
|
|
|
|
|
|
|
|
$formatter = new NumberFormatter($locale."@currency=$currency", NumberFormatter::CURRENCY);
|
|
|
|
|
|
|
|
|
|
return $formatter->getSymbol(NumberFormatter::CURRENCY_SYMBOL);
|
|
|
|
|
});
|
2024-08-01 13:53:10 -05:00
|
|
|
}
|
|
|
|
|
}
|