public async Task <RevenueForecasts?> GetRevenueForecastAsync(FullUserInfo fullUserInfo) { var cashedUserInfo = _mapper.Map <CachedUserInfo>(fullUserInfo); var hash = _hashingService.GetHash(cashedUserInfo); var forecastId = await _redisAccessService.GetAsync(await hash); if (forecastId == null) { return(null); } var actualUserInfo = await _databaseAccessService.GetUserInfoByForecastId(forecastId); var actualCachedUserInfo = _mapper.Map <CachedUserInfo>(actualUserInfo); if (actualCachedUserInfo.Equals(cashedUserInfo)) { return(await _databaseAccessService.GetForecastAsync(forecastId)); } return(null); }