99 lines
4.0 KiB
C#

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<bool> UpdateProjectDetailsOnly(Project project)
{
bool response = await _projectCache.UpdateProjectDetailsOnlyToCache(project);
return response;
}
public async Task<ProjectMongoDB?> 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<List<BuildingMongoDB>?> GetBuildingInfra(Guid projectId)
{
var response = await _projectCache.GetBuildingInfraFromCache(projectId);
return response;
}
// ------------------------------------ Employee Profile Cache ---------------------------------------
public async Task AddApplicationRole(Guid employeeId, List<Guid> roleIds)
{
var response = await _employeeCache.AddApplicationRoleToCache(employeeId, roleIds);
}
public async Task<bool> AddProjects(Guid employeeId, List<Guid> projectIds)
{
var response = await _employeeCache.AddProjectsToCache(employeeId, projectIds);
return response;
}
public async Task<List<Guid>?> GetProjects(Guid employeeId)
{
var response = await _employeeCache.GetProjectsFromCache(employeeId);
if (response.Count > 0)
{
return response;
}
return null;
}
public async Task<List<Guid>?> 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);
}
}
}