public PageResponse <AuditoriumDto> Execute(AuditoriumSearch search) { var query = _context.Auditoriums.Include(a => a.Seats).Include(a => a.Screenings).AsQueryable(); if (!string.IsNullOrEmpty(search.Name) || !string.IsNullOrWhiteSpace(search.Name)) { query = query.Where(x => x.Name.ToLower().Contains(search.Name.ToLower())); } var skipCount = search.ItemsPerPage * (search.CurrentPage - 1); var response = new PageResponse <AuditoriumDto> { TotalCount = query.Count(), CurrentPage = search.CurrentPage, ItemsPerPage = search.ItemsPerPage, Items = query.Skip(skipCount) .Take(search.ItemsPerPage) .Select(a => new AuditoriumDto { Id = a.Id, Name = a.Name, CreatedAt = a.CreatedAt, AuditoirumSeats = a.Seats.Select(s => new AuditoirumSeats { Id = s.Id, Number = s.Number, }) }).ToList() }; return(response); }
public IActionResult Get( [FromQuery] AuditoriumSearch search, [FromServices] IGetAuditoirumsQuery query) { var result = _executor.ExecuteQuery(query, search); return(Ok(result)); }