argument('business_id'); $adminRoleName = "Admin#{$businessId}"; $adminRole = Role::where('name', $adminRoleName)->where('business_id', $businessId)->first(); $userQuery = User::where('business_id', $businessId)->where('allow_login', 1); if ($adminRole) { $userQuery->whereHas('roles', function ($q) use ($adminRoleName) { $q->where('name', $adminRoleName); }); } $users = $userQuery->orderBy('id')->get(); if ($users->isEmpty()) { $this->error("No eligible users found for business #{$businessId}"); return self::FAILURE; } $roleNames = [ 'CEO' => "CEO#{$businessId}", 'COO' => "COO#{$businessId}", 'CFO' => "CFO#{$businessId}", 'PMO' => "PMO#{$businessId}", 'Board' => "Board#{$businessId}", ]; foreach ($roleNames as $base => $roleName) { $role = Role::where('name', $roleName)->where('business_id', $businessId)->first(); if (! $role) { $this->error("Role missing: {$roleName}. Run role matrix command first."); return self::FAILURE; } } $primaryMap = [ 'CEO' => $users->get(0), 'COO' => $users->get(1), 'CFO' => $users->get(2), 'PMO' => $users->get(3), ]; foreach ($primaryMap as $title => $user) { if (! $user) { continue; } $user->assignRole($roleNames[$title]); $this->info("Assigned {$title} => {$user->id} ({$user->username})"); } foreach ($users as $user) { $user->assignRole($roleNames['Board']); } $this->info("Assigned Board role to {$users->count()} user(s)"); return self::SUCCESS; } }