role enum

This commit is contained in:
Masroor Ehsan 2025-01-07 16:50:31 +06:00
parent 2cd9050247
commit e85799b635
6 changed files with 28 additions and 26 deletions

View File

@ -2,7 +2,7 @@
namespace App\DAL\Studies; namespace App\DAL\Studies;
use App\Models\Enums\UserRole; use App\Models\Enums\Role;
use Exception; use Exception;
use Illuminate\Support\Facades\Cache; use Illuminate\Support\Facades\Cache;
@ -17,11 +17,11 @@ public static function getLister(): IUserStudyLister
$key = sprintf('user_role:%d', auth()->id()); $key = sprintf('user_role:%d', auth()->id());
$role = Cache::remember($key, now()->addMinutes(5), fn (): string => auth()->user()->roles()->first()->name); $role = Cache::remember($key, now()->addMinutes(5), fn (): string => auth()->user()->roles()->first()->name);
return match (UserRole::from($role)) { return match (Role::from($role)) {
UserRole::Admin => new AdminWorklist, Role::Admin => new AdminWorklist,
UserRole::Technician => new TechnicianWorklist, Role::Technician => new TechnicianWorklist,
UserRole::Radiologist => new RadiologistWorklist, Role::Radiologist => new RadiologistWorklist,
UserRole::ReferringDoctor => new ReferrerWorklist, Role::Clinician => new ReferrerWorklist,
default => throw new Exception("Unknown user role: {$role}"), default => throw new Exception("Unknown user role: {$role}"),
}; };
} }

View File

