Esempio n. 1
0
        public async Task <ActionResult <IEnumerable <EventViewModel> > > GetEventsByFilters([FromQuery] EventViewModelFilter filters)
        {
            var events = await eventService.GetEventsByFilters(filters);

            return(Ok(events));
        }
Esempio n. 2
0
        public async Task <IEnumerable <EventViewModel> > GetEventsByFilters(EventViewModelFilter filter)
        {
            var result = dbRepository.Events;

            if (!string.IsNullOrEmpty(filter.Name))
            {
                result = result.Where(x =>
                                      x.Name.Contains(filter.Name, System.StringComparison.InvariantCultureIgnoreCase));
            }

            if (filter.MinDate != null)
            {
                result = result.Where(x => x.StartDate >= filter.MinDate);
            }

            if (filter.MaxDate != null)
            {
                result = result.Where(x => x.StartDate <= filter.MaxDate);
            }

            if (filter.MinPrice != null)
            {
                result = result.Where(x => x.Price >= filter.MinPrice);
            }

            if (filter.MaxPrice != null)
            {
                result = result.Where(x => x.Price <= filter.MaxPrice);
            }

            switch (filter.OrderBy)
            {
            case OrderParameter.Name:
                result = result.OrderBy(x => x.Name);
                break;

            case OrderParameter.NameDesc:
                result = result.OrderByDescending(x => x.Name);
                break;

            case OrderParameter.Date:
                result = result.OrderBy(x => x.StartDate);
                break;

            case OrderParameter.DateDesc:
                result = result.OrderByDescending(x => x.StartDate);
                break;

            case OrderParameter.Price:
                result = result.OrderBy(x => x.Price);
                break;

            case OrderParameter.PriceDesc:
                result = result.OrderByDescending(x => x.Price);
                break;

            default:
                result = result.OrderBy(x => x.StartDate);
                break;
            }

            return(await result
                   .ProjectTo <EventViewModel>(mapper.ConfigurationProvider)
                   .ToListAsync());
        }