diff --git a/app/DAL/Studies/WorklistFactory.php b/app/DAL/Studies/WorklistFactory.php index 9a8f2a7..50fbccb 100644 --- a/app/DAL/Studies/WorklistFactory.php +++ b/app/DAL/Studies/WorklistFactory.php @@ -2,7 +2,7 @@ namespace App\DAL\Studies; -use App\Models\Enums\UserRole; +use App\Models\Enums\Role; use Exception; use Illuminate\Support\Facades\Cache; @@ -17,11 +17,11 @@ public static function getLister(): IUserStudyLister $key = sprintf('user_role:%d', auth()->id()); $role = Cache::remember($key, now()->addMinutes(5), fn (): string => auth()->user()->roles()->first()->name); - return match (UserRole::from($role)) { - UserRole::Admin => new AdminWorklist, - UserRole::Technician => new TechnicianWorklist, - UserRole::Radiologist => new RadiologistWorklist, - UserRole::ReferringDoctor => new ReferrerWorklist, + return match (Role::from($role)) { + Role::Admin => new AdminWorklist, + Role::Technician => new TechnicianWorklist, + Role::Radiologist => new RadiologistWorklist, + Role::Clinician => new ReferrerWorklist, default => throw new Exception("Unknown user role: {$role}"), }; } diff --git a/app/Http/Controllers/Staff/StudyAssignmentController.php b/app/Http/Controllers/Staff/StudyAssignmentController.php index 7a0d265..b4a8f7b 100644 --- a/app/Http/Controllers/Staff/StudyAssignmentController.php +++ b/app/Http/Controllers/Staff/StudyAssignmentController.php @@ -7,7 +7,7 @@ use App\Http\Requests\AssignPhysicianRequest; use App\Models\Enums\Permission; use App\Models\Enums\ReportStatus; -use App\Models\Enums\UserRole; +use App\Models\Enums\Role; use App\Models\Study; use App\Models\User; use App\Services\AuditTrail\Activity; @@ -20,7 +20,7 @@ public function show() abort_unless(auth()->user()->may(Permission::AssignPhysician), 403); $this->decodeKeys(); $study = Study::with('assignedPhysician')->findOrFail($this->key); - $rads = User::active()->role(UserRole::Radiologist)->get(['id', 'display_name', 'profile_photo_path', 'first_name', 'last_name', 'created_at']); + $rads = User::active()->role(Role::Radiologist)->get(['id', 'display_name', 'profile_photo_path', 'first_name', 'last_name', 'created_at']); $stats = Radiologists::worklist_stats(3, ReportStatus::Finalized->value); foreach ($stats as $rad) { $found = $rads->where('id', $rad->id)->first(); diff --git a/app/Models/Enums/UserRole.php b/app/Models/Enums/Role.php similarity index 70% rename from app/Models/Enums/UserRole.php rename to app/Models/Enums/Role.php index 567d997..1f9eebb 100644 --- a/app/Models/Enums/UserRole.php +++ b/app/Models/Enums/Role.php @@ -2,15 +2,17 @@ namespace App\Models\Enums; -enum UserRole: string +enum Role: string { case Guest = 'guest'; case Patient = 'patient'; - case ReferringDoctor = 'referring_doctor'; + case Clinician = 'clinician'; case Technician = 'technician'; case Radiologist = 'radiologist'; case Associate = 'associate'; case SystemAgent = 'system_agent'; case SiteAdmin = 'site_admin'; + case Clerk = 'clerk'; + case Transcriptionist = 'transcriptionist'; case Admin = 'admin'; } diff --git a/app/Models/User.php b/app/Models/User.php index 8926604..d2ea355 100644 --- a/app/Models/User.php +++ b/app/Models/User.php @@ -3,7 +3,7 @@ namespace App\Models; use App\Models\Enums\Permission; -use App\Models\Enums\UserRole; +use App\Models\Enums\Role; use App\Models\Traits\HashableId; use App\Services\UserService; use Carbon\Carbon; @@ -86,7 +86,7 @@ public function isAdmin(): bool { return cache()->remember('user.is_admin:' . $this->id, 5 * 60, - fn () => $this->hasRole(UserRole::Admin) + fn () => $this->hasRole(Role::Admin) ); } @@ -94,7 +94,7 @@ public function isTech(): bool { return cache()->remember('user.is_tech:' . $this->id, 5 * 60, - fn () => $this->hasRole(UserRole::Technician) + fn () => $this->hasRole(Role::Technician) ); } diff --git a/database/seeders/RoleSeeder.php b/database/seeders/RoleSeeder.php index b7cc548..edcc5b6 100644 --- a/database/seeders/RoleSeeder.php +++ b/database/seeders/RoleSeeder.php @@ -3,7 +3,7 @@ namespace Database\Seeders; use App\Models\Enums\Permission; -use App\Models\Enums\UserRole; +use App\Models\Enums\Role; use Illuminate\Database\Seeder; use Spatie\Permission\Models\Permission as SpatiePermission; use Spatie\Permission\Models\Role as SpatieRole; @@ -12,13 +12,13 @@ class RoleSeeder extends Seeder { public function run(): void { - foreach (UserRole::cases() as $role) { + foreach (Role::cases() as $role) { SpatieRole::create(['name' => $role->value]); } - $adm = SpatieRole::findByName(UserRole::Admin->value); - $rad = SpatieRole::findByName(UserRole::Radiologist->value); - $tech = SpatieRole::findByName(UserRole::Technician->value); - $guest = SpatieRole::findByName(UserRole::Guest->value); + $adm = SpatieRole::findByName(Role::Admin->value); + $rad = SpatieRole::findByName(Role::Radiologist->value); + $tech = SpatieRole::findByName(Role::Technician->value); + $guest = SpatieRole::findByName(Role::Guest->value); foreach (Permission::cases() as $perm) { SpatiePermission::create(['name' => $perm->value]); diff --git a/database/seeders/UserSeeder.php b/database/seeders/UserSeeder.php index 63413fc..480c50c 100644 --- a/database/seeders/UserSeeder.php +++ b/database/seeders/UserSeeder.php @@ -2,7 +2,7 @@ namespace Database\Seeders; -use App\Models\Enums\UserRole; +use App\Models\Enums\Role; use App\Models\Institute; use App\Models\User; use Illuminate\Database\Seeder; @@ -20,7 +20,7 @@ public function run(): void 'password' => bcrypt(fake()->password(20)), 'is_active' => false, ]); - $usr->assignRole(UserRole::SystemAgent); + $usr->assignRole(Role::SystemAgent); $usr = User::factory()->create([ 'first_name' => 'Administrator', @@ -30,7 +30,7 @@ public function run(): void 'email_verified_at' => now(), 'phone' => '+8801733938582', ]); - $usr->assignRole(UserRole::Admin); + $usr->assignRole(Role::Admin); $chevron = Institute::where('name', 'Chevron')->first(); $cmch = Institute::where('name', 'CMCH')->first(); @@ -39,23 +39,23 @@ public function run(): void 'institute_id' => $chevron->id, ]) ->each(function ($u) { - $u->assignRole(UserRole::Technician); + $u->assignRole(Role::Technician); }); User::factory(2)->create([ 'institute_id' => $cmch->id, ]) ->each(function ($u) { - $u->assignRole(UserRole::Technician); + $u->assignRole(Role::Technician); }); User::factory(8)->create() ->each(function ($u) { - $u->assignRole(UserRole::Radiologist); + $u->assignRole(Role::Radiologist); }); User::factory(3)->create() ->each(function ($u) { - $u->assignRole(UserRole::Guest); + $u->assignRole(Role::Guest); }); } }