From f9288e450b89d42ac2ec4adac45d691354695ca0 Mon Sep 17 00:00:00 2001 From: snipe Date: Tue, 19 May 2026 14:24:24 +0100 Subject: [PATCH] Update seeder --- database/seeders/UserSeeder.php | 57 +++++++++++++++++++++------------ 1 file changed, 37 insertions(+), 20 deletions(-) diff --git a/database/seeders/UserSeeder.php b/database/seeders/UserSeeder.php index 975108207b..3d0277895c 100644 --- a/database/seeders/UserSeeder.php +++ b/database/seeders/UserSeeder.php @@ -33,27 +33,18 @@ class UserSeeder extends Seeder $departmentIds = Department::all()->pluck('id'); - User::factory()->count(1)->firstAdmin() - ->state(new Sequence(fn ($sequence) => [ - 'company_id' => $companyIds->random(), + // Named admins get multiple companies — they manage assets across several organisations. + foreach (['firstAdmin', 'snipeAdmin', 'testAdmin'] as $state) { + $user = User::factory()->{$state}()->create([ + 'company_id' => null, 'department_id' => $departmentIds->random(), - ])) - ->create(); - - User::factory()->count(1)->snipeAdmin() - ->state(new Sequence(fn ($sequence) => [ - 'company_id' => $companyIds->random(), - 'department_id' => $departmentIds->random(), - ])) - ->create(); - - User::factory()->count(1)->testAdmin() - ->state(new Sequence(fn ($sequence) => [ - 'company_id' => $companyIds->random(), - 'department_id' => $departmentIds->random(), - ])) - ->create(); + ]); + $ids = $companyIds->random(min(rand(2, 3), $companyIds->count()))->toArray(); + User::where('id', $user->id)->update(['company_id' => $ids[0]]); + $user->companies()->sync($ids); + } + // Superusers — one company each. User::factory()->count(3)->superuser() ->state(new Sequence(fn ($sequence) => [ 'company_id' => $companyIds->random(), @@ -61,6 +52,7 @@ class UserSeeder extends Seeder ])) ->create(); + // Admins — one company each. User::factory()->count(3)->admin() ->state(new Sequence(fn ($sequence) => [ 'company_id' => $companyIds->random(), @@ -68,13 +60,38 @@ class UserSeeder extends Seeder ])) ->create(); - User::factory()->count(2000)->viewAssets() + // Regular users — three groups: + // ~30 % (600) no company + // ~50 % (1 000) one company + // ~20 % (400) two or three companies + + User::factory()->count(600)->viewAssets() + ->state(new Sequence(fn ($sequence) => [ + 'company_id' => null, + 'department_id' => $departmentIds->random(), + ])) + ->create(); + + User::factory()->count(1000)->viewAssets() ->state(new Sequence(fn ($sequence) => [ 'company_id' => $companyIds->random(), 'department_id' => $departmentIds->random(), ])) ->create(); + $multiCompanyUsers = User::factory()->count(400)->viewAssets() + ->state(new Sequence(fn ($sequence) => [ + 'company_id' => null, + 'department_id' => $departmentIds->random(), + ])) + ->create(); + + foreach ($multiCompanyUsers as $user) { + $ids = $companyIds->random(min(rand(2, 3), $companyIds->count()))->toArray(); + User::where('id', $user->id)->update(['company_id' => $ids[0]]); + $user->companies()->sync($ids); + } + $src = public_path('/img/demo/avatars/'); $dst = 'avatars'.'/'; $del_files = Storage::files($dst);