radfusion/database/seeders/UserSeeder.php

65 lines
2.0 KiB
PHP

<?php
namespace Database\Seeders;
use App\Domain\ACL\Role;
use App\Models\Department;
use App\Models\Organization;
use App\Models\User;
use App\Services\Pacs\Sync\StudiesSync;
use Illuminate\Database\Seeder;
use Spatie\Permission\Models\Role as SpatieRole;
class UserSeeder extends Seeder
{
public function run(): void
{
// User::factory(10)->create();
$usr = User::factory()->create([
'first_name' => 'PACS Agent',
'display_name' => 'PACS Agent',
'username' => StudiesSync::SYNC_AGENT,
'password' => bcrypt(fake()->password(20)),
'is_active' => false,
]);
$usr->assignRole(Role::SystemAgent);
$orgs = Organization::pluck('id', 'name');
$depts = Department::pluck('id', 'name');
$roles = SpatieRole::pluck('id', 'name');
$skip_first = true;
$csv_file = fopen(base_path('database/data/users.csv'), 'r');
while (($data = fgetcsv($csv_file, 2000, ',')) !== false) {
if ($skip_first) {
$skip_first = false;
continue;
}
$data = array_trim_strings($data, true);
$org_id = $data[9] ? $orgs[$data[9]] : null;
$dept_id = $data[10] ? $depts[$data[10]] : null;
$role = Role::from(strtolower($data[8]));
$user = User::create([
'is_active' => true,
'display_name' => $data[0],
'prefix' => $data[1],
'first_name' => $data[2],
'last_name' => $data[3],
'signature_text' => $data[4],
'username' => $data[5],
'password' => bcrypt('password'),
'email' => strtolower($data[6]),
'phone' => (string) $data[7],
'email_verified_at' => $data[6] ? now() : null,
'organization_id' => $org_id,
'department_id' => $dept_id,
]);
$user->assignRole($role->value);
}
fclose($csv_file);
}
}