Esempio n. 1
0
        private RentalAdvancedSearchViewModel InitialiazeSuburbListAndPropertyType()
        {
            RentalAdvancedSearchViewModel advancedSearch = (RentalAdvancedSearchViewModel)TempData["AdvancedSearch"] ?? new RentalAdvancedSearchViewModel();

            if (advancedSearch.Address == null)
            {
                advancedSearch.Address = new AddressViewModel();
            }
            if (advancedSearch.Address.SuburbList == null)
            {
                advancedSearch.Address.SuburbList = new List <string>();
            }
            if (advancedSearch.Address.Suburb != null)
            {
                advancedSearch.Address.Suburb = advancedSearch.Address.Suburb.ToLower();
            }
            if (advancedSearch.Title != null)
            {
                advancedSearch.Title = advancedSearch.Title.ToLower();
            }
            if (advancedSearch.PropertyType == null)
            {
                advancedSearch.PropertyType = new List <String>();
            }

            return(advancedSearch);
        }
Esempio n. 2
0
        public ActionResult AdvanceSearchResult(string sortOrder, string currentFilter, int?page)
        {
            var user      = User.Identity.Name;
            var login     = AccountService.GetLoginByEmail(user);
            var dbContext = db.RentalListing;
            var roles     = AccountService.GetUserRolesbyEmail(User.Identity.Name);
            var isTenant  = roles.Contains(5);
            var tenant    = TenantService.GetTenantByEmail(User.Identity.Name);

            GetPropertyTypes();
            IQueryable <RentalListingModel> allRentalProperties = GetAllRentalProperties(sortOrder, isTenant);
            RentalAdvancedSearchViewModel   advancedSearch      = InitialiazeSuburbListAndPropertyType();
            string newFilter = CreateFilterForPaging(currentFilter, advancedSearch);

            ViewBag.SearchCount = 1;
            IQueryable <RentalListingModel> RentalProperties = ConfigureSorting(sortOrder, ref allRentalProperties);

            allRentalProperties = GetFilteredRentalProperties(allRentalProperties, advancedSearch);

            if (allRentalProperties.Count() == 0)
            {
                ViewBag.SearchCount   = 0;
                ViewBag.CurrentFilter = "";
                allRentalProperties   = RentalProperties;
            }
            allRentalProperties.ToList().ForEach(x => x.WatchListText = RentalService.GetWatchListStatus(x.Id, login.Id));
            TempData["CurrentLink"] = "RentallListing";
            CreatePaging(page, allRentalProperties, advancedSearch, newFilter);
            advancedSearch.IsUserTenant            = isTenant;
            advancedSearch.IsTenantProfileComplete = tenant?.IsCompletedPersonalProfile ?? false;
            return(View(advancedSearch));
        }
Esempio n. 3
0
        private static string CreateFilterForPaging(string currentFilter, RentalAdvancedSearchViewModel advancedSearch)
        {
            var newFilter = currentFilter;

            if (!String.IsNullOrEmpty(currentFilter))
            {
                Dictionary <string, string> keyValuePairs = currentFilter.Split(',')
                                                            .Select(value => value.Split('='))
                                                            .ToDictionary(pair => pair[0], pair => pair[1]);
                if (keyValuePairs["BedroomMax"] != "")
                {
                    advancedSearch.BedroomMax = Convert.ToInt32(keyValuePairs["BedroomMax"]);
                }
                if (keyValuePairs["BedroomMin"] != "")
                {
                    advancedSearch.BedroomMin = Convert.ToInt32(keyValuePairs["BedroomMin"]);
                }
                if (keyValuePairs["BathroomMax"] != "")
                {
                    advancedSearch.BathroomMax = Convert.ToInt32(keyValuePairs["BathroomMax"]);
                }
                if (keyValuePairs["BathroomMin"] != "")
                {
                    advancedSearch.BathroomMin = Convert.ToInt32(keyValuePairs["BathroomMin"]);
                }
                if (keyValuePairs["RentMax"] != "")
                {
                    advancedSearch.RentMax = Convert.ToDecimal(keyValuePairs["RentMax"]);
                }
                if (keyValuePairs["RentMin"] != "")
                {
                    advancedSearch.RentMin = Convert.ToDecimal(keyValuePairs["RentMin"]);
                }
                if (keyValuePairs["LandSqmMax"] != "")
                {
                    advancedSearch.LandSqmMax = Convert.ToInt32(keyValuePairs["LandSqmMax"]);
                }
                if (keyValuePairs["LandSqmMin"] != "")
                {
                    advancedSearch.LandSqmMin = Convert.ToInt32(keyValuePairs["LandSqmMin"]);
                }
                if (keyValuePairs["Title"] != "")
                {
                    advancedSearch.Title = keyValuePairs["Title"];
                }
                for (int j = 0; keyValuePairs.ContainsKey(("Suburb" + j)); j++)
                {
                    advancedSearch.Address.SuburbList.Add(keyValuePairs["Suburb" + j]);
                }
                for (int j = 0; keyValuePairs.ContainsKey(("PropertyType" + j)); j++)
                {
                    advancedSearch.PropertyType.Add(keyValuePairs["PropertyType" + j]);
                }
            }
            else
            {
                newFilter = "BedroomMax=" + advancedSearch.BedroomMax +
                            ",BedroomMin=" + advancedSearch.BedroomMin +
                            ",BathroomMax=" + advancedSearch.BathroomMax +
                            ",BathroomMin=" + advancedSearch.BathroomMin +
                            ",RentMax=" + advancedSearch.RentMax +
                            ",RentMin=" + advancedSearch.RentMin +
                            ",LandSqmMax=" + advancedSearch.LandSqmMax +
                            ",LandSqmMin=" + advancedSearch.LandSqmMin +
                            ",Title=" + advancedSearch.Title;
                for (int i = 0; i < advancedSearch.Address.SuburbList.Count; i++)
                {
                    newFilter = newFilter + ",Suburb" + i + "=" + advancedSearch.Address.SuburbList[i];
                }
                for (int i = 0; i < advancedSearch.PropertyType.Count; i++)
                {
                    newFilter = newFilter + ",PropertyType" + i + "=" + advancedSearch.PropertyType[i];
                }
            }

            return(newFilter);
        }
