app->bind(PaymentGateway::class, FakePaymentGateway::class); } /** * Bootstrap any application services. */ public function boot(): void { if (app()->environment('production') || str_starts_with((string) config('app.url'), 'https://')) { URL::forceScheme('https'); } $this->registerJalaliMacros(); User::observe(UserObserver::class); Gate::policy(User::class, UserPolicy::class); Gate::policy(Role::class, RolePolicy::class); Gate::policy(Permission::class, PermissionPolicy::class); Gate::policy(Wallet::class, WalletPolicy::class); Gate::policy(WalletTransaction::class, WalletTransactionPolicy::class); Gate::policy(Notification::class, NotificationPolicy::class); } /** * Adds ->jalaliDate() / ->jalaliDateTime() helpers to Filament table columns and * infolist entries so every date shown in the admin panel is Shamsi. */ private function registerJalaliMacros(): void { TextColumn::macro('jalaliDate', function () { /** @var TextColumn $this */ return $this->formatStateUsing(fn ($state): ?string => Jalali::date($state)); }); TextColumn::macro('jalaliDateTime', function () { /** @var TextColumn $this */ return $this->formatStateUsing(fn ($state): ?string => Jalali::dateTime($state)); }); TextEntry::macro('jalaliDate', function () { /** @var TextEntry $this */ return $this->formatStateUsing(fn ($state): ?string => Jalali::date($state)); }); TextEntry::macro('jalaliDateTime', function () { /** @var TextEntry $this */ return $this->formatStateUsing(fn ($state): ?string => Jalali::dateTime($state)); }); } }