Você não pode selecionar mais de 25 tópicos Os tópicos devem começar com uma letra ou um número, podem incluir traços ('-') e podem ter até 35 caracteres.

ConfigureCompanyDefault.php 3.9KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. <?php
  2. namespace App\Listeners;
  3. use App\Enums\DateFormat;
  4. use App\Enums\Font;
  5. use App\Enums\MaxContentWidth;
  6. use App\Enums\ModalWidth;
  7. use App\Enums\PrimaryColor;
  8. use App\Enums\RecordsPerPage;
  9. use App\Enums\TableSortDirection;
  10. use App\Enums\WeekStart;
  11. use App\Events\CompanyConfigured;
  12. use App\Utilities\Currency\ConfigureCurrencies;
  13. use Filament\Actions\MountableAction;
  14. use Filament\Facades\Filament;
  15. use Filament\Forms\Components\DatePicker;
  16. use Filament\Forms\Components\Section;
  17. use Filament\Forms\Components\Tabs\Tab;
  18. use Filament\Resources\Components\Tab as ResourcesTab;
  19. use Filament\Support\Facades\FilamentColor;
  20. use Filament\Tables\Table;
  21. class ConfigureCompanyDefault
  22. {
  23. /**
  24. * Handle the event.
  25. */
  26. public function handle(CompanyConfigured $event): void
  27. {
  28. $company = $event->company;
  29. $paginationPageOptions = RecordsPerPage::caseValues();
  30. $defaultPaginationPageOption = $company->appearance->records_per_page->value ?? RecordsPerPage::DEFAULT;
  31. $defaultSort = $company->appearance->table_sort_direction->value ?? TableSortDirection::DEFAULT;
  32. $stripedTables = $company->appearance->is_table_striped ?? false;
  33. $defaultPrimaryColor = $company->appearance->primary_color ?? PrimaryColor::from(PrimaryColor::DEFAULT);
  34. $modalWidth = $company->appearance->modal_width->value ?? ModalWidth::DEFAULT;
  35. $maxContentWidth = $company->appearance->max_content_width->value ?? MaxContentWidth::DEFAULT;
  36. $defaultFont = $company->appearance->font->value ?? Font::DEFAULT;
  37. $default_language = $company->locale->language ?? config('transmatic.source_locale');
  38. $defaultTimezone = $company->locale->timezone ?? config('app.timezone');
  39. $dateFormat = $company->locale->date_format->value ?? DateFormat::DEFAULT;
  40. $weekStart = $company->locale->week_start->value ?? WeekStart::DEFAULT;
  41. app()->setLocale($default_language);
  42. locale_set_default($default_language);
  43. config(['app.timezone' => $defaultTimezone]);
  44. date_default_timezone_set($defaultTimezone);
  45. Table::configureUsing(static function (Table $table) use ($paginationPageOptions, $defaultSort, $stripedTables, $defaultPaginationPageOption): void {
  46. $table
  47. ->paginationPageOptions($paginationPageOptions)
  48. ->defaultSort(column: 'id', direction: $defaultSort)
  49. ->striped($stripedTables)
  50. ->defaultPaginationPageOption($defaultPaginationPageOption);
  51. }, isImportant: true);
  52. MountableAction::configureUsing(static function (MountableAction $action) use ($modalWidth): void {
  53. $actionOperation = $action->getName();
  54. if (in_array($actionOperation, ['delete', 'restore', 'forceDelete', 'detach'])) {
  55. $action->modalWidth($modalWidth);
  56. }
  57. }, isImportant: true);
  58. FilamentColor::register([
  59. 'primary' => $defaultPrimaryColor->getColor(),
  60. ]);
  61. Filament::getPanel('company')
  62. ->font($defaultFont)
  63. ->brandName($company->name)
  64. ->maxContentWidth($maxContentWidth);
  65. DatePicker::configureUsing(static function (DatePicker $component) use ($dateFormat, $weekStart) {
  66. $component
  67. ->displayFormat($dateFormat)
  68. ->firstDayOfWeek($weekStart);
  69. });
  70. Tab::configureUsing(static function (Tab $tab) {
  71. $label = $tab->getLabel();
  72. $tab->label(ucwords(translate($label)));
  73. }, isImportant: true);
  74. Section::configureUsing(static function (Section $section): void {
  75. $heading = $section->getHeading();
  76. $section->heading(ucfirst(translate($heading)));
  77. }, isImportant: true);
  78. ResourcesTab::configureUsing(static function (ResourcesTab $tab): void {
  79. $tab->localizeLabel();
  80. }, isImportant: true);
  81. ConfigureCurrencies::syncCurrencies();
  82. }
  83. }