Пример #1
0
        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);
        }
Пример #2
0
        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);
        }
Пример #3
0
 public Task <List <EventDTO> > GetList([FromQuery] EventFilterDTO filter)
 {
     return(eventsFacade.GetAll(filter));
 }
Пример #4
0
        public IActionResult GetFilteredEvents(EventFilterDTO filters)
        {
            var filteredEvents = _eventRepository.GetFilteredEvents(filters);

            return(Ok(filteredEvents));
        }