From a5bc322170aed0d8bb9106dec0ffc33ffed94c47 Mon Sep 17 00:00:00 2001 From: Mekan1206 Date: Sun, 21 Dec 2025 20:58:10 +0500 Subject: [PATCH] Enhance MigrationController and ShieldSeeder for improved data migration and role management - Added new migrators: ModelHasRolesMigrator and OnlinePaymentsMigrator to MigrationController. - Introduced a test method in MigrationController to facilitate online payments migration. - Updated ShieldSeeder to include role IDs for better role management and added new roles with specific IDs. --- app/Http/Controllers/MigrationController.php | 21 ++++++--- .../Migrators/ModelHasRolesMigrator.php | 26 +++++++++++ .../Migrators/OnlinePaymentsMigrator.php | 43 +++++++++++++++++++ database/seeders/ShieldSeeder.php | 9 +++- 4 files changed, 92 insertions(+), 7 deletions(-) create mode 100644 database/seeders/Migrators/ModelHasRolesMigrator.php create mode 100644 database/seeders/Migrators/OnlinePaymentsMigrator.php diff --git a/app/Http/Controllers/MigrationController.php b/app/Http/Controllers/MigrationController.php index bbda80b..154f0b2 100644 --- a/app/Http/Controllers/MigrationController.php +++ b/app/Http/Controllers/MigrationController.php @@ -21,11 +21,15 @@ use Database\Seeders\Migrators\PersonalAccessTokensMigrator; use Database\Seeders\Migrators\CardOrdersMigrator; use Database\Seeders\Migrators\VisaMasterSettingsMigrator; use Database\Seeders\Migrators\CardPinOrdersMigrator; +use Database\Seeders\Migrators\ModelHasRolesMigrator; +use Database\Seeders\Migrators\OnlinePaymentsMigrator; class MigrationController extends Controller { public function index() { + return $this->test(); + $migrators = [ new ActionEventsMigrator(), new UsersMigrator(), @@ -42,13 +46,11 @@ class MigrationController extends Controller new CardOrdersMigrator(), new CardPinOrdersMigrator(), new LoanOrdersMigrator(), - new VisaMasterSettingsMigrator(), - - - new MediaMigrator(), - new ProvincesMigrator(), - + new ModelHasRolesMigrator(), new VisaMasterPaymentOrdersMigrator(), + new OnlinePaymentsMigrator(), + + new MediaMigrator(), ]; foreach ($migrators as $migrator) { @@ -57,4 +59,11 @@ class MigrationController extends Controller return 'done'; } + + public function test() + { + (new OnlinePaymentsMigrator())->migrate(); + + return 'done'; + } } diff --git a/database/seeders/Migrators/ModelHasRolesMigrator.php b/database/seeders/Migrators/ModelHasRolesMigrator.php new file mode 100644 index 0000000..b1d7e97 --- /dev/null +++ b/database/seeders/Migrators/ModelHasRolesMigrator.php @@ -0,0 +1,26 @@ +truncate(); + + $path = database_path('data/tested/model_has_roles.json'); + + $rawData = File::json($path); + + foreach ($rawData as $data) { + DB::table('model_has_roles') + ->insert($data); + } + + DB::statement("SELECT setval('model_has_roles_id_seq', (SELECT MAX(id) from model_has_roles));"); + DB::statement("SELECT nextval('model_has_roles_id_seq');"); + } +} \ No newline at end of file diff --git a/database/seeders/Migrators/OnlinePaymentsMigrator.php b/database/seeders/Migrators/OnlinePaymentsMigrator.php new file mode 100644 index 0000000..71cc693 --- /dev/null +++ b/database/seeders/Migrators/OnlinePaymentsMigrator.php @@ -0,0 +1,43 @@ +truncate(); + + $path = database_path('data/tested/online_payment_histories.json'); + + $rawData = File::json($path); + + foreach ($rawData as $data) { + if ($data['online_paymantable_type']) { + if ($data['online_paymantable_type'] == 'App\Models\Order\Card\Requisite\CardRequisite') { + continue; + } + + $data['online_paymantable_type'] = match ($data['online_paymantable_type']) { + 'App\Models\Order\Card\CardOrder' => CardOrder::class, + 'App\Models\Order\Card\CardPin\CardPin' => CardPinOrder::class, + // 'App\Modules\SberPaymentOrder\Models\SberPaymentOrder' => SberPaymentOrder::class, + 'App\Modules\VisaMasterPaymentOrder\Models\VisaMasterPaymentOrder' => VisaMasterPaymentOrder::class, + '\App\Modules\VisaMasterPaymentOrder\Models\VisaMasterPaymentOrder' => VisaMasterPaymentOrder::class, + }; + } + + DB::table('online_payments') + ->insert($data); + } + + DB::statement("SELECT setval('online_payments_id_seq', (SELECT MAX(id) from online_payments));"); + DB::statement("SELECT nextval('online_payments_id_seq');"); + } +} \ No newline at end of file diff --git a/database/seeders/ShieldSeeder.php b/database/seeders/ShieldSeeder.php index 4655d19..5297ade 100644 --- a/database/seeders/ShieldSeeder.php +++ b/database/seeders/ShieldSeeder.php @@ -13,7 +13,7 @@ class ShieldSeeder extends Seeder { app()[PermissionRegistrar::class]->forgetCachedPermissions(); - $rolesWithPermissions = '[{"name":"super_admin","guard_name":"web","permissions":["ViewAny:Role","View:Role","Create:Role","Update:Role","Delete:Role","Restore:Role","ForceDelete:Role","ForceDeleteAny:Role","RestoreAny:Role","Replicate:Role","Reorder:Role"]}]'; + $rolesWithPermissions = '[{"id":2,"name":"super_admin","guard_name":"web","permissions":["ViewAny:Role","View:Role","Create:Role","Update:Role","Delete:Role","Restore:Role","ForceDelete:Role","ForceDeleteAny:Role","RestoreAny:Role","Replicate:Role","Reorder:Role"]}]'; $directPermissions = '[]'; static::makeRolesWithPermissions($rolesWithPermissions); @@ -32,26 +32,32 @@ class ShieldSeeder extends Seeder $additionalRoles = collect([ [ + 'id' => 3, 'name' => 'admin', 'guard_name' => 'web', ], [ + 'id' => 4, 'name' => 'operator', 'guard_name' => 'web', ], [ + 'id' => 10, 'name' => 'operator_card', 'guard_name' => 'web', ], [ + 'id' => 11, 'name' => 'operator_loan', 'guard_name' => 'web', ], [ + 'id' => 12, 'name' => 'client', 'guard_name' => 'web', ], [ + 'id' => 6, 'name' => 'currency_maintainer', 'guard_name' => 'web', ], @@ -74,6 +80,7 @@ class ShieldSeeder extends Seeder foreach ($rolePlusPermissions as $rolePlusPermission) { $role = $roleModel::firstOrCreate([ + 'id' => $rolePlusPermission['id'], 'name' => $rolePlusPermission['name'], 'guard_name' => $rolePlusPermission['guard_name'], ]);