示例#1
0
 public async Task <IActionResult> GetAllOrFilter([FromQuery] FilterEventsRequest filterEvents)
 {
     return(Ok(await _eventService.GetEvents(filterEvents)));
 }
示例#2
0
        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());
        }
示例#3
0
        public async Task <ICollection <GetEventRequest> > GetEvents(FilterEventsRequest filterEvents)
        {
            var events = await _eventRepository.GetAllOrFilterEvent(filterEvents);

            return(events.Select(c => _eventConverter.EventToGetEventRequest(c)).ToList());
        }