Esempio n. 4
0
 public ActionResult AdvanceSearchResult(string sortOrder, int?page, RentalAdvancedSearchViewModel advancedSearch)
 {
     TempData["AdvancedSearch"] = advancedSearch;
     return(RedirectToAction("AdvanceSearchResult", new { sortOrder = sortOrder ?? "Title" }));
 }
Esempio n. 5
0
        private static IQueryable <RentalListingModel> GetFilteredRentalProperties(IQueryable <RentalListingModel> allRentalProperties, RentalAdvancedSearchViewModel advancedSearch)
        {
            if (advancedSearch.CheckForNull(advancedSearch))
            {
                if (advancedSearch.Address.SuburbList.Count != 0)
                {
                    allRentalProperties = from r in allRentalProperties
                                          where advancedSearch.Address.SuburbList.Contains(r.Address.Suburb)
                                          select r;
                }
                if (advancedSearch.PropertyType.Count != 0)
                {
                    allRentalProperties = from r in allRentalProperties
                                          where advancedSearch.PropertyType.Contains(r.PropertyType)
                                          select r;
                }
                allRentalProperties = from r in allRentalProperties
                                      where r.Title.ToLower().Contains(advancedSearch.Title ?? r.Title.ToLower()) &&
                                      ((r.Bedrooms <= (advancedSearch.BedroomMax ?? r.Bedrooms)) && (r.Bedrooms >= (advancedSearch.BedroomMin ?? r.Bedrooms))) &&
                                      ((r.Bathrooms <= (advancedSearch.BathroomMax ?? r.Bathrooms)) && (r.Bedrooms >= (advancedSearch.BathroomMin ?? r.Bathrooms))) &&
                                      ((r.LandSqm <= (advancedSearch.LandSqmMax ?? r.LandSqm)) && (r.LandSqm >= (advancedSearch.LandSqmMin ?? r.LandSqm))) &&
                                      ((r.TargetRent <= (advancedSearch.RentMax ?? r.TargetRent)) && (r.TargetRent >= (advancedSearch.RentMin ?? r.TargetRent)))
                                      select r;
            }

            return(allRentalProperties);
        }
Esempio n. 6
0
        private static void CreatePaging(int?page, IQueryable <RentalListingModel> allRentalProperties, RentalAdvancedSearchViewModel advancedSearch, string newFilter)
        {
            advancedSearch.PagedInput = new PagedInput
            {
                ActionName      = "AdvanceSearchResult",
                ControllerName  = "Home",
                PagedLinkValues = new RouteValueDictionary(new
                {
                    SortOrder     = advancedSearch.SortOrder,
                    currentFilter = newFilter,
                    ReturnUrl     = advancedSearch.ReturnUrl
                })
            };
            var rvr        = new RouteValueDictionary(new { SearchString = advancedSearch.SearchString, ReturnUrl = advancedSearch.ReturnUrl });
            var sortOrders = new List <SortOrderModel>();

            sortOrders.Add(new SortOrderModel {
                SortOrder = "Latest First", ActionName = "AdvanceSearchResult", RouteValues = rvr.AddRouteValue("SortOrder", "Latest First")
            });
            sortOrders.Add(new SortOrderModel {
                SortOrder = "Earliest First", ActionName = "AdvanceSearchResult", RouteValues = rvr.AddRouteValue("SortOrder", "Earliest First")
            });
            sortOrders.Add(new SortOrderModel {
                SortOrder = "Request Status", ActionName = "AdvanceSearchResult", RouteValues = rvr.AddRouteValue("SortOrder", "Request Status")
            });
            advancedSearch.SortOrders  = sortOrders;
            advancedSearch.SearchCount = allRentalProperties.Count();
            if (String.IsNullOrWhiteSpace(advancedSearch.SearchString))
            {
                advancedSearch.Page = page ?? 1;
            }
            advancedSearch.PageCount = allRentalProperties.ToPagedList(advancedSearch.Page, 12).PageCount;
            advancedSearch.Items     = allRentalProperties.ToPagedList(advancedSearch.Page, 12);
        }