public List <EventFilterDTO> GroupEvents(string environment, string orderBy) { List <EventLog> events = eventcontext.EventLogs.ToList(); //var b = events; var eventsGrouped = events.GroupBy(x => x.Description).Select(group => new { Description = group.Key, Count = group.Count() }).OrderBy(x => x.Count); List <EventFilterDTO> eventsDTO = new List <EventFilterDTO>(); foreach (EventLog evt in events) { EventFilterDTO eventDTO = mapper.Map <EventFilterDTO>(evt); eventDTO.Frequency = eventsGrouped.Where(e => e.Description == eventDTO.Description).Select(e => e.Count).FirstOrDefault(); eventsDTO.Add(eventDTO); } if (environment != null) { eventsDTO = eventsDTO.Where(x => x.Environment.Contains(environment)).ToList(); } if (orderBy != null) { switch (orderBy.ToLower()) { case "level": eventsDTO = eventsDTO.OrderBy(x => x.Level).ToList(); break; case "frequency": eventsDTO = eventsDTO.OrderBy(x => x.Frequency).ThenBy(x => x.Description).ToList(); break; default: throw new FilterException("Só é possível ordenar por level ou por frequência"); } } return(eventsDTO); }
public List <EventHostDTO> GetFilteredEvents(EventFilterDTO filters) { List <Event> events = new List <Event>(); if (filters.Sports.Count == 0) { events = _context.Events .Include(e => e.Sport) .Include(e => e.EventUsers) .ThenInclude(eu => eu.User) .Where( e => (DateTime.Compare(e.EventEnd, DateTime.Now) > 0 && e.CurrentNumberOfPlayers < e.TargetNumberOfPlayers)) .ToList(); } else { filters.Sports.ForEach(sport => events.AddRange( _context.Events .Where( e => e.Sport.Id == sport.Id && (DateTime.Compare(e.EventEnd, DateTime.Now) > 0) && e.CurrentNumberOfPlayers < e.TargetNumberOfPlayers) .Include(e => e.Sport) .Include(e => e.EventUsers) .ThenInclude(eu => eu.User).ToList())); } if (filters.CurrentLatitude != null && filters.CurrentLongitude != null) { events.OrderByDescending(e => e.EventStart) .ThenBy(e => Math.Sqrt( Math.Pow(filters.CurrentLatitude.Value - e.LocationLatitude, 2) + Math.Pow(filters.CurrentLongitude.Value - e.LocationLongitude, 2) )); } else { events.OrderByDescending(e => e.EventStart); } var eventHosts = new List <EventHostDTO>(); events.ForEach(e => { if (filters.TimeframeEndDate != null) { if ( e.EventStart > filters.TimeframeStartDate && e.EventEnd < filters.TimeframeEndDate ) { eventHosts.Add(new EventHostDTO(e, _context)); } } else { if ( e.EventStart > filters.TimeframeStartDate ) { eventHosts.Add(new EventHostDTO(e, _context)); } } }); return(eventHosts); }
public Task <List <EventDTO> > GetList([FromQuery] EventFilterDTO filter) { return(eventsFacade.GetAll(filter)); }
public IActionResult GetFilteredEvents(EventFilterDTO filters) { var filteredEvents = _eventRepository.GetFilteredEvents(filters); return(Ok(filteredEvents)); }