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));
            }
        }
Example #2
0
 public LandFilterCriteriaViewModel(LandFilterCriteria filter)
 {
     Filter     = filter;
     ApplyTypes = EnumsToSelectedListItems.GetLandApplyTypeList(true);
 }