public async Task <IEnumerable <WorkspaceViewModel> > GetUserWorkspaces(string authUserId)
        {
            string cacheKey = CacheKeys.UserWorkspace(authUserId);
            IEnumerable <WorkspaceViewModel> workspaceViewModels = _memoryCache.Get <IEnumerable <WorkspaceViewModel> >(cacheKey);

            if (workspaceViewModels == null)
            {
                var userModel = await _userRepository.GetByAuthIdAsync(_dbContext, authUserId);

                // if the user has not added any workspaces yet, they may have no user record....so just return an empty enum
                if (userModel == null)
                {
                    return(Enumerable.Empty <WorkspaceViewModel>());
                }
                if (userModel.Workspaces == null || !userModel.Workspaces.Any())
                {
                    workspaceViewModels = Enumerable.Empty <WorkspaceViewModel>();
                }
                else
                {
                    var workspaceDbModels = await _workspaceRepository.GetManyByIdAsync(_dbContext, userModel.Workspaces);

                    workspaceViewModels = _mapper.Map <IEnumerable <WorkspaceDbModel>, IEnumerable <WorkspaceViewModel> >(workspaceDbModels);
                }

                _memoryCache.Set(cacheKey, workspaceViewModels, TimeSpan.FromMinutes(15));
            }

            return(workspaceViewModels);
        }
        public string ReverseWords(string sentence)
        {
            if (sentence == null || sentence == string.Empty)
            {
                return(string.Empty);
            }

            var    cacheKey   = $"ReverseWords:{sentence}";
            var    splitWords = sentence.Split(' ');
            string result;

            if (!_memoryCacheWrapper.TryGetValue(cacheKey, out result))
            {
                result = Reverse(splitWords);

                _memoryCacheWrapper.Set(cacheKey, result);
            }

            return(result);
        }
        /// <summary>
        /// Used Binet Formula since it's much faster than an ordinary one and also calculates values for negatives- http://mathworld.wolfram.com/BinetsFibonacciNumberFormula.html
        /// </summary>
        /// <param name="n"> The index (n) of the fibonacci sequence. </param>
        /// <returns> N-th number in the fibonacci sequence. </returns>
        public long GetFibonacci(long n)
        {
            var  cacheKey = $"Fibonacci:{n}";
            long result   = 0;

            if (IsInputWithinRange(n))
            {
                if (!_memoryCacheWrapper.TryGetValue(cacheKey, out result))
                {
                    result = CalculateBinetFibonacci(n);
                    _memoryCacheWrapper.Set(cacheKey, result);
                }

                return(result);
            }
            else
            {
                throw new WrongInputException("Provided wrong input. Only integers from -92 to 92 are accepted.");
            }
        }
        public TriangleTypeEnum DetermineTriangleType(int sideA, int sideB, int sideC)
        {
            bool doesTriangleExist = DoesTriangleExist(sideA, sideB, sideC);

            if (!doesTriangleExist)
            {
                return(TriangleTypeEnum.Error);
            }

            var cacheKey = $"TriangleType:{sideA};{sideB};{sideC}";
            TriangleTypeEnum result;

            if (!_memoryCacheWrapper.TryGetValue(cacheKey, out result))
            {
                result = CalculateTriangleType(sideA, sideB, sideC);
                _memoryCacheWrapper.Set(cacheKey, result);
            }

            return(result);
        }
Example #5
0
 public override void Insert(string key, object value, DateTime absoluteExpireTime)
 {
     cache.Set(key, value, TimeSpan.Zero, absoluteExpireTime - DateTime.Now);
     // HttpRuntime.Cache.Insert(key, value, new CacheDependency(_cacheDependFile), absoluteExpireTime, TimeSpan.Zero);
 }
Example #6
0
 public void InsertCache(string key, object value, int duration, string dependFileName)
 {
     cache.Set(key, value, TimeSpan.Zero, new TimeSpan(0, 0, duration));
 }