Exemplo n.º 1
0
        public ActionResult AdsList(SearchViewModel options)
        {
            try
            {
                string kept = null;
                if (options.SearchText != null)
                {
                    kept = options.SearchText.Split(',')[0];
                }

                var text   = RemoveDiacritics(kept);
                var states = _ctx.States.ToList();
                var areas  = _ctx.Areas.ToList();


                var houses = _ctx.Houses
                             .Include(x => x.User)
                             .Include("State")
                             .Include("State.Areas")
                             .Include("User.UserPhotos")
                             .Include(x => x.HousePhotos)
                             .Where(x => x.Availability == true && x.IsConfirmed == Confirmation.Pass)
                             .Where(x => string.IsNullOrEmpty(kept) || x.Area.Name.ToLower().Contains(text.ToLower()))
                             .ToList();


                AdSearchFiltersViewModel vm = new AdSearchFiltersViewModel();
                vm.Houses = houses;
                vm.States = states;
                vm.Areas  = areas;
                if (text != null)
                {
                    var area = _ctx.Areas
                               .FirstOrDefault(y => y.Name.Contains(text.ToLower()));
                    vm.AreaId  = area.Id;
                    vm.StateId = area.State.Id;
                }
                else
                {
                    //vm.StateId = states.First().Id;
                    //vm.AreaId = states.First().Areas.First().Id;
                    vm.StateId = 0;
                    vm.AreaId  = 0;
                }


                return(View(vm));
            }
            catch (Exception ex)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest, $"{ex.Message}"));
            }
        }
Exemplo n.º 2
0
        public ActionResult AdsFilters(AdSearchFiltersViewModel searchVm)
        {
            try
            {
                var query = from obj in _ctx.Houses select obj;

                switch (searchVm.Pets.ToLower())
                {
                case "yes":
                    query = query.Where(x => x.Pets == "Yes");
                    break;

                case "no":
                    query = query.Where(x => x.Pets == "No");
                    break;

                default:
                    break;
                }

                switch (searchVm.Smoker.ToLower())
                {
                case "yes":
                    query = query.Where(x => x.Smoker == "Yes");
                    break;

                case "no":
                    query = query.Where(x => x.Smoker == "No");
                    break;

                default:
                    break;
                }

                switch (searchVm.Gender.ToLower())
                {
                case "male":
                    query = query.Where(x => x.Gender == "Male");
                    break;

                case "female":
                    query = query.Where(x => x.Gender == "Female");
                    break;

                default:
                    break;
                }

                switch (searchVm.SearchRentCost.ToLower())
                {
                case "0-100":
                    query = query.Where(x => x.RentCost >= 0 && x.RentCost <= 100);
                    break;

                case "101-200":
                    query = query.Where(x => x.RentCost >= 101 && x.RentCost <= 200);
                    break;

                case "201-300":
                    query = query.Where(x => x.RentCost >= 201 && x.RentCost <= 300);
                    break;

                case "301+":
                    query = query.Where(x => x.RentCost >= 301);
                    break;

                case "default":
                    query = query.Where(x => x.RentCost >= 0);
                    break;

                default:
                    break;
                }

                switch (searchVm.HasPhotos.ToLower())
                {
                case "yes":
                    query = query.Where(x => x.HousePhotos.Count > 0);
                    break;

                case "no":
                    query = query.Where(y => y.HousePhotos.Count == 0);
                    break;

                default:
                    break;
                }

                var houses = query
                             .Include(x => x.User)
                             .Include(x => x.HousePhotos)
                             .OrderByDescending(x => x.Created)
                             .Where(x => x.Availability == true && x.IsConfirmed == Confirmation.Pass)
                             .Where(x => x.StateId == searchVm.StateId && x.Area.Id == searchVm.AreaId)
                             .ToList();

                var states = _ctx.States.ToList();
                var areas  = _ctx.Areas.ToList();

                AdSearchFiltersViewModel vm = new AdSearchFiltersViewModel();
                vm.Houses         = houses;
                vm.States         = states;
                vm.Smoker         = searchVm.Smoker;
                vm.Pets           = searchVm.Pets;
                vm.Gender         = searchVm.Gender;
                vm.SearchRentCost = searchVm.SearchRentCost;
                vm.HasPhotos      = searchVm.HasPhotos;
                vm.Areas          = areas;
                vm.StateId        = states.First().Id;
                vm.AreaId         = states.First().Areas.First().Id;


                return(View("AdsList", vm));
            }
            catch (Exception ex)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest, $"{ex.Message}"));
            }
        }