public ActionResult Lands(LandFilterCriteria filter, AnnouncementType type = AnnouncementType.Buy, AnnouncementOrder order = AnnouncementOrder.Address, NavigationViewType viewtype = NavigationViewType.List, int page = 1, bool considerEmpty = true) { IEnumerable <LandAnnouncement> lands = _announcementRepository.GetListOfLands().ToList().Where(an => an.Type == type && an.Address.HasValue); switch (order) { case AnnouncementOrder.Address: lands = lands.OrderBy(a => a.Address.ToString()); break; case AnnouncementOrder.AddressDescending: lands = lands.OrderByDescending(a => a.Address.ToString()); break; case AnnouncementOrder.Date: lands = lands.OrderBy(a => a.Created); break; case AnnouncementOrder.DateDescending: lands = lands.OrderByDescending(a => a.Created); break; default: lands = lands.OrderBy(a => a.Address.ToString()); break; } if (ModelState.IsValid) { if (filter != null) { if (filter.IsEmpty() && considerEmpty) { LandFilterCriteria newFilter = ObjectToCookie.GetObjectFromCookies <LandFilterCriteria>(Request.Cookies, COOKIE_KEY_LANDFILTER); if (newFilter != null) { filter = newFilter; } } lands = filter.Filter(lands); ObjectToCookie.SetCookieAsObject <LandFilterCriteria>(filter, Response.Cookies, COOKIE_KEY_LANDFILTER); } } else { filter = new LandFilterCriteria(); } ViewBag.ViewType = viewtype; ViewBag.Type = type; ViewBag.OrderType = order; if (viewtype == NavigationViewType.List) { LandsListViewModel viewModel = new LandsListViewModel(); viewModel.Page = createPageInfo(page, lands.Count()); setViewModel(viewModel, announcementsForPage(lands, page)); viewModel.FilterCriteria = filter; return(View("Lands", viewModel)); } else { LandsViewModel viewModel = new LandsViewModel(); setViewModel(viewModel, lands); viewModel.FilterCriteria = filter; return(View("LandsMap", viewModel)); } }
public LandFilterCriteriaViewModel(LandFilterCriteria filter) { Filter = filter; ApplyTypes = EnumsToSelectedListItems.GetLandApplyTypeList(true); }