Exemplo n.º 1
0
        /// <summary>
        /// Обновление результатов фильтра
        /// </summary>
        /// <param name="filter">параметры фильтра</param>
        private async Task UpdatePostsSearchCashAsync(PostsSearchFilter filter)
        {
            var posts         = new List <DtoSearchresultPost>();
            var filteredPosts = await _repoPosts.FilteredPostsToListAsync
                                (
                year : filter.PostYear,
                name : filter.PostName,
                magazine : filter.Magazine
                                );

            if (filteredPosts != null)
            {
                foreach (var filterPost in filteredPosts)
                {
                    var authors = await _repoAuthors
                                  .GetAuthorsByExtIdAsync(
                        filterPost.AuthorExternalId);

                    var post = _mapper.Map <DtoSearchresultPost>(filterPost);
                    post.Authors = authors.Select(l => l.NameUa).ToList();
                    post.Authors.OrderBy(a => a[0]).ToList();
                    posts.Add(post);
                }
            }

            _cache.Remove(SearchId);

            _cache.Set(SearchId, filter.AuthorName == DEFAULT_FILTER ? posts : posts
                       .DtoPostFilterByAuthor(filter.AuthorName.ToNameUa()),
                       new MemoryCacheEntryOptions
            {
                AbsoluteExpirationRelativeToNow = TimeSpan.FromMilliseconds
                                                  (
                    value: _userSession.User.Expirate - DateTimeOffset.UtcNow.ToUnixTimeMilliseconds()
                                                  )
            });
        }
Exemplo n.º 2
0
 /// <summary>
 /// Результат фильтрации книг
 /// </summary>
 /// <param name="filter">объект параметров фильра</param>
 /// <returns>Объект результатов поиска</returns>
 public Paginator <DtoSearchresultPost> GetPaginatorResultModal(PostsSearchFilter filter)
 {
     UpdatePostsSearchCashAsync(filter).GetAwaiter().GetResult();
     return(GetPostsSearchPaginator(1, _pagerSettings.ItemPerPage, filter.Target));
 }