public ActionResult Houses(HouseFilterCriteria filter, AnnouncementType type = AnnouncementType.Buy, AnnouncementOrder order = AnnouncementOrder.Address, NavigationViewType viewtype = NavigationViewType.List, int page = 1, bool considerEmpty = true)
        {
            IEnumerable <HouseAnnouncement> houses = _announcementRepository.GetListOfHouses().ToList().Where(an => an.Type == type && an.Address.HasValue);

            switch (order)
            {
            case AnnouncementOrder.Address: houses = houses.OrderBy(a => a.Address.ToString()); break;

            case AnnouncementOrder.AddressDescending: houses = houses.OrderByDescending(a => a.Address.ToString()); break;

            case AnnouncementOrder.Date: houses = houses.OrderBy(a => a.Created); break;

            case AnnouncementOrder.DateDescending: houses = houses.OrderByDescending(a => a.Created); break;

            default: houses = houses.OrderBy(a => a.Address.ToString()); break;
            }

            if (ModelState.IsValid)
            {
                if (filter != null)
                {
                    if (filter.IsEmpty() && considerEmpty)
                    {
                        HouseFilterCriteria newFilter = ObjectToCookie.GetObjectFromCookies <HouseFilterCriteria>(Request.Cookies, COOKIE_KEY_HOUSEFILTER);
                        if (newFilter != null)
                        {
                            filter = newFilter;
                        }
                    }
                    houses = filter.Filter(houses);
                    ObjectToCookie.SetCookieAsObject <HouseFilterCriteria>(filter, Response.Cookies, COOKIE_KEY_HOUSEFILTER);
                }
            }
            else
            {
                filter = new HouseFilterCriteria();
            }


            ViewBag.ViewType  = viewtype;
            ViewBag.Type      = type;
            ViewBag.OrderType = order;

            if (viewtype == NavigationViewType.List)
            {
                HousesListViewModel viewModel = new HousesListViewModel();
                viewModel.Page = createPageInfo(page, houses.Count());
                setViewModel(viewModel, announcementsForPage(houses, page));
                viewModel.FilterCriteria = filter;
                return(View("Houses", viewModel));
            }
            else
            {
                HousesViewModel viewModel = new HousesViewModel();
                setViewModel(viewModel, houses);
                viewModel.FilterCriteria = filter;
                return(View("HousesMap", viewModel));
            }
        }
Exemplo n.º 2
0
 public HouseFilterCriteriaViewModel(HouseFilterCriteria filter)
 {
     Filter = filter;
 }