Beispiel #1
0
            protected async Task <int> GetTotalPages(
                ArticlesQuery request,
                bool onlyAvailable = true,
                int?journalistId   = default,
                CancellationToken cancellationToken = default)
            {
                var articleSpecification = this.GetArticleSpecification(request, onlyAvailable);

                var journalistSpecification = this.GetJournalistSpecification(request, journalistId);

                var totalArticles = await this.articleRepository.Total(
                    articleSpecification,
                    journalistSpecification,
                    cancellationToken);

                return((int)Math.Ceiling((double)totalArticles / ArticlesPerPage));
            }
Beispiel #2
0
            protected async Task <IEnumerable <TOutputModel> > GetArticleListings <TOutputModel>(
                ArticlesQuery request,
                bool onlyAvailable = true,
                int?journalistId   = default,
                CancellationToken cancellationToken = default)
            {
                var articleSpecification = this.GetArticleSpecification(request, onlyAvailable);

                var journalistSpecification = this.GetJournalistSpecification(request, journalistId);

                var searchOrder = new ArticlesSortOrder(request.SortBy, request.Order);

                var skip = (request.Page - 1) * ArticlesPerPage;

                return(await this.articleRepository.GetArticleListings <TOutputModel>(
                           articleSpecification,
                           journalistSpecification,
                           searchOrder,
                           skip,
                           take : ArticlesPerPage,
                           cancellationToken));
            }
Beispiel #3
0
 private Specification <Journalist> GetJournalistSpecification(ArticlesQuery request, int?journalistId)
 => new JournalistByIdSpecification(journalistId)
 .And(new JournalistByNickNameSpecification(request.Journalist));
Beispiel #4
0
 private Specification <Article> GetArticleSpecification(ArticlesQuery request, bool onlyAvailable)
 => new ArticleByCategorySpecification(request.Category)
 .And(new ArticleOnlyAvailableSpecification(onlyAvailable));