/// <summary>
        /// Gets the stories.
        /// </summary>
        /// <param name="storyParametersRequest">The story parameters request.</param>
        /// <returns></returns>
        //public async Task<APIResponse> GetStories(StoryParametersRequest storyParametersRequest)
        //{
        //    try
        //    {
        //        string serializedStories;

        //        List<StoryResponse> stories;

        //        var encodedStories = await distributedCache.GetAsync(BlogServiceOperation.GetStoriesCacheName);

        //        if (encodedStories != null)
        //        {
        //            serializedStories = Encoding.UTF8.GetString(encodedStories);
        //            stories = JsonConvert.DeserializeObject<List<StoryResponse>>(serializedStories);
        //        }
        //        else
        //        {
        //            var client = httpClientFactory.CreateClient(BlogServiceOperation.serviceName);

        //            UriBuilder url = new UriBuilder(servicesConfig.Blog + BlogServiceOperation.GetStories());
        //            url.Query = QueryStringHelper.ConvertToQueryString(storyParametersRequest);

        //            var response = await client.GetAsync(url.ToString());
        //            stories = JsonConvert.DeserializeObject<List<StoryResponse>>(await response.Content.ReadAsStringAsync());

        //            serializedStories = JsonConvert.SerializeObject(stories);
        //            encodedStories = Encoding.UTF8.GetBytes(serializedStories);
        //            var options = new DistributedCacheEntryOptions()
        //                            .SetSlidingExpiration(TimeSpan.FromMinutes(1))
        //                            .SetAbsoluteExpiration(DateTime.Now.AddHours(1));

        //            await distributedCache.SetAsync(BlogServiceOperation.GetStoriesCacheName, encodedStories, options);
        //        }

        //        return new APIResponse(stories, HttpStatusCode.OK);
        //    }
        //    catch (Exception ex)
        //    {
        //        logger.Error(ex, "Exception in method 'GetStories()'");
        //        var exMessage = ex.InnerException != null ? ex.InnerException.Message : ex.Message;
        //        return new APIResponse(exMessage, HttpStatusCode.InternalServerError);
        //    }
        //}
        public async Task <APIResponse> GetStories(StoryParametersRequest storyParametersRequest)
        {
            try
            {
                var client = httpClientFactory.CreateClient(BlogServiceOperation.serviceName);

                UriBuilder url = new UriBuilder(servicesConfig.Blog + BlogServiceOperation.GetStories());
                url.Query = QueryStringHelper.ConvertToQueryString(storyParametersRequest);

                var response = await client.GetAsync(url.ToString());

                if (response.IsSuccessStatusCode)
                {
                    var stories = JsonConvert.DeserializeObject <List <StoryResponse> >(await response.Content.ReadAsStringAsync());
                    foreach (var item1 in stories)
                    {
                        byte[] b = System.IO.File.ReadAllBytes(item1.CoverPhotoOrVideo);
                        item1.CoverPhotoOrVideo = Convert.ToBase64String(b);
                    }
                    return(new APIResponse(stories, HttpStatusCode.OK));
                }

                return(new APIResponse(response.StatusCode));
            }
            catch (Exception ex)
            {
                logger.Error(ex, "Exception in method 'GetStories()'");
                var exMessage = ex.InnerException != null ? ex.InnerException.Message : ex.Message;
                return(new APIResponse(exMessage, HttpStatusCode.InternalServerError));
            }
        }
        /// <summary>
        /// Gets the stories.
        /// </summary>
        /// <param name="storyParametersRequest">The story parameters request.</param>
        /// <returns></returns>
        public async Task <APIResponse> GetStories(StoryParametersRequest storyParametersRequest)
        {
            try
            {
                string serializedStories;
                List <StoryResponse> stories;

                var encodedStories = await distributedCache.GetAsync(BlogServiceOperation.GetStoriesCacheName);

                if (encodedStories != null)
                {
                    serializedStories = Encoding.UTF8.GetString(encodedStories);
                    stories           = JsonConvert.DeserializeObject <List <StoryResponse> >(serializedStories);
                }
                else
                {
                    var client = httpClientFactory.CreateClient(BlogServiceOperation.serviceName);

                    UriBuilder url = new UriBuilder(servicesConfig.Blog + BlogServiceOperation.GetStories());
                    url.Query = QueryStringHelper.ConvertToQueryString(storyParametersRequest);

                    var response = await client.GetAsync(url.ToString());

                    stories = JsonConvert.DeserializeObject <List <StoryResponse> >(await response.Content.ReadAsStringAsync());

                    serializedStories = JsonConvert.SerializeObject(stories);
                    encodedStories    = Encoding.UTF8.GetBytes(serializedStories);
                    var options = new DistributedCacheEntryOptions()
                                  .SetSlidingExpiration(TimeSpan.FromMinutes(1))
                                  .SetAbsoluteExpiration(DateTime.Now.AddHours(1));

                    await distributedCache.SetAsync(BlogServiceOperation.GetStoriesCacheName, encodedStories, options);
                }

                return(new APIResponse(stories, HttpStatusCode.OK));
            }
            catch (Exception ex)
            {
                logger.Error(ex, "Exception in method 'GetStories()'");
                var exMessage = ex.InnerException != null ? ex.InnerException.Message : ex.Message;
                return(new APIResponse(exMessage, HttpStatusCode.InternalServerError));
            }
        }
        public async Task <IActionResult> GetStories([FromQuery] StoryParametersRequest storyParametersRequest)
        {
            var result = await storyService.GetStories(storyParametersRequest);

            return(StatusCode((int)result.Code, result.Value));
        }