Firebase_Implementation #135

Merged
ashutosh.nehete merged 62 commits from Firebase_Implementation into main 2025-09-20 12:11:54 +00:00
Showing only changes of commit 892facef40 - Show all commits

View File

@ -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();