ultimatepos/Modules/ManagementTools/Console/ResetExecutiveRoleMatrixCommand.php

53 lines
1.5 KiB
PHP

<?php
namespace Modules\ManagementTools\Console;
use App\User;
use Illuminate\Console\Command;
use Spatie\Permission\Models\Role;
class ResetExecutiveRoleMatrixCommand extends Command
{
protected $signature = 'managementtools:reset-role-matrix {business_id} {--delete-roles}';
protected $description = 'Reset executive role assignments safely for a business';
public function handle()
{
$businessId = (int) $this->argument('business_id');
$roleNames = [
"CEO#{$businessId}",
"COO#{$businessId}",
"CFO#{$businessId}",
"PMO#{$businessId}",
"Board#{$businessId}",
];
$users = User::where('business_id', $businessId)->where('allow_login', 1)->get();
foreach ($users as $user) {
foreach ($roleNames as $roleName) {
if ($user->hasRole($roleName)) {
$user->removeRole($roleName);
}
}
}
$this->info("Executive roles detached from {$users->count()} user(s).");
if ($this->option('delete-roles')) {
foreach ($roleNames as $roleName) {
$role = Role::where('name', $roleName)->where('business_id', $businessId)->first();
if ($role) {
$role->delete();
$this->info("Deleted role: {$roleName}");
}
}
}
$this->info("Executive role matrix reset completed for business #{$businessId}");
return self::SUCCESS;
}
}