From 15c76645e4dbe2de6263071163638e77f58041be Mon Sep 17 00:00:00 2001 From: Yoga Pangestu Date: Mon, 13 Apr 2026 09:28:34 +0700 Subject: [PATCH] refactor: update user migration logic to filter deleted records and adjust role filtering in user table --- app/Console/Commands/MigrateUserCommand.php | 38 ++++++++++--------- .../Master/Users/Tables/UserTable.php | 2 +- 2 files changed, 22 insertions(+), 18 deletions(-) diff --git a/app/Console/Commands/MigrateUserCommand.php b/app/Console/Commands/MigrateUserCommand.php index e6961c3..1340369 100644 --- a/app/Console/Commands/MigrateUserCommand.php +++ b/app/Console/Commands/MigrateUserCommand.php @@ -33,7 +33,7 @@ public function handle() { $this->info('Starting user migration...'); - $legacyUsers = DB::connection('mysql_second')->table('users')->get(); + $legacyUsers = DB::connection('mysql_second')->table('users')->where('deleted_at', null)->get(); if ($legacyUsers->isEmpty()) { $this->warn('No users found in legacy database.'); @@ -42,10 +42,12 @@ public function handle() } foreach ($legacyUsers as $legacy) { - $user = User::where('email', $legacy->email)->first(); + $existingById = User::where('id', $legacy->id)->first(); + $existingByEmail = User::where('email', $legacy->email)->first(); + $roleName = $this->mapRole($legacy->role); - if (! $user) { + if (! $existingById && ! $existingByEmail) { $username = $this->generateUniqueUsername($legacy->name, $legacy->email); @@ -55,9 +57,9 @@ public function handle() 'email' => $legacy->email, 'username' => $username, 'password' => $legacy->password, - 'is_active' => $legacy->status == '1' - ? IsActive::ACTIVE->value - : IsActive::INACTIVE->value, + 'is_active' => $legacy->status == '2' + ? IsActive::INACTIVE->value + : IsActive::ACTIVE->value, 'email_verified_at' => now(), 'created_at' => $legacy->created_at ?? now(), 'updated_at' => $legacy->updated_at ?? now(), @@ -65,20 +67,22 @@ public function handle() $user = User::find($userId); - if ($roleName) { + if ($user && $roleName) { $user->syncRoles([$roleName]); } - } - if ($user && ! $user->settings()->exists()) { - $user->settings()->create([ - 'notif_style' => NotifStyle::CHEERFUL, - 'primary_color' => 'blue', - 'font' => 'Inter', - 'content_width' => 'full', - 'border_radius' => 'lg', - 'top_navigation' => false, - ]); + if (! $user->settings()->exists()) { + $user->settings()->create([ + 'notif_style' => NotifStyle::FORMAL, + 'primary_color' => 'blue', + 'font' => 'Inter', + 'content_width' => 'full', + 'border_radius' => 'lg', + 'top_navigation' => false, + ]); + } + } else { + $this->info('User already exists: '.$legacy->email); } } diff --git a/app/Filament/Resources/Master/Users/Tables/UserTable.php b/app/Filament/Resources/Master/Users/Tables/UserTable.php index c056891..cf51987 100644 --- a/app/Filament/Resources/Master/Users/Tables/UserTable.php +++ b/app/Filament/Resources/Master/Users/Tables/UserTable.php @@ -85,7 +85,7 @@ public static function configure(Table $table): Table SelectFilter::make('roles') ->label('Peran') ->relationship('roles', 'name', function (Builder $query): Builder { - return $query->whereNotIn('name', [RoleEnum::DEVELOPER, RoleEnum::PERUSAHAAN]); + return $query->where('name', '!=', RoleEnum::DEVELOPER->value); }) ->multiple() ->preload()