diff --git a/Marco.Pms.Services/Service/FirebaseService.cs b/Marco.Pms.Services/Service/FirebaseService.cs index e12c07f..fa69504 100644 --- a/Marco.Pms.Services/Service/FirebaseService.cs +++ b/Marco.Pms.Services/Service/FirebaseService.cs @@ -80,9 +80,33 @@ namespace Marco.Pms.Services.Service .Where(pa => pa.EmployeeId == employeeId && pa.TenantId == tenantId) .Select(pa => pa.ProjectId).ToListAsync(); - var employeeIds = await _context.ProjectAllocations - .Where(pa => projectIds.Contains(pa.ProjectId) && pa.TenantId == tenantId) - .Select(pa => pa.EmployeeId).ToListAsync(); + var teamEmployeeIdsTask = Task.Run(async () => + { + await using var dbContext = await _dbContextFactory.CreateDbContextAsync(); + + return await dbContext.ProjectAllocations + .Where(pa => projectIds.Contains(pa.ProjectId) && pa.TenantId == tenantId) + .Select(pa => pa.EmployeeId).ToListAsync(); + }); + + var manageProjectsRoleTask = Task.Run(async () => + { + await using var dbContext = await _dbContextFactory.CreateDbContextAsync(); + return await dbContext.RolePermissionMappings + .Where(rp => rp.FeaturePermissionId == PermissionsMaster.ManageProject) + .Select(rp => rp.ApplicationRoleId).ToListAsync(); + }); + + await Task.WhenAll(teamEmployeeIdsTask, manageProjectsRoleTask); + + var teamEmployeeIds = teamEmployeeIdsTask.Result; + var manageProjectsRoleIds = manageProjectsRoleTask.Result; + + var employeeIds = await _context.EmployeeRoleMappings + .Where(er => + teamEmployeeIds.Contains(er.EmployeeId) || manageProjectsRoleIds.Contains(er.RoleId)) + .Select(er => er.EmployeeId) + .ToListAsync(); var registrationTokensForData = await _context.FCMTokenMappings .Where(ft => employeeIds.Contains(ft.EmployeeId) && ft.ExpiredAt >= DateTime.UtcNow && ft.TenantId == tenantId) @@ -1438,7 +1462,7 @@ namespace Marco.Pms.Services.Service var data = new Dictionary() { - { "Keyword", "Team_Modefied" }, + { "Keyword", "Team_Modified" }, { "ProjectId", projectId.ToString() } };