public IActionResult Get(
            [FromQuery] SeatSearch search,
            [FromServices] IGetSeatsQuery query)
        {
            var result = _executor.ExecuteQuery(query, search);

            return(Ok(result));
        }
Exemple #2
0
        public PageResponse <SeatDto> Execute(SeatSearch search)
        {
            var query = _context.Seats.Include(s => s.SeatReserveds).AsQueryable();

            if (!string.IsNullOrEmpty(search.Auditorium) || !string.IsNullOrWhiteSpace(search.Auditorium))
            {
                query = query.Where(x => x.Auditorium.Name.ToLower().Contains(search.Auditorium.ToLower()));
            }

            if (search.MinSeatNumber != 0)
            {
                query = query.Where(x => x.Number >= search.MinSeatNumber);
            }
            if (search.MaxSeatNumber != 0)
            {
                query = query.Where(x => x.Number <= search.MaxSeatNumber);
            }

            var skipCount = search.ItemsPerPage * (search.CurrentPage - 1);

            var response = new PageResponse <SeatDto>
            {
                TotalCount   = query.Count(),
                CurrentPage  = search.CurrentPage,
                ItemsPerPage = search.ItemsPerPage,
                Items        = query.Skip(skipCount)
                               .Take(search.ItemsPerPage)
                               .Select(s => new SeatDto
                {
                    Id             = s.Id,
                    Number         = s.Number,
                    AuditoriumName = s.Auditorium.Name,
                    SeatReserved   = s.SeatReserveds.Select(r => new SeatReservations
                    {
                        RezervationId = r.ReservationId,
                        ScreeningTime = r.Screening.ScreeningTime
                    })
                }).ToList()
            };

            return(response);
        }