diff --git a/database/factories/AccessoryFactory.php b/database/factories/AccessoryFactory.php index 5d17fe11c..0622bbeda 100644 --- a/database/factories/AccessoryFactory.php +++ b/database/factories/AccessoryFactory.php @@ -40,9 +40,7 @@ class AccessoryFactory extends Factory $this->faker->randomElement(['Bluetooth', 'Wired']), $this->faker->randomElement(['Keyboard', 'Wired']) ), - 'user_id' => function () { - return User::where('permissions->superuser', '1')->first() ?? User::factory()->firstAdmin(); - }, + 'user_id' => User::factory()->firstAdmin(), 'category_id' => Category::factory(), 'model_number' => $this->faker->numberBetween(1000000, 50000000), 'location_id' => Location::factory(), diff --git a/database/factories/ActionlogFactory.php b/database/factories/ActionlogFactory.php index 6fdd53c65..b03a68d7c 100644 --- a/database/factories/ActionlogFactory.php +++ b/database/factories/ActionlogFactory.php @@ -36,9 +36,7 @@ class ActionlogFactory extends Factory return [ 'item_id' => Asset::factory(), 'item_type' => Asset::class, - 'user_id' => function () { - return User::where('permissions->superuser', '1')->first() ?? User::factory()->firstAdmin(); - }, + 'user_id' => User::factory()->firstAdmin(), 'action_type' => 'uploaded', ]; } diff --git a/database/factories/AssetFactory.php b/database/factories/AssetFactory.php index e86cf0256..699069bb4 100644 --- a/database/factories/AssetFactory.php +++ b/database/factories/AssetFactory.php @@ -46,9 +46,7 @@ class AssetFactory extends Factory 'status_id' => function () { return Statuslabel::where('name', 'Ready to Deploy')->first() ?? Statuslabel::factory()->rtd()->create(['name' => 'Ready to Deploy']); }, - 'user_id' => function () { - return User::where('permissions->superuser', '1')->first() ?? User::factory()->firstAdmin(); - }, + 'user_id' => User::factory()->firstAdmin(), 'asset_tag' => $this->faker->unixTime('now'), 'notes' => 'Created by DB seeder', 'purchase_date' => $this->faker->dateTimeBetween('-1 years', 'now', date_default_timezone_get())->format('Y-m-d'), diff --git a/database/seeders/AccessorySeeder.php b/database/seeders/AccessorySeeder.php index 1e21e60f6..31f0c478d 100644 --- a/database/seeders/AccessorySeeder.php +++ b/database/seeders/AccessorySeeder.php @@ -5,6 +5,7 @@ namespace Database\Seeders; use App\Models\Accessory; use App\Models\Location; use App\Models\Supplier; +use App\Models\User; use Illuminate\Database\Seeder; use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\Log; @@ -29,23 +30,33 @@ class AccessorySeeder extends Seeder $supplierIds = Supplier::all()->pluck('id'); - Accessory::factory()->count(1)->appleUsbKeyboard()->create([ + $admin = User::where('permissions->superuser', '1')->first() ?? User::factory()->firstAdmin()->create(); + + Accessory::factory()->appleUsbKeyboard()->create([ 'location_id' => $locationIds->random(), 'supplier_id' => $supplierIds->random(), + 'user_id' => $admin->id, ]); - Accessory::factory()->count(1)->appleBtKeyboard()->create([ + + Accessory::factory()->appleBtKeyboard()->create([ 'location_id' => $locationIds->random(), 'supplier_id' => $supplierIds->random(), + 'user_id' => $admin->id, ]); - Accessory::factory()->count(1)->appleMouse()->create([ + + Accessory::factory()->appleMouse()->create([ 'location_id' => $locationIds->random(), 'supplier_id' => $supplierIds->random(), + 'user_id' => $admin->id, ]); - Accessory::factory()->count(1)->microsoftMouse()->create([ + + Accessory::factory()->microsoftMouse()->create([ 'location_id' => $locationIds->random(), 'supplier_id' => $supplierIds->random(), + 'user_id' => $admin->id, ]); + $src = public_path('/img/demo/accessories/'); $dst = 'accessories'.'/'; $del_files = Storage::files($dst); diff --git a/database/seeders/ActionlogSeeder.php b/database/seeders/ActionlogSeeder.php index b680b87b3..3cbcde047 100644 --- a/database/seeders/ActionlogSeeder.php +++ b/database/seeders/ActionlogSeeder.php @@ -5,6 +5,7 @@ namespace Database\Seeders; use App\Models\Actionlog; use App\Models\Asset; use App\Models\Location; +use App\Models\User; use Illuminate\Database\Seeder; class ActionlogSeeder extends Seeder @@ -21,14 +22,16 @@ class ActionlogSeeder extends Seeder $this->call(LocationSeeder::class); } + $admin = User::where('permissions->superuser', '1')->first() ?? User::factory()->firstAdmin()->create(); + Actionlog::factory() ->count(300) ->assetCheckoutToUser() - ->create(); + ->create(['user_id' => $admin->id]); Actionlog::factory() ->count(100) ->assetCheckoutToLocation() - ->create(); + ->create(['user_id' => $admin->id]); } } diff --git a/database/seeders/AssetSeeder.php b/database/seeders/AssetSeeder.php index 1b0ca71a4..53af19758 100644 --- a/database/seeders/AssetSeeder.php +++ b/database/seeders/AssetSeeder.php @@ -5,6 +5,7 @@ namespace Database\Seeders; use App\Models\Asset; use App\Models\Location; use App\Models\Supplier; +use App\Models\User; use Illuminate\Database\Eloquent\Factories\Sequence; use Illuminate\Database\Seeder; use Illuminate\Support\Facades\DB; @@ -13,201 +14,41 @@ use Illuminate\Support\Facades\Storage; class AssetSeeder extends Seeder { + private $admin; + private $locationIds; + private $supplierIds; + public function run() { Asset::truncate(); - if (! Location::count()) { - $this->call(LocationSeeder::class); - } + $this->ensureLocationsSeeded(); + $this->ensureSuppliersSeeded(); - $locationIds = Location::all()->pluck('id'); + $this->admin = User::where('permissions->superuser', '1')->first() ?? User::factory()->firstAdmin()->create(); + $this->locationIds = Location::all()->pluck('id'); + $this->supplierIds = Supplier::all()->pluck('id'); - if (! Supplier::count()) { - $this->call(SupplierSeeder::class); - } - - $supplierIds = Supplier::all()->pluck('id'); - - Asset::factory() - ->count(1000) - ->laptopMbp() - ->state(new Sequence(fn($sequence) => [ - 'rtd_location_id' => $locationIds->random(), - 'supplier_id' => $supplierIds->random(), - ])) - ->create(); - - Asset::factory() - ->count(50) - ->laptopMbpPending() - ->state(new Sequence(fn($sequence) => [ - 'rtd_location_id' => $locationIds->random(), - 'supplier_id' => $supplierIds->random(), - ])) - ->create(); - - Asset::factory() - ->count(50) - ->laptopMbpArchived() - ->state(new Sequence(fn($sequence) => [ - 'rtd_location_id' => $locationIds->random(), - 'supplier_id' => $supplierIds->random(), - ])) - ->create(); - - Asset::factory() - ->count(50) - ->laptopAir() - ->state(new Sequence(fn($sequence) => [ - 'rtd_location_id' => $locationIds->random(), - 'supplier_id' => $supplierIds->random(), - ])) - ->create(); - - Asset::factory() - ->count(5) - ->laptopSurface() - ->state(new Sequence(fn($sequence) => [ - 'rtd_location_id' => $locationIds->random(), - 'supplier_id' => $supplierIds->random(), - ])) - ->create(); - - Asset::factory() - ->count(5) - ->laptopXps() - ->state(new Sequence(fn($sequence) => [ - 'rtd_location_id' => $locationIds->random(), - 'supplier_id' => $supplierIds->random(), - ])) - ->create(); - - Asset::factory() - ->count(5) - ->laptopSpectre() - ->state(new Sequence(fn($sequence) => [ - 'rtd_location_id' => $locationIds->random(), - 'supplier_id' => $supplierIds->random(), - ])) - ->create(); - - Asset::factory() - ->count(5) - ->laptopZenbook() - ->state(new Sequence(fn($sequence) => [ - 'rtd_location_id' => $locationIds->random(), - 'supplier_id' => $supplierIds->random(), - ])) - ->create(); - - Asset::factory() - ->count(3) - ->laptopYoga() - ->state(new Sequence(fn($sequence) => [ - 'rtd_location_id' => $locationIds->random(), - 'supplier_id' => $supplierIds->random(), - ])) - ->create(); - - Asset::factory() - ->count(30) - ->desktopMacpro() - ->state(new Sequence(fn($sequence) => [ - 'rtd_location_id' => $locationIds->random(), - 'supplier_id' => $supplierIds->random(), - ])) - ->create(); - - Asset::factory() - ->count(30) - ->desktopLenovoI5() - ->state(new Sequence(fn($sequence) => [ - 'rtd_location_id' => $locationIds->random(), - 'supplier_id' => $supplierIds->random(), - ])) - ->create(); - - Asset::factory() - ->count(30) - ->desktopOptiplex() - ->state(new Sequence(fn($sequence) => [ - 'rtd_location_id' => $locationIds->random(), - 'supplier_id' => $supplierIds->random(), - ])) - ->create(); - - Asset::factory() - ->count(5) - ->confPolycom() - ->state(new Sequence(fn($sequence) => [ - 'rtd_location_id' => $locationIds->random(), - 'supplier_id' => $supplierIds->random(), - ])) - ->create(); - - Asset::factory() - ->count(2) - ->confPolycomcx() - ->state(new Sequence(fn($sequence) => [ - 'rtd_location_id' => $locationIds->random(), - 'supplier_id' => $supplierIds->random(), - ])) - ->create(); - - Asset::factory() - ->count(12) - ->tabletIpad() - ->state(new Sequence(fn($sequence) => [ - 'rtd_location_id' => $locationIds->random(), - 'supplier_id' => $supplierIds->random(), - ])) - ->create(); - - Asset::factory() - ->count(4) - ->tabletTab3() - ->state(new Sequence(fn($sequence) => [ - 'rtd_location_id' => $locationIds->random(), - 'supplier_id' => $supplierIds->random(), - ])) - ->create(); - - Asset::factory() - ->count(27) - ->phoneIphone11() - ->state(new Sequence(fn($sequence) => [ - 'rtd_location_id' => $locationIds->random(), - 'supplier_id' => $supplierIds->random(), - ])) - ->create(); - - Asset::factory() - ->count(40) - ->phoneIphone12() - ->state(new Sequence(fn($sequence) => [ - 'rtd_location_id' => $locationIds->random(), - 'supplier_id' => $supplierIds->random(), - ])) - ->create(); - - Asset::factory() - ->count(10) - ->ultrafine() - ->state(new Sequence(fn($sequence) => [ - 'rtd_location_id' => $locationIds->random(), - 'supplier_id' => $supplierIds->random(), - ])) - ->create(); - - Asset::factory() - ->count(10) - ->ultrasharp() - ->state(new Sequence(fn($sequence) => [ - 'rtd_location_id' => $locationIds->random(), - 'supplier_id' => $supplierIds->random(), - ])) - ->create(); + Asset::factory()->count(1000)->laptopMbp()->state(new Sequence($this->getState()))->create(); + Asset::factory()->count(50)->laptopMbpPending()->state(new Sequence($this->getState()))->create(); + Asset::factory()->count(50)->laptopMbpArchived()->state(new Sequence($this->getState()))->create(); + Asset::factory()->count(50)->laptopAir()->state(new Sequence($this->getState()))->create(); + Asset::factory()->count(5)->laptopSurface()->state(new Sequence($this->getState()))->create(); + Asset::factory()->count(5)->laptopXps()->state(new Sequence($this->getState()))->create(); + Asset::factory()->count(5)->laptopSpectre()->state(new Sequence($this->getState()))->create(); + Asset::factory()->count(5)->laptopZenbook()->state(new Sequence($this->getState()))->create(); + Asset::factory()->count(3)->laptopYoga()->state(new Sequence($this->getState()))->create(); + Asset::factory()->count(30)->desktopMacpro()->state(new Sequence($this->getState()))->create(); + Asset::factory()->count(30)->desktopLenovoI5()->state(new Sequence($this->getState()))->create(); + Asset::factory()->count(30)->desktopOptiplex()->state(new Sequence($this->getState()))->create(); + Asset::factory()->count(5)->confPolycom()->state(new Sequence($this->getState()))->create(); + Asset::factory()->count(2)->confPolycomcx()->state(new Sequence($this->getState()))->create(); + Asset::factory()->count(12)->tabletIpad()->state(new Sequence($this->getState()))->create(); + Asset::factory()->count(4)->tabletTab3()->state(new Sequence($this->getState()))->create(); + Asset::factory()->count(27)->phoneIphone11()->state(new Sequence($this->getState()))->create(); + Asset::factory()->count(40)->phoneIphone12()->state(new Sequence($this->getState()))->create(); + Asset::factory()->count(10)->ultrafine()->state(new Sequence($this->getState()))->create(); + Asset::factory()->count(10)->ultrasharp()->state(new Sequence($this->getState()))->create(); $del_files = Storage::files('assets'); foreach ($del_files as $del_file) { // iterate files @@ -221,4 +62,27 @@ class AssetSeeder extends Seeder DB::table('checkout_requests')->truncate(); } + + private function ensureLocationsSeeded() + { + if (! Location::count()) { + $this->call(LocationSeeder::class); + } + } + + private function ensureSuppliersSeeded() + { + if (! Supplier::count()) { + $this->call(SupplierSeeder::class); + } + } + + private function getState() + { + return fn($sequence) => [ + 'rtd_location_id' => $this->locationIds->random(), + 'supplier_id' => $this->supplierIds->random(), + 'user_id' => $this->admin->id, + ]; + } }