diff --git a/app/Filament/Resources/ApiKeyResource/Pages/ListApiKeys.php b/app/Filament/Resources/ApiKeyResource/Pages/ListApiKeys.php index aa0b9cdb5..5326252fc 100644 --- a/app/Filament/Resources/ApiKeyResource/Pages/ListApiKeys.php +++ b/app/Filament/Resources/ApiKeyResource/Pages/ListApiKeys.php @@ -4,6 +4,7 @@ namespace App\Filament\Resources\ApiKeyResource\Pages; use App\Filament\Resources\ApiKeyResource; use App\Models\ApiKey; +use App\Tables\Columns\DateTimeColumn; use Filament\Actions; use Filament\Resources\Pages\ListRecords; use Filament\Tables\Actions\CreateAction; @@ -35,15 +36,13 @@ class ListApiKeys extends ListRecords ->hidden() ->searchable(), - TextColumn::make('last_used_at') + DateTimeColumn::make('last_used_at') ->label('Last Used') ->placeholder('Not Used') - ->dateTime() ->sortable(), - TextColumn::make('created_at') + DateTimeColumn::make('created_at') ->label('Created') - ->dateTime() ->sortable(), TextColumn::make('user.username') diff --git a/app/Filament/Resources/DatabaseHostResource/RelationManagers/DatabasesRelationManager.php b/app/Filament/Resources/DatabaseHostResource/RelationManagers/DatabasesRelationManager.php index 17cdb6248..dd77c6ae2 100644 --- a/app/Filament/Resources/DatabaseHostResource/RelationManagers/DatabasesRelationManager.php +++ b/app/Filament/Resources/DatabaseHostResource/RelationManagers/DatabasesRelationManager.php @@ -4,6 +4,7 @@ namespace App\Filament\Resources\DatabaseHostResource\RelationManagers; use App\Models\Database; use App\Services\Databases\DatabasePasswordService; +use App\Tables\Columns\DateTimeColumn; use Filament\Forms\Components\Actions\Action; use Filament\Forms\Components\TextInput; use Filament\Forms\Form; @@ -54,7 +55,7 @@ class DatabasesRelationManager extends RelationManager ->icon('tabler-brand-docker') ->url(fn (Database $database) => route('filament.admin.resources.servers.edit', ['record' => $database->server_id])), TextColumn::make('max_connections'), - TextColumn::make('created_at')->dateTime(), + DateTimeColumn::make('created_at'), ]) ->actions([ DeleteAction::make(), diff --git a/app/Filament/Resources/DatabaseResource/Pages/ListDatabases.php b/app/Filament/Resources/DatabaseResource/Pages/ListDatabases.php index 6dfe7762a..90b110245 100644 --- a/app/Filament/Resources/DatabaseResource/Pages/ListDatabases.php +++ b/app/Filament/Resources/DatabaseResource/Pages/ListDatabases.php @@ -3,6 +3,7 @@ namespace App\Filament\Resources\DatabaseResource\Pages; use App\Filament\Resources\DatabaseResource; +use App\Tables\Columns\DateTimeColumn; use Filament\Actions; use Filament\Resources\Pages\ListRecords; use Filament\Tables\Actions\BulkActionGroup; @@ -34,12 +35,10 @@ class ListDatabases extends ListRecords TextColumn::make('max_connections') ->numeric() ->sortable(), - TextColumn::make('created_at') - ->dateTime() + DateTimeColumn::make('created_at') ->sortable() ->toggleable(isToggledHiddenByDefault: true), - TextColumn::make('updated_at') - ->dateTime() + DateTimeColumn::make('updated_at') ->sortable() ->toggleable(isToggledHiddenByDefault: true), ]) diff --git a/app/Models/Model.php b/app/Models/Model.php index 20bc2bf33..ca36fbefe 100644 --- a/app/Models/Model.php +++ b/app/Models/Model.php @@ -2,11 +2,7 @@ namespace App\Models; -use Carbon\CarbonInterface; -use DateTimeInterface; use Illuminate\Support\Arr; -use Illuminate\Support\Carbon; -use Illuminate\Support\Facades\Date; use Illuminate\Support\Str; use Illuminate\Validation\Rule; use Illuminate\Container\Container; @@ -16,7 +12,6 @@ use App\Exceptions\Model\DataValidationException; use Illuminate\Database\Eloquent\Model as IlluminateModel; use Illuminate\Validation\Factory as ValidationFactory; use Illuminate\Validation\Validator; -use InvalidArgumentException; abstract class Model extends IlluminateModel { @@ -69,36 +64,6 @@ abstract class Model extends IlluminateModel return 'uuid'; } - protected function asDateTime($value): Carbon - { - $timezone = auth()->user()?->timezone ?? config('app.timezone', 'UTC'); - - if ($value instanceof CarbonInterface) { - return Date::instance($value->timezone($timezone)); - } - - if ($value instanceof DateTimeInterface) { - return Date::parse($value->format('Y-m-d H:i:s.u'), $timezone); - } - - if (is_numeric($value)) { - return Date::createFromTimestamp($value, $timezone); - } - - if ($this->isStandardDateFormat($value)) { - return Date::instance(Carbon::createFromFormat('Y-m-d', $value)->timezone($timezone)->startOfDay()); - } - - $format = $this->getDateFormat(); - try { - $date = Date::createFromFormat($format, $value)->timezone($timezone); - } catch (InvalidArgumentException) { - $date = false; - } - - return $date ?: Date::parse($value); - } - /** * Returns the validator instance used by this model. */ diff --git a/app/Models/User.php b/app/Models/User.php index adb2caeb6..8a3534136 100644 --- a/app/Models/User.php +++ b/app/Models/User.php @@ -188,6 +188,8 @@ class User extends Model implements AuthenticatableContract, AuthorizableContrac static::creating(function (self $user) { $user->uuid = Str::uuid()->toString(); + $user->timezone = env('APP_TIMEZONE', 'UTC'); + return true; }); diff --git a/app/Tables/Columns/DateTimeColumn.php b/app/Tables/Columns/DateTimeColumn.php new file mode 100644 index 000000000..a237e6248 --- /dev/null +++ b/app/Tables/Columns/DateTimeColumn.php @@ -0,0 +1,15 @@ +dateTime(timezone: auth()->user()?->timezone ?? config('app.timezone', 'UTC')); + } +} diff --git a/config/app.php b/config/app.php index eee3026e3..157356785 100644 --- a/config/app.php +++ b/config/app.php @@ -7,6 +7,8 @@ return [ 'version' => 'canary', + 'timezone' => 'UTC', + 'exceptions' => [ 'report_all' => env('APP_REPORT_ALL_EXCEPTIONS', false), ],