public void InsertOrUpdateEventsFilter(EventsFilter eventsFilter) { if (eventsFilter.Id == default(int)) { _db.EventsFilters.Add(eventsFilter); } else { _db.Entry(eventsFilter).State = EntityState.Modified; } }
public ActionResult Index(EventsFilter filter) { var storedFilter = CookieSerializer.Get<EventsFilter>("EventsFilter") ?? new EventsFilter(); if (Request.QueryString.AllKeys.Contains("HappeningTime")) { storedFilter.HappeningTime = filter.HappeningTime; } if (filter.IsFreeOfCharge != null || Request.QueryString.AllKeys.Contains("IsFreeOfCharge")) { storedFilter.IsFreeOfCharge = filter.IsFreeOfCharge; } if (filter.EventType != null || Request.QueryString.AllKeys.Contains("EventType")) { storedFilter.EventType = filter.EventType; } CookieSerializer.Store(storedFilter, "EventsFilter"); //// 2. Apply QueryString values //if (filter.Duration != null || Request.QueryString.AllKeys.Contains("Duration")) //{ // storedFilter.Duration = filter.Duration; //} //if (filter.LocationId != null || Request.QueryString.AllKeys.Contains("LocationId")) //{ // storedFilter.LocationId = filter.LocationId; // // TODO: Null and from Session // storedFilter.Location = // storedFilter.LocationId != null // ? _eventRepository.GetSearchedArea(storedFilter.LocationId.Value) // : null; //} //// 3. Store the filter //Session["EventsFilter"] = storedFilter; //CookieSerializer.Store(storedFilter, "EventsFilter"); //// 4. Apply the filter var today = DateTime.Now.Date; var events = _eventRepository.All; switch (storedFilter.HappeningTime) { case HappeningTime.Upcoming: events = events .Where(e => e.StartDate > today) .OrderBy(e => e.StartDate); break; case HappeningTime.Ongoing: events = events .Where(e => e.StartDate == today || (e.EndDate != null && e.StartDate < today && today <= e.EndDate)) .OrderBy(e => e.StartDate); break; default: events = events .Where(e => e.StartDate < today) .OrderByDescending(e => e.StartDate); break; } if (storedFilter.IsFreeOfCharge != null) { events = events .Where(e => e.IsFreeOfCharge == storedFilter.IsFreeOfCharge.Value); } //if (storedFilter.Duration != null) //{ // //events = events.Where(e => e.EventDurationId == storedFilter.Duration); //} if (storedFilter.EventType != null) { events = events .Where(e => e.TypeId == storedFilter.EventType.Value); } //// TODO: HI check for location or locationid? //if (storedFilter.Location != null) //{ // //events = // // events.Where( // // e => // // e.Latitude >= storedFilter.Location.SouthWestLatitude && // // e.Latitude <= storedFilter.Location.NorthEastLatitude && // // e.Longitude >= storedFilter.Location.SouthWestLongitude && // // e.Longitude <= storedFilter.Location.NorthEastLongitude); //} var actions = _actionRepository .All .OrderByDescending(a => a.Date); return View( new MainViewModel { Events = events, Actions = actions, Filter = storedFilter }); }