/// <summary> /// This method gets events from REDIS and filters out based on parameters /// </summary> /// <param name="position">GEO coordination</param> /// <param name="hourRange">Hour range</param> /// <param name="radiusRange">Radius range</param> /// <param name="categories">Event categories</param> /// <returns>An event list model</returns> public EventListModel GetEvents(GeoCoordinate position, TimeRanges hourRange, RadiusRanges radiusRange, IList<EventTypes> categories) { EventListModel list = new EventListModel(); foreach (var category in categories) { var eventListModels = this.FetchFromRedis(category) ?? new EventListModel(); list.EventModels.AddRange(eventListModels.EventModels); } list.EventModels.RemoveAll(x => DateTime.UtcNow.AddHours((double)hourRange) < x.EventDate); list.EventModels.RemoveAll(x => x.Venue == null); list.EventModels.RemoveAll(x => !VenueHelper.IsVenueWithinRadius(x.Venue, position, (int)radiusRange)); return list; }
/// <summary> /// Updates REDIS with the event list model /// </summary> /// <param name="eventModels">Event list model to update REDIS with</param> private void UpdateRedis(EventListModel eventModels) { try { // TODO: KRAPP THE REDIS CLIENT HOST SHOULD BE CONFIGURABLE var redisClient = new RedisClient("localhost"); var eventClient = redisClient.As<EventListModel>(); eventClient.Store(eventModels); } catch (Exception) { // TODO: KRAPP LOG AND SWALLOW ALL EXCEPTIONS } }