private void StoreAllProductSizeInCache(ProductSizeQueryRequest request)
        {
            var sizes          = _productRepository.GetProductSizes(request.Keyword, request.Category);
            var productSizeDto = Mapper.Map <IList <ProductSize>, IList <ProductSizeDto> >(sizes);

            _cacheManager.Store(CachingConstant.ProductSizes, productSizeDto, CachingConstant.MemoryCacheTime);
        }
        public ProductSizeQueryResponse GetProductSizes(ProductSizeQueryRequest request)
        {
            var response = new ProductSizeQueryResponse();

            try
            {
                var productSizeDto = _cacheManager.Retrieve <IList <ProductSizeDto> >(CachingConstant.ProductSizes);

                if (productSizeDto != null)
                {
                    response.Sizes = string.IsNullOrWhiteSpace(request.Keyword)
                        ? productSizeDto.ToList()
                        : productSizeDto.Where(s => s.Name.Contains(request.Keyword)).ToList();
                }

                var sizes = _productRepository.GetProductSizes(request.Keyword, request.Category);
                productSizeDto = Mapper.Map <IList <ProductSize>, IList <ProductSizeDto> >(sizes);
                response.Sizes = productSizeDto;
                StoreAllProductSizeInCache(request);
            }
            catch (Exception exception)
            {
                response.Failed = true;
                _logger.Log(exception.Message);
            }

            return(response);
        }