65 lines
2.0 KiB
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);
|
|
}
|
|
}
|