private IQueryable <Publication> ApplyFilterForCost(BrowseFilterModel model, IQueryable <Publication> publications)
 {
     if (model.MinCost != null || model.MaxCost != null)
     {
         publications = publications.Where(m => m.Cost >= (model.MinCost ?? 0));
         publications = publications.Where(m => m.Cost <= (model.MaxCost ?? Int32.MaxValue));
     }
     return(publications);
 }
 private IQueryable <Publication> ApplyFilterForProperty(BrowseFilterModel model, IQueryable <Publication> publications)
 {
     if (model.MinPropertyArea != null || model.MaxPropertyArea != null)
     {
         publications = publications.Where(m => m.RoomAmount >= (model.MinPropertyArea ?? 0));
         publications = publications.Where(m => m.RoomAmount <= (model.MaxPropertyArea ?? Single.MaxValue));
     }
     return(publications);
 }
 private IQueryable <Publication> ApplyFilterForHouse(BrowseFilterModel model, IQueryable <Publication> publications)
 {
     publications = publications.Where(m => m.IsRent == model.IsRent);
     if (model.MinRoomAmount != null || model.MaxRoomAmount != null)
     {
         publications = publications.Where(m => m.RoomAmount >= (model.MinRoomAmount ?? 0));
         publications = publications.Where(m => m.RoomAmount <= (model.MaxRoomAmount ?? Int32.MaxValue));
     }
     return(publications);
 }
 private IQueryable <Publication> ApplyFilterForRoom(BrowseFilterModel model, IQueryable <Publication> publications)
 {
     if (model.Floor != null)
     {
         publications = publications.Where(m => m.Floor == model.Floor);
     }
     if (model.OfferingRoomAmount != null)
     {
         publications = publications.Where(m => m.OfferingRoomAmount == model.OfferingRoomAmount);
     }
     publications = publications.Where(m => m.IsPassageRoom == model.IsPassageRoom);
     publications = publications.Where(m => m.IsFurnitureExist == model.IsFurnitureExist);
     publications = publications.Where(m => m.IsOneDayRent == model.IsOneDayRent);
     return(publications);
 }
        private IQueryable <Publication> ApplyFilters(BrowseFilterModel model, IQueryable <Publication> publications)
        {
            publications = publications.Where(m => m.PropertyTypeId == model.PropertyType);
            publications = ApplyFilterForCost(model, publications);
            switch (model.PropertyType)
            {
            case 1: return(ApplyFilterForFlat(model, publications));

            case 2: return(ApplyFilterForRoom(model, publications));

            case 3: return(ApplyFilterForHouse(model, publications));

            case 4: return(ApplyFilterForProperty(model, publications));

            default: return(publications);
            }
        }
        public ActionResult Browse(BrowseFilterModel model)
        {
            model.IsRent = !model.IsRent;
            var publications = db.Publications.Include(p => p.User)
                               .Include(p => p.PropertyType)
                               .Include(p => p.BlockOfFlatsType)
                               .Include(p => p.BathroomType)
                               .Include(p => p.BalconyType)
                               .Include(p => p.WallMaterial);

            publications = publications.Where(m => m.IsApprovedByAdmin && m.IsActive && !m.IsDeleted);

            publications = ApplyFilters(model, publications);

            int pageNumber = 1;

            ViewBag.PropertyTypes = new SelectList(db.PropertyTypes.ToList(), "Id", "Content");

            return(View(publications.OrderByDescending(x => x.Id).ToList().ToPagedList(pageNumber, pageSize)));
        }