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));
            }
        }
Пример #2
0
        public ActionResult Lands(int page = 1)
        {
            LandsListViewModel model = new LandsListViewModel()
            {
                Lands = repository.Lands
                        .OrderBy(p => p.LandId)
                        .Skip((page - 1) * PageSize)
                        .Take(PageSize),
                PagingInfo = new PagingInfo
                {
                    CurrentPage  = page,
                    ItemsPerPage = PageSize,
                    TotalItems   = repository.Doors.Count()
                }
            };

            return(View(model));
        }