Example #1
0
        public async Task <ActionResult <IEnumerable <AuthorDTO> > > GetAuthors([FromQuery] AuthorSpecificationParams authorParams)
        {
            var spec = new AuthorsWithBooksSpecification(authorParams);

            // get any overall count of items (after filtering has been applied)
            var countSpec  = new AuthorsWithFiltersForCountSpecification(authorParams);
            var totalItems = await _authorRepository.CountAsync(countSpec);

            // add pagination response headers to help client applications
            _httpContextAccessor.HttpContext.AddPaginationResponseHeaders(totalItems, authorParams.PageSize, authorParams.PageIndex);

            var authors = await _authorRepository.ListAsync(spec);

            return(Ok(_mapper.Map <IEnumerable <Author>, IEnumerable <AuthorDTO> >(authors)));
        }
Example #2
0
        public async Task <ActionResult> GetSiteStatus()
        {
            var bookSpec  = new BooksWithFiltersForCountSpecification(new BookSpecificationParams {
            });
            var bookTotal = await _bookRepository.CountAsync(bookSpec);

            var authorSpec  = new AuthorsWithFiltersForCountSpecification(new AuthorSpecificationParams {
            });
            var authorTotal = await _authorRepository.CountAsync(authorSpec);

            var requestsOutstanding = await _requestService.GetRequestsByStatusAsync(RequestStatus.Sent);

            var requestsOverdue = await _requestService.GetRequestsOverdueAsync();

            return(Ok(new{
                BookTotal = bookTotal,
                AuthorTotal = authorTotal,
                RequestsOutstanding = requestsOutstanding.Count(),
                RequestsOverdue = requestsOverdue.Count()
            }));
        }