public async Task <EmployeeDetailsDto> GetDetailsByIdAsync(long employeeId) { string cacheKey = EmployeeCacheKeys.GetDetailsKey(employeeId); EmployeeDetailsDto employeeDetails = await _distributedCache.GetAsync <EmployeeDetailsDto>(cacheKey); if (employeeDetails == null) { Expression <Func <Employee, EmployeeDetailsDto> > selectExp = e => new EmployeeDetailsDto { EmployeeId = e.Id, EmployeeName = e.Name, DepartmentId = e.DepartmentId, DepartmentName = e.Department.Name, DateOfBirth = e.DateOfBirth, Email = e.Email, PhoneNumber = e.PhoneNumber, IsActive = e.IsActive, CreatedAtUtc = e.CreatedAtUtc, LastModifiedAtUtc = e.LastModifiedAtUtc }; employeeDetails = await _repository.GetByIdAsync(employeeId, selectExp); await _distributedCache.SetAsync <EmployeeDetailsDto>(cacheKey, employeeDetails); } return(employeeDetails); }
public async Task <Employee> GetByIdAsync(long employeeId) { string cacheKey = EmployeeCacheKeys.GetKey(employeeId); Employee employee = await _distributedCache.GetAsync <Employee>(cacheKey); if (employee == null) { employee = await _repository.GetByIdAsync <Employee>(employeeId); await _distributedCache.SetAsync <Employee>(cacheKey, employee); } return(employee); }