argument('business_id'); $matrix = [ "CEO#{$businessId}" => [ 'managementtools.access', 'managementtools.daily_report_all', 'managementtools.board_view', 'managementtools.board_manage', 'managementtools.ticket_manage', 'managementtools.task_report', 'managementtools.manage_scores', 'managementtools.team_view', ], "COO#{$businessId}" => [ 'managementtools.access', 'managementtools.daily_report_all', 'managementtools.board_view', 'managementtools.manage_employee_tasks', 'managementtools.task_report', 'managementtools.team_view', 'managementtools.ticket_manage', ], "CFO#{$businessId}" => [ 'managementtools.access', 'managementtools.daily_report_all', 'managementtools.board_view', 'managementtools.board_manage', 'managementtools.ticket_manage', ], "Board#{$businessId}" => [ 'managementtools.access', 'managementtools.daily_report_all', 'managementtools.board_view', ], "PMO#{$businessId}" => [ 'managementtools.access', 'managementtools.daily_report_all', 'managementtools.task_report', 'managementtools.manage_employee_tasks', 'managementtools.board_view', ], ]; foreach ($matrix as $roleName => $permissions) { $role = Role::firstOrCreate( ['name' => $roleName, 'guard_name' => 'web', 'business_id' => $businessId], ['is_default' => 0] ); $role->syncPermissions($permissions); $this->info("Role synced: {$roleName}"); } $this->info("Executive role matrix applied for business #{$businessId}"); return self::SUCCESS; } }