Added the projectID and employeeID in document modification notification
This commit is contained in:
parent
0b150fed9a
commit
892facef40
@ -1775,12 +1775,24 @@ namespace Marco.Pms.Services.Service
|
||||
await using var _context = await _dbContextFactory.CreateDbContextAsync();
|
||||
using var scope = _serviceScopeFactory.CreateScope();
|
||||
|
||||
var roleIds = await _context.RolePermissionMappings
|
||||
.Where(rp => rp.FeaturePermissionId == PermissionsMaster.ViewDocument)
|
||||
.Select(rp => rp.ApplicationRoleId).ToListAsync();
|
||||
var employeeIds = await _context.EmployeeRoleMappings
|
||||
.Where(er =>
|
||||
roleIds.Contains(er.RoleId))
|
||||
.Select(er => er.EmployeeId)
|
||||
.ToListAsync();
|
||||
|
||||
employeeIds.Add(employeeId);
|
||||
|
||||
var data = new Dictionary<string, string>()
|
||||
{
|
||||
{ "Keyword", "Employee_Document_Modified" }
|
||||
{ "Keyword", "Employee_Document_Modified" },
|
||||
{ "EmployeeId", employeeId.ToString() }
|
||||
};
|
||||
|
||||
var registrationTokensForNotification = await _context.FCMTokenMappings.Where(ft => ft.EmployeeId == employeeId && ft.ExpiredAt >= DateTime.UtcNow).Select(ft => ft.FcmToken).ToListAsync();
|
||||
var registrationTokensForNotification = await _context.FCMTokenMappings.Where(ft => employeeIds.Contains(ft.EmployeeId) && ft.ExpiredAt >= DateTime.UtcNow).Select(ft => ft.FcmToken).ToListAsync();
|
||||
|
||||
await SendMessageToMultipleDevicesWithDataAsync(registrationTokensForNotification, notification, data);
|
||||
}
|
||||
@ -1820,20 +1832,32 @@ namespace Marco.Pms.Services.Service
|
||||
.ToListAsync();
|
||||
return employeeIds;
|
||||
});
|
||||
var viewDocumentForProjectEmployeeIdsTask = Task.Run(async () =>
|
||||
{
|
||||
await using var dbContext = await _dbContextFactory.CreateDbContextAsync();
|
||||
var employeeIds = await dbContext.ProjectLevelPermissionMappings
|
||||
.Where(pl => pl.ProjectId == projectId && pl.PermissionId == PermissionsMaster.ViewDocument)
|
||||
.Select(pl => pl.EmployeeId)
|
||||
.ToListAsync();
|
||||
return employeeIds;
|
||||
});
|
||||
|
||||
await Task.WhenAll(assignedEmployeeIdsTask, manageProjectEmployeeIdsTask, viewDocumentEmployeeIdsTask);
|
||||
await Task.WhenAll(assignedEmployeeIdsTask, manageProjectEmployeeIdsTask, viewDocumentEmployeeIdsTask, viewDocumentForProjectEmployeeIdsTask);
|
||||
|
||||
var assignedEmployeeIds = assignedEmployeeIdsTask.Result;
|
||||
var manageProjectEmployeeIds = manageProjectEmployeeIdsTask.Result;
|
||||
var viewDocumentEmployeeIds = viewDocumentEmployeeIdsTask.Result;
|
||||
var viewDocumentForProjectEmployeeIds = viewDocumentForProjectEmployeeIdsTask.Result;
|
||||
|
||||
assignedEmployeeIds.AddRange(manageProjectEmployeeIds);
|
||||
assignedEmployeeIds.AddRange(viewDocumentForProjectEmployeeIds);
|
||||
|
||||
var finalEmployeeIds = assignedEmployeeIds.Intersect(viewDocumentEmployeeIds).ToList();
|
||||
|
||||
var data = new Dictionary<string, string>()
|
||||
{
|
||||
{ "Keyword", "Project_Document_Modified" }
|
||||
{ "Keyword", "Project_Document_Modified" },
|
||||
{ "ProjectId", projectId.ToString() }
|
||||
};
|
||||
|
||||
var registrationTokensForNotification = await _context.FCMTokenMappings.Where(ft => finalEmployeeIds.Contains(ft.EmployeeId) && ft.ExpiredAt >= DateTime.UtcNow).Select(ft => ft.FcmToken).ToListAsync();
|
||||
|
Loading…
x
Reference in New Issue
Block a user