Andrew Wallo 3 ay önce
ebeveyn
işleme
6214946956

+ 20
- 3
app/Filament/Company/Pages/Concerns/HasDeferredFiltersForm.php Dosyayı Görüntüle

4
 
4
 
5
 use Filament\Actions\Action;
5
 use Filament\Actions\Action;
6
 use Filament\Forms\Components\DatePicker;
6
 use Filament\Forms\Components\DatePicker;
7
+use Filament\Forms\Components\DateTimePicker;
7
 use Filament\Forms\Form;
8
 use Filament\Forms\Form;
8
 use Illuminate\Support\Arr;
9
 use Illuminate\Support\Arr;
9
 use Illuminate\Support\Carbon;
10
 use Illuminate\Support\Carbon;
170
         $flatFields = $this->getFiltersForm()->getFlatFields();
171
         $flatFields = $this->getFiltersForm()->getFlatFields();
171
 
172
 
172
         foreach ($this->filters as $key => $value) {
173
         foreach ($this->filters as $key => $value) {
173
-            if (isset($flatFields[$key]) && $flatFields[$key] instanceof DatePicker) {
174
-                // TODO: Submit a PR to Filament to address DatePicker being dehydrated as a datetime string in filters
175
-                $this->filters[$key] = Carbon::parse($value)->toDateString();
174
+            if (! isset($flatFields[$key]) || blank($value)) {
175
+                continue;
176
+            }
177
+
178
+            $field = $flatFields[$key];
179
+
180
+            // Reproduce underlying conversion to UTC for DateTimePicker and DatePicker
181
+            if ($field instanceof DateTimePicker && $field->getTimezone() !== config('app.timezone')) {
182
+                try {
183
+                    $carbonValue = Carbon::parse($value, $field->getTimezone());
184
+
185
+                    // Shift back to UTC and format according to field type
186
+                    $this->filters[$key] = $carbonValue
187
+                        ->setTimezone(config('app.timezone'))
188
+                        ->format($field->getFormat());
189
+
190
+                } catch (\Exception $e) {
191
+                    continue;
192
+                }
176
             }
193
             }
177
         }
194
         }
178
     }
195
     }

+ 3
- 0
app/Filament/Company/Pages/Reports/BaseReportPage.php Dosyayı Görüntüle

9
 use App\Filament\Company\Pages\Reports;
9
 use App\Filament\Company\Pages\Reports;
10
 use App\Filament\Forms\Components\DateRangeSelect;
10
 use App\Filament\Forms\Components\DateRangeSelect;
11
 use App\Models\Company;
11
 use App\Models\Company;
12
+use App\Services\CompanySettingsService;
12
 use App\Services\DateRangeService;
13
 use App\Services\DateRangeService;
13
 use App\Support\Column;
14
 use App\Support\Column;
14
 use Filament\Actions\Action;
15
 use Filament\Actions\Action;
253
         return DatePicker::make('startDate')
254
         return DatePicker::make('startDate')
254
             ->label('Start date')
255
             ->label('Start date')
255
             ->live()
256
             ->live()
257
+            ->timezone(CompanySettingsService::getDefaultTimezone())
256
             ->afterStateUpdated(static function ($state, Set $set) {
258
             ->afterStateUpdated(static function ($state, Set $set) {
257
                 $set('dateRange', 'Custom');
259
                 $set('dateRange', 'Custom');
258
             });
260
             });
263
         return DatePicker::make('endDate')
265
         return DatePicker::make('endDate')
264
             ->label('End date')
266
             ->label('End date')
265
             ->live()
267
             ->live()
268
+            ->timezone(CompanySettingsService::getDefaultTimezone())
266
             ->afterStateUpdated(static function (Set $set) {
269
             ->afterStateUpdated(static function (Set $set) {
267
                 $set('dateRange', 'Custom');
270
                 $set('dateRange', 'Custom');
268
             });
271
             });

Loading…
İptal
Kaydet