public async Task <IActionResult> GetAllOrFilter([FromQuery] FilterEventsRequest filterEvents) { return(Ok(await _eventService.GetEvents(filterEvents))); }
public async Task <List <Event> > GetAllOrFilterEvent(FilterEventsRequest filterEvents) { var duplicateEvents = new List <Event>(); int queryCount = 0; if (FilterTools.AreIntsCorrect(filterEvents.MinEventId, filterEvents.MaxEventId)) { var eventId = _dataContext.Events.Where(c => c.EventId >= filterEvents.MinEventId && c.EventId <= filterEvents.MaxEventId); foreach (var id in eventId) { duplicateEvents.Add(id); } queryCount++; } if (FilterTools.AreIntsCorrect(filterEvents.MinPlaceId, filterEvents.MaxPlaceId)) { var placeId = _dataContext.Events.Where(c => c.PlaceId >= filterEvents.MinPlaceId && c.PlaceId <= filterEvents.MaxPlaceId); foreach (var id in placeId) { duplicateEvents.Add(id); } queryCount++; } if (FilterTools.AreIntsCorrect(filterEvents.MinTypeId, filterEvents.MaxTypeId)) { var typeId = _dataContext.Events.Where(c => c.PlaceId >= filterEvents.MinTypeId && c.PlaceId <= filterEvents.MaxTypeId); foreach (var id in typeId) { duplicateEvents.Add(id); } queryCount++; } if (filterEvents.Name != null) { var eventName = _dataContext.Events.Where(c => c.Name == filterEvents.Name); foreach (var name in eventName) { duplicateEvents.Add(name); } queryCount++; } if (filterEvents.Description != null) { var eventDescription = _dataContext.Events.Where(c => c.Description == filterEvents.Description); foreach (var description in eventDescription) { duplicateEvents.Add(description); } queryCount++; } if (FilterTools.AreIntsCorrect(filterEvents.MinDate?.Year, filterEvents.MaxDate?.Year)) { var eventDate = _dataContext.Events.Where(c => c.Date >= filterEvents.MinDate && c.Date <= filterEvents.MaxDate); foreach (var item in eventDate) { duplicateEvents.Add(item); } queryCount++; } var result = new List <Event>(); var group = duplicateEvents.GroupBy(i => i); if (queryCount == 0) { var events = await _dataContext.Events.ToListAsync(); foreach (var item in events) { _dataContext.Entry(item).Reference(e => e.Place).Load(); _dataContext.Entry(item).Collection(e => e.SeatStatuses).Load(); } return(events); } foreach (var item in group) { if (item.Count() == queryCount) { result.Add(item.Key); } } return(result.ToList()); }
public async Task <ICollection <GetEventRequest> > GetEvents(FilterEventsRequest filterEvents) { var events = await _eventRepository.GetAllOrFilterEvent(filterEvents); return(events.Select(c => _eventConverter.EventToGetEventRequest(c)).ToList()); }