Пример #1
0
 public void InsertOrUpdateEventsFilter(EventsFilter eventsFilter)
 {
     if (eventsFilter.Id == default(int))
       {
     _db.EventsFilters.Add(eventsFilter);
       }
       else
       {
     _db.Entry(eventsFilter).State = EntityState.Modified;
       }
 }
Пример #2
0
        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
              });
        }