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); }
public ActionResult <PagedResponse <StoryDto> > Get([FromQuery] StorySearch storySearch) { try { var stories = this.getStoriesCommand.Execute(storySearch); return(Ok(stories)); } catch (Exception) { return(StatusCode(500)); } }
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); }
// GET: Stories public ActionResult Index(StorySearch storySearch) { var stories = this.getStoriesCommand.Execute(storySearch); return(View(stories)); }
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")); }
public async Task <IActionResult> GetAsync([FromQuery] StorySearch storySearch) { var result = await _storiesService.GetAsync(storySearch); return(Ok(result)); }