diff --git a/Marco.Pms.Services/Service/ProjectServices.cs b/Marco.Pms.Services/Service/ProjectServices.cs index e8572cf..8fcfb26 100644 --- a/Marco.Pms.Services/Service/ProjectServices.cs +++ b/Marco.Pms.Services/Service/ProjectServices.cs @@ -995,12 +995,22 @@ namespace Marco.Pms.Services.Service { using var scope = _serviceScopeFactory.CreateScope(); var _permission = scope.ServiceProvider.GetRequiredService(); - var permission = scope.ServiceProvider.GetRequiredService(); + var _generalHelper = scope.ServiceProvider.GetRequiredService(); // --- Step 1: Run independent permission checks in PARALLEL --- var projectPermissionTask = _permission.HasProjectPermission(loggedInEmployee, projectId); - var viewInfraPermissionTask = _permission.HasPermission(PermissionsMaster.ViewProjectInfra, loggedInEmployee.Id, projectId); - var manageInfraPermissionTask = permission.HasPermission(PermissionsMaster.ManageProjectInfra, loggedInEmployee.Id, projectId); + var viewInfraPermissionTask = Task.Run(async () => + { + using var newScope = _serviceScopeFactory.CreateScope(); + var permission = newScope.ServiceProvider.GetRequiredService(); + return await permission.HasPermission(PermissionsMaster.ViewProjectInfra, loggedInEmployee.Id, projectId); + }); + var manageInfraPermissionTask = Task.Run(async () => + { + using var newScope = _serviceScopeFactory.CreateScope(); + var permission = newScope.ServiceProvider.GetRequiredService(); + return await permission.HasPermission(PermissionsMaster.ManageProjectInfra, loggedInEmployee.Id, projectId); + }); await Task.WhenAll(projectPermissionTask, viewInfraPermissionTask, manageInfraPermissionTask);