Firebase_Implementation #135
@ -1775,12 +1775,24 @@ namespace Marco.Pms.Services.Service
|
|||||||
await using var _context = await _dbContextFactory.CreateDbContextAsync();
|
await using var _context = await _dbContextFactory.CreateDbContextAsync();
|
||||||
using var scope = _serviceScopeFactory.CreateScope();
|
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>()
|
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);
|
await SendMessageToMultipleDevicesWithDataAsync(registrationTokensForNotification, notification, data);
|
||||||
}
|
}
|
||||||
@ -1820,20 +1832,32 @@ namespace Marco.Pms.Services.Service
|
|||||||
.ToListAsync();
|
.ToListAsync();
|
||||||
return employeeIds;
|
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 assignedEmployeeIds = assignedEmployeeIdsTask.Result;
|
||||||
var manageProjectEmployeeIds = manageProjectEmployeeIdsTask.Result;
|
var manageProjectEmployeeIds = manageProjectEmployeeIdsTask.Result;
|
||||||
var viewDocumentEmployeeIds = viewDocumentEmployeeIdsTask.Result;
|
var viewDocumentEmployeeIds = viewDocumentEmployeeIdsTask.Result;
|
||||||
|
var viewDocumentForProjectEmployeeIds = viewDocumentForProjectEmployeeIdsTask.Result;
|
||||||
|
|
||||||
assignedEmployeeIds.AddRange(manageProjectEmployeeIds);
|
assignedEmployeeIds.AddRange(manageProjectEmployeeIds);
|
||||||
|
assignedEmployeeIds.AddRange(viewDocumentForProjectEmployeeIds);
|
||||||
|
|
||||||
var finalEmployeeIds = assignedEmployeeIds.Intersect(viewDocumentEmployeeIds).ToList();
|
var finalEmployeeIds = assignedEmployeeIds.Intersect(viewDocumentEmployeeIds).ToList();
|
||||||
|
|
||||||
var data = new Dictionary<string, string>()
|
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();
|
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