You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

ConfigureCompanyDefault.php 2.8KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. <?php
  2. namespace App\Listeners;
  3. use App\Enums\Setting\PrimaryColor;
  4. use App\Enums\Setting\RecordsPerPage;
  5. use App\Events\CompanyConfigured;
  6. use App\Services\CompanySettingsService;
  7. use App\Utilities\Currency\ConfigureCurrencies;
  8. use Filament\Facades\Filament;
  9. use Filament\Forms\Components\DatePicker;
  10. use Filament\Forms\Components\Section;
  11. use Filament\Forms\Components\Tabs\Tab;
  12. use Filament\Resources\Components\Tab as ResourcesTab;
  13. use Filament\Support\Facades\FilamentColor;
  14. use Filament\Tables\Table;
  15. class ConfigureCompanyDefault
  16. {
  17. /**
  18. * Handle the event.
  19. */
  20. public function handle(CompanyConfigured $event): void
  21. {
  22. $company = $event->company;
  23. $companyId = $company->id;
  24. session(['current_company_id' => $companyId]);
  25. $settings = CompanySettingsService::getSettings($companyId);
  26. app()->setLocale($settings['default_language']);
  27. locale_set_default($settings['default_language']);
  28. config(['app.timezone' => $settings['default_timezone']]);
  29. date_default_timezone_set($settings['default_timezone']);
  30. $paginationPageOptions = RecordsPerPage::caseValues();
  31. Table::configureUsing(static function (Table $table) use ($settings, $paginationPageOptions): void {
  32. $table
  33. ->paginationPageOptions($paginationPageOptions)
  34. ->defaultSort(column: 'id', direction: $settings['default_sort'])
  35. ->defaultPaginationPageOption($settings['default_pagination_page_option']);
  36. }, isImportant: true);
  37. FilamentColor::register([
  38. 'primary' => PrimaryColor::from($settings['default_primary_color'])->getColor(),
  39. ]);
  40. Filament::getPanel('company')
  41. ->font($settings['default_font'])
  42. ->brandName($company->name);
  43. DatePicker::configureUsing(static function (DatePicker $component) use ($settings) {
  44. $component
  45. ->displayFormat($settings['default_date_format'])
  46. ->firstDayOfWeek($settings['default_week_start']);
  47. });
  48. Tab::configureUsing(static function (Tab $tab) {
  49. $label = $tab->getLabel();
  50. if ($label) {
  51. $translatedLabel = translate($label);
  52. $tab->label(ucwords($translatedLabel));
  53. }
  54. }, isImportant: true);
  55. Section::configureUsing(static function (Section $section): void {
  56. $heading = $section->getHeading();
  57. if ($heading) {
  58. $translatedHeading = translate($heading);
  59. $section->heading(ucfirst($translatedHeading));
  60. }
  61. }, isImportant: true);
  62. ResourcesTab::configureUsing(static function (ResourcesTab $tab): void {
  63. $tab->localizeLabel();
  64. }, isImportant: true);
  65. ConfigureCurrencies::syncCurrencies();
  66. }
  67. }