Exemplo n.º 1
0
 public IActionResult Get([FromQuery] HallQuery query)
 {
     try
     {
         return(Ok(getHalls.Execute(query)));
     }
     catch (Exception e)
     {
         return(StatusCode(500, new
         {
             Errors = new List <string> {
                 e.Message
             }
         }));
     }
 }
Exemplo n.º 2
0
 // GET: Halls
 public ActionResult Index([FromQuery] HallQuery query)
 {
     try
     {
         return(View(executor.ExecuteQuery(getHalls, query)));
     }
     catch (EntityNotAllowedException)
     {
         return(RedirectToAction("PageNotFound", "Redirections"));
     }
     catch (Exception e)
     {
         TempData["error"] = e.Message;
     }
     return(RedirectToAction("Home", "Index"));
 }
Exemplo n.º 3
0
        public PagedResponse <HallDto> Execute(HallQuery request)
        {
            var query = Context.Halls
                        .Include(s => s.Seats)
                        .AsQueryable();

            query = query.Where(h => h.IsDeleted == false);

            if (request.Id > 0)
            {
                query = query.Where(h => h.Id == request.Id);
            }

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

            if (request.MaximumOccupancy > 0)
            {
                query = query.Where(h => h.MaximumOccupancy < request.MaximumOccupancy);
            }

            if (request.MinimumOccupancy > 0)
            {
                query = query.Where(h => h.MaximumOccupancy > request.MinimumOccupancy);
            }

            if (request.Id > 0)
            {
                query = query.Where(h => h.Id == request.Id);
            }

            var totalCount = query.Count();

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

            var pagesCount = (int)Math.Ceiling((double)totalCount / request.PerPage);

            return(new PagedResponse <HallDto>
            {
                TotalCount = totalCount,
                PagesCount = pagesCount,
                CurrentPage = request.PageNumber,
                Data = query.Select(h => new HallDto
                {
                    Id = h.Id,
                    Name = h.Name,
                    MaximumOccupancy = h.MaximumOccupancy,
                    SeatsInfo = h.Seats.Select(s => new SeatDto
                    {
                        Id = s.Id,
                        Name = s.Name,
                        Number = s.Number,
                        IsBroken = s.IsBroken,
                        HallId = s.HallId,
                        HallName = s.Hall.Name
                    }).ToList()
                })
            });
        }