using Marco.Pms.CacheHelper; using Marco.Pms.Model.MongoDBModels; using Marco.Pms.Model.Projects; using Project = Marco.Pms.Model.Projects.Project; namespace Marco.Pms.Services.Helpers { public class CacheUpdateHelper { private readonly ProjectCache _projectCache; private readonly EmployeeCache _employeeCache; public CacheUpdateHelper(ProjectCache projectCache, EmployeeCache employeeCache) { _projectCache = projectCache; _employeeCache = employeeCache; } // ------------------------------------ Project Details and Infrastructure Cache --------------------------------------- public async Task AddProjectDetails(Project project) { await _projectCache.AddProjectDetailsToCache(project); } public async Task UpdateProjectDetailsOnly(Project project) { bool response = await _projectCache.UpdateProjectDetailsOnlyToCache(project); return response; } public async Task GetProjectDetails(Guid projectId) { var response = await _projectCache.GetProjectDetailsFromCache(projectId); return response; } public async Task AddBuildngInfra(Guid projectId, Building? building = null, Floor? floor = null, WorkArea? workArea = null, Guid? buildingId = null) { await _projectCache.AddBuildngInfraToCache(projectId, building, floor, workArea, buildingId); } public async Task UpdateBuildngInfra(Guid projectId, Building? building = null, Floor? floor = null, WorkArea? workArea = null, Guid? buildingId = null) { var response = await _projectCache.UpdateBuildngInfraToCache(projectId, building, floor, workArea, buildingId); if (!response) { await _projectCache.AddBuildngInfraToCache(projectId, building, floor, workArea, buildingId); } } public async Task?> GetBuildingInfra(Guid projectId) { var response = await _projectCache.GetBuildingInfraFromCache(projectId); return response; } // ------------------------------------ Employee Profile Cache --------------------------------------- public async Task AddApplicationRole(Guid employeeId, List roleIds) { var response = await _employeeCache.AddApplicationRoleToCache(employeeId, roleIds); } public async Task AddProjects(Guid employeeId, List projectIds) { var response = await _employeeCache.AddProjectsToCache(employeeId, projectIds); return response; } public async Task?> GetProjects(Guid employeeId) { var response = await _employeeCache.GetProjectsFromCache(employeeId); if (response.Count > 0) { return response; } return null; } public async Task?> GetPermissions(Guid employeeId) { var response = await _employeeCache.GetPermissionsFromCache(employeeId); if (response.Count > 0) { return response; } return null; } public async Task ClearAllProjectIds(Guid employeeId) { var response = await _employeeCache.ClearAllProjectIdsFromCache(employeeId); } public async Task ClearAllPermissionIdsByEmployeeID(Guid employeeId) { var response = await _employeeCache.ClearAllPermissionIdsByEmployeeIDFromCache(employeeId); } public async Task ClearAllPermissionIdsByRoleId(Guid roleId) { var response = await _employeeCache.ClearAllPermissionIdsByRoleIdFromCache(roleId); } public async Task RemoveRoleId(Guid employeeId, Guid roleId) { var response = await _employeeCache.RemoveRoleIdFromCache(employeeId, roleId); } } }