@ -7,7 +7,7 @@
use App\Http\Requests\AssignPhysicianRequest; use App\Http\Requests\AssignPhysicianRequest;
use App\Models\Enums\Permission; use App\Models\Enums\Permission;
use App\Models\Enums\ReportStatus; use App\Models\Enums\ReportStatus;
use App\Models\Enums\UserRole; use App\Models\Enums\Role;
use App\Models\Study; use App\Models\Study;
use App\Models\User; use App\Models\User;
use App\Services\AuditTrail\Activity; use App\Services\AuditTrail\Activity;
@ -20,7 +20,7 @@ public function show()
abort_unless(auth()->user()->may(Permission::AssignPhysician), 403); abort_unless(auth()->user()->may(Permission::AssignPhysician), 403);
$this->decodeKeys(); $this->decodeKeys();
$study = Study::with('assignedPhysician')->findOrFail($this->key); $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); $stats = Radiologists::worklist_stats(3, ReportStatus::Finalized->value);
foreach ($stats as $rad) { foreach ($stats as $rad) {
$found = $rads->where('id', $rad->id)->first(); $found = $rads->where('id', $rad->id)->first();

View File

@ -2,15 +2,17 @@
namespace App\Models\Enums; namespace App\Models\Enums;
enum UserRole: string enum Role: string
{ {
case Guest = 'guest'; case Guest = 'guest';
case Patient = 'patient'; case Patient = 'patient';
case ReferringDoctor = 'referring_doctor'; case Clinician = 'clinician';
case Technician = 'technician'; case Technician = 'technician';
case Radiologist = 'radiologist'; case Radiologist = 'radiologist';
case Associate = 'associate'; case Associate = 'associate';
case SystemAgent = 'system_agent'; case SystemAgent = 'system_agent';
case SiteAdmin = 'site_admin'; case SiteAdmin = 'site_admin';
case Clerk = 'clerk';
case Transcriptionist = 'transcriptionist';
case Admin = 'admin'; case Admin = 'admin';
} }

View File

@ -3,7 +3,7 @@
namespace App\Models; namespace App\Models;
use App\Models\Enums\Permission; use App\Models\Enums\Permission;
use App\Models\Enums\UserRole; use App\Models\Enums\Role;
use App\Models\Traits\HashableId; use App\Models\Traits\HashableId;
use App\Services\UserService; use App\Services\UserService;
use Carbon\Carbon; use Carbon\Carbon;
@ -86,7 +86,7 @@ public function isAdmin(): bool
{ {
return cache()->remember('user.is_admin:' . $this->id, return cache()->remember('user.is_admin:' . $this->id,
5 * 60, 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, return cache()->remember('user.is_tech:' . $this->id,
5 * 60, 5 * 60,
fn () => $this->hasRole(UserRole::Technician) fn () => $this->hasRole(Role::Technician)
); );
} }

View File

@ -3,7 +3,7 @@
namespace Database\Seeders; namespace Database\Seeders;
use App\Models\Enums\Permission; use App\Models\Enums\Permission;
use App\Models\Enums\UserRole; use App\Models\Enums\Role;
use Illuminate\Database\Seeder; use Illuminate\Database\Seeder;
use Spatie\Permission\Models\Permission as SpatiePermission; use Spatie\Permission\Models\Permission as SpatiePermission;
use Spatie\Permission\Models\Role as SpatieRole; use Spatie\Permission\Models\Role as SpatieRole;
@ -12,13 +12,13 @@ class RoleSeeder extends Seeder
{ {
public function run(): void public function run(): void
{ {
foreach (UserRole::cases() as $role) { foreach (Role::cases() as $role) {
SpatieRole::create(['name' => $role->value]); SpatieRole::create(['name' => $role->value]);
} }
$adm = SpatieRole::findByName(UserRole::Admin->value); $adm = SpatieRole::findByName(Role::Admin->value);
$rad = SpatieRole::findByName(UserRole::Radiologist->value); $rad = SpatieRole::findByName(Role::Radiologist->value);
$tech = SpatieRole::findByName(UserRole::Technician->value); $tech = SpatieRole::findByName(Role::Technician->value);
$guest = SpatieRole::findByName(UserRole::Guest->value); $guest = SpatieRole::findByName(Role::Guest->value);
foreach (Permission::cases() as $perm) { foreach (Permission::cases() as $perm) {
SpatiePermission::create(['name' => $perm->value]); SpatiePermission::create(['name' => $perm->value]);

View File

@ -2,7 +2,7 @@
namespace Database\Seeders; namespace Database\Seeders;
use App\Models\Enums\UserRole; use App\Models\Enums\Role;
use App\Models\Institute; use App\Models\Institute;
use App\Models\User; use App\Models\User;
use Illuminate\Database\Seeder; use Illuminate\Database\Seeder;
@ -20,7 +20,7 @@ public function run(): void
'password' => bcrypt(fake()->password(20)), 'password' => bcrypt(fake()->password(20)),
'is_active' => false, 'is_active' => false,
]); ]);
$usr->assignRole(UserRole::SystemAgent); $usr->assignRole(Role::SystemAgent);
$usr = User::factory()->create([ $usr = User::factory()->create([
'first_name' => 'Administrator', 'first_name' => 'Administrator',
@ -30,7 +30,7 @@ public function run(): void
'email_verified_at' => now(), 'email_verified_at' => now(),
'phone' => '+8801733938582', 'phone' => '+8801733938582',
]); ]);
$usr->assignRole(UserRole::Admin); $usr->assignRole(Role::Admin);
$chevron = Institute::where('name', 'Chevron')->first(); $chevron = Institute::where('name', 'Chevron')->first();
$cmch = Institute::where('name', 'CMCH')->first(); $cmch = Institute::where('name', 'CMCH')->first();
@ -39,23 +39,23 @@ public function run(): void
'institute_id' => $chevron->id, 'institute_id' => $chevron->id,
]) ])
->each(function ($u) { ->each(function ($u) {
$u->assignRole(UserRole::Technician); $u->assignRole(Role::Technician);
}); });
User::factory(2)->create([ User::factory(2)->create([
'institute_id' => $cmch->id, 'institute_id' => $cmch->id,
]) ])
->each(function ($u) { ->each(function ($u) {
$u->assignRole(UserRole::Technician); $u->assignRole(Role::Technician);
}); });
User::factory(8)->create() User::factory(8)->create()
->each(function ($u) { ->each(function ($u) {
$u->assignRole(UserRole::Radiologist); $u->assignRole(Role::Radiologist);
}); });
User::factory(3)->create() User::factory(3)->create()
->each(function ($u) { ->each(function ($u) {
$u->assignRole(UserRole::Guest); $u->assignRole(Role::Guest);
}); });
} }
} }