snipe-it/database/seeders/LicenseSeeder.php

72 lines
2.3 KiB
PHP
Raw Normal View History

2016-03-25 01:18:05 -07:00
<?php
2021-06-10 13:18:00 -07:00
namespace Database\Seeders;
2023-03-16 13:47:02 -07:00
use App\Models\Category;
2016-03-25 01:18:05 -07:00
use App\Models\License;
use App\Models\LicenseSeat;
use App\Models\Supplier;
use App\Models\User;
use Illuminate\Database\Seeder;
use Illuminate\Support\Facades\Log;
2016-03-25 01:18:05 -07:00
class LicenseSeeder extends Seeder
{
public function run()
{
License::truncate();
LicenseSeat::truncate();
2023-03-16 13:47:02 -07:00
if (! Category::count()) {
$this->call(CategorySeeder::class);
}
$categories = Category::where('category_type', 'license')->get();
$graphicsSoftwareCategory = $categories->first(fn($category) => $category->name === 'Graphics Software');
$officeSoftwareCategory = $categories->first(fn($category) => $category->name === 'Office Software');
if (!$graphicsSoftwareCategory) {
Log::info('Graphics Software category not created. Using random category for seeding.');
$graphicsSoftwareCategory = Category::inRandomOrder()->first();
}
if (!$officeSoftwareCategory) {
Log::info('Office Software category not created. Using random category for seeding.');
$officeSoftwareCategory = Category::inRandomOrder()->first();
}
2023-03-16 13:47:02 -07:00
if (! Supplier::count()) {
$this->call(SupplierSeeder::class);
}
$supplierIds = Supplier::all()->pluck('id');
$admin = User::where('permissions->superuser', '1')->first() ?? User::factory()->firstAdmin()->create();
2023-03-16 13:47:02 -07:00
License::factory()->count(1)->photoshop()->create([
'category_id' => $graphicsSoftwareCategory->id,
2023-03-16 13:47:02 -07:00
'supplier_id' => $supplierIds->random(),
'created_by' => $admin->id,
2023-03-16 13:47:02 -07:00
]);
2023-03-16 13:47:02 -07:00
License::factory()->count(1)->acrobat()->create([
'category_id' => $officeSoftwareCategory->id,
2023-03-16 13:47:02 -07:00
'supplier_id' => $supplierIds->random(),
'created_by' => $admin->id,
2023-03-16 13:47:02 -07:00
]);
2023-03-16 13:47:02 -07:00
License::factory()->count(1)->indesign()->create([
'category_id' => $graphicsSoftwareCategory->id,
2023-03-16 13:47:02 -07:00
'supplier_id' => $supplierIds->random(),
'created_by' => $admin->id,
2023-03-16 13:47:02 -07:00
]);
2023-03-16 13:47:02 -07:00
License::factory()->count(1)->office()->create([
'category_id' => $officeSoftwareCategory->id,
2023-03-16 13:47:02 -07:00
'supplier_id' => $supplierIds->random(),
'created_by' => $admin->id,
2023-03-16 13:47:02 -07:00
]);
}
2016-03-25 01:18:05 -07:00
}