Пример #1
0
        private List <EventEONET> FilterBy(string searchString, string filterBy, EventsListEONET eventsListEONET, List <EventEONET> eventsList)
        {
            if (filterBy.ToLower() == "description")
            {
                eventsList = eventsListEONET.Events.Where(e => e.Description.ToLower().Contains(searchString)).ToList();
            }
            else if (filterBy.ToLower() == "title")
            {
                eventsList = eventsListEONET.Events.Where(e => e.Title.ToLower().Contains(searchString)).ToList();
            }
            else if (filterBy.ToLower() == "link")
            {
                eventsList = eventsListEONET.Events.Where(e => e.Title.ToLower().Contains(searchString)).ToList();
            }
            else if (filterBy.ToLower() == "category")
            {
                eventsList = eventsListEONET.Events.Where(e => e.Categories.Any(c => c.Title.ToLower().Contains(searchString))).ToList();
            }
            else if (filterBy.ToLower() == "source")
            {
                eventsList = eventsListEONET.Events.Where(e => e.Sources.Any(c => c.Url.ToLower().Contains(searchString))).ToList();
            }
            else if (filterBy.ToLower() == "id")
            {
                eventsList = eventsListEONET.Events.Where(e => e.Id.ToLower().Contains(searchString)).ToList();
            }

            return(eventsList);
        }
Пример #2
0
        public async Task <ActionResult> GetEventEONET([FromRoute] string id, [FromQuery] string sortBy, [FromQuery] string sortOrder,
                                                       [FromQuery] string searchString, [FromQuery] string filterBy)
        {
            var urlsResolver = new UrlsResolver();
            var requestUri   = urlsResolver.FormatRequestEventUri(_sourceUrl, _eventsUrlKey);
            var httpResponse = await _httpClient.GetEventsAsync(requestUri, HttpCompletionOption.ResponseHeadersRead);

            try
            {
                httpResponse.EnsureSuccessStatusCode();
                var eventsListEONET = new EventsListEONET();

                if (httpResponse.Content is object && httpResponse.Content.Headers.ContentType.MediaType == "application/json")
                {
                    try
                    {
                        var contentStream = await httpResponse.Content.ReadAsStreamAsync();

                        using var streamReader = new StreamReader(contentStream);
                        using var jsonReader   = new JsonTextReader(streamReader);
                        JsonSerializer serializer = new JsonSerializer();
                        eventsListEONET = serializer.Deserialize <EventsListEONET>(jsonReader);
                    }
                    catch (JsonException) // Invalid JSON
                    {
                        return(NotFound("Invalid JSON."));
                    }
                    catch (Exception)
                    {
                        return(NotFound());
                    }
                }

                if (eventsListEONET == null)
                {
                    return(NotFound());
                }
                var filterer = new EventsFilterer();
                filterer.Filter(id, "id", eventsListEONET);
                if (eventsListEONET.Events == null || eventsListEONET.Events.Count == 0)
                {
                    return(NotFound(id));
                }
                if (searchString != null)
                {
                    filterer.FilterEvent(searchString, filterBy, eventsListEONET.Events[0]);
                }
                if (sortBy != null && sortOrder != null)
                {
                    var eventsSorter = new EventsSorter();
                    eventsSorter.SortEvent(eventsListEONET.Events[0], sortOrder, sortBy);
                }

                return(Ok(JsonConvert.SerializeObject(eventsListEONET.Events[0], Formatting.Indented)));
            }
            catch (HttpRequestException)
            {
                return(NotFound("Problems with the source endpoint response"));
            }
        }
Пример #3
0
 public void Sort(EventsListEONET eventsListEONET, string sortOrder, string sortBy)
 {
     if (sortOrder.ToLower() == "asc")
     {
         SortAsc(eventsListEONET, sortBy);
     }
     else if (sortOrder.ToLower() == "desc")
     {
         SortDesc(eventsListEONET, sortBy);
     }
 }
Пример #4
0
 private void SortAsc(EventsListEONET eventsListEONET, string sortBy)
 {
     if (sortBy.ToLower() == "title")
     {
         eventsListEONET.Events = eventsListEONET.Events.OrderBy(e => e.Title).ToList();
     }
     else if (sortBy.ToLower() == "description")
     {
         eventsListEONET.Events = eventsListEONET.Events.OrderBy(e => e.Description).ToList();
     }
     else if (sortBy.ToLower() == "id")
     {
         eventsListEONET.Events = eventsListEONET.Events.OrderBy(e => e.Id).ToList();
     }
     else if (sortBy.ToLower() == "link")
     {
         eventsListEONET.Events = eventsListEONET.Events.OrderBy(e => e.Link).ToList();
     }
 }
Пример #5
0
        public void Filter(string searchString, string filterBy, EventsListEONET eventsListEONET)
        {
            var eventsList = new List <EventEONET>();

            if (filterBy != null && filterBy != "")
            {
                var tmpEventsList = FilterBy(searchString.ToLower(), filterBy.ToLower(), eventsListEONET, eventsList);
                eventsList = tmpEventsList;
            }
            else
            {
                eventsList = eventsListEONET.Events.Where(e => e.Description.Contains(searchString) == true |
                                                          e.Title.Contains(searchString) == true |
                                                          e.Link.Contains(searchString) == true |
                                                          e.Categories.Any(c => c.Title.Contains(searchString)) == true |
                                                          e.Sources.Any(c => c.Url.Contains(searchString) == true)).ToList();
            }
            if (eventsList != null || eventsList.Count > 0)
            {
                eventsListEONET.Events = eventsList;
            }
        }