Пример #1
0
        public PagedResponse <StoryDto> Execute(StorySearch request)
        {
            var query = this.Context.Stories
                        .Include(sj => sj.StoryJournalists)
                        .Where(s => !s.IsDeleted)
                        .AsQueryable();

            if (request.Name != null)
            {
                query = query.Where(
                    s => s.Name.ToLower()
                    .Contains(request.Name.ToLower()));
            }

            if (request.IsActive != null)
            {
                query = query.Where(
                    s => s.IsActive == request.IsActive);
            }

            if (request.Description != null)
            {
                query = query.Where(
                    s => s.Description.ToLower()
                    .Contains(request.Description.ToLower()));
            }

            int totalCount = query.Count();

            // number of pages/buttons
            int numberOfPages = (int)Math.Ceiling((double)totalCount / request.PerPage);

            query = query.Skip(request.PageNumber * request.PerPage - request.PerPage).Take(request.PerPage);
            // second way .Skip((request.PageNumber - 1)* request.PerPage).Take(request.PerPage);

            var result = new PagedResponse <StoryDto>
            {
                TotalNumber = totalCount,
                PagesNumber = numberOfPages,
                CurrentPage = request.PageNumber,
                Data        = query.Select(s => new StoryDto
                {
                    Id          = s.Id,
                    Name        = s.Name,
                    Description = s.Description,
                    IsActive    = s.IsActive,
                    PicturePath = s.PicturePath,
                    Journalists = s.StoryJournalists.Select(j => new JournalistDto
                    {
                        FirstName = j.Journalist.FirstName,
                        LastName  = j.Journalist.LastName
                    }).ToList()
                }).ToList()
            };

            return(result);
        }
Пример #2
0
 public ActionResult <PagedResponse <StoryDto> > Get([FromQuery] StorySearch storySearch)
 {
     try
     {
         var stories = this.getStoriesCommand.Execute(storySearch);
         return(Ok(stories));
     }
     catch (Exception)
     {
         return(StatusCode(500));
     }
 }
Пример #3
0
        public async Task StorySearch()
        {
            var client = CreateClient();
            var search = new StorySearch
            {
                LabelName = "This is my test label #2"
            };

            var result = await client.Stories.Search(search);

            Assert.Equal(2, result.Count);
        }
Пример #4
0
        // GET: Stories
        public ActionResult Index(StorySearch storySearch)
        {
            var stories = this.getStoriesCommand.Execute(storySearch);

            return(View(stories));
        }
Пример #5
0
 public async Task <IReadOnlyList <Story> > Search(StorySearch search)
 {
     //Note, that we use create here, as it under the covers is a 'post'
     //this should probably be exposed a bit better from the base class.
     return(await Create <IReadOnlyList <Story> >(search, "stories/search"));
 }
Пример #6
0
        public async Task <IActionResult> GetAsync([FromQuery] StorySearch storySearch)
        {
            var result = await _storiesService.GetAsync(storySearch);

            return(Ok(result));
        }