53 lines
1.5 KiB
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;
|
|
}
|
|
}
|
|
|