Example #1
0
        public static SearchResult GetAllRentalProperties(RentalListingSearchModel model)
        {
            var result = new SearchResult {
                SearchCount = 0
            };

            return(result);
        }
Example #2
0
        public ActionResult Index(RentalListingSearchModel model)
        {
            var user     = User.Identity.Name;
            var login    = AccountService.GetLoginByEmail(user);
            var roles    = AccountService.GetUserRolesbyEmail(user);
            var isTenant = roles.Contains(5);

            if (String.IsNullOrWhiteSpace(model.SortOrder))
            {
                model.SortOrder = "Latest Listing";
            }
            model.UserId = login.Id;
            var res = RentalService.GetAllRentalProperties(model);

            model.PagedInput = new PagedInput
            {
                ActionName      = "Index",
                ControllerName  = "Home",
                PagedLinkValues = new RouteValueDictionary(new { SortOrder = model.SortOrder, SearchString = model.SearchString })
            };
            var rvr        = new RouteValueDictionary(new { SearchString = model.SearchString });
            var sortOrders = new List <SortOrderModel>();

            sortOrders.Add(new SortOrderModel {
                SortOrder = "Title", ActionName = "Index", RouteValues = rvr.AddRouteValue("SortOrder", "Title")
            });
            sortOrders.Add(new SortOrderModel {
                SortOrder = "Title(Desc)", ActionName = "Index", RouteValues = rvr.AddRouteValue("SortOrder", "Title(Desc)")
            });
            sortOrders.Add(new SortOrderModel {
                SortOrder = "Lowest Rent", ActionName = "Index", RouteValues = rvr.AddRouteValue("SortOrder", "Lowest Rent")
            });
            sortOrders.Add(new SortOrderModel {
                SortOrder = "Highest Rent", ActionName = "Index", RouteValues = rvr.AddRouteValue("SortOrder", "Highest Rent")
            });
            sortOrders.Add(new SortOrderModel {
                SortOrder = "Latest Available Date", ActionName = "Index", RouteValues = rvr.AddRouteValue("SortOrder", "Latest Available Date")
            });
            sortOrders.Add(new SortOrderModel {
                SortOrder = "Earliest Available Date", ActionName = "Index", RouteValues = rvr.AddRouteValue("SortOrder", "Earliest Available Date")
            });
            sortOrders.Add(new SortOrderModel {
                SortOrder = "Earliest Listing", ActionName = "Index", RouteValues = rvr.AddRouteValue("SortOrder", "Earliest Listing")
            });
            sortOrders.Add(new SortOrderModel {
                SortOrder = "Latest Listing", ActionName = "Index", RouteValues = rvr.AddRouteValue("SortOrder", "Latest Listing")
            });

            var tenant = TenantService.GetTenantByEmail(user);

            model.IsTenantProfileComplete = tenant?.IsCompletedPersonalProfile ?? false;
            model.IsUserTenant            = isTenant;
            model.SortOrders  = sortOrders;
            model.SearchCount = res.SearchCount;
            if (String.IsNullOrWhiteSpace(model.SearchString))
            {
                model.Page = 1;
            }
            model.PageCount         = res.Items.PageCount;
            model.Items             = res.Items;
            TempData["CurrentLink"] = "RentallListing";
            return(View(model));
        }
Example #3
0
 public ActionResult Index(RentalListingSearchModel model)
 {
     TempData["CurrentLink"] = "RentallListing";
     return(View(model));
 }
Example #4
0
        public static SearchResult GetAllRentalProperties(RentalListingSearchModel model)
        {
            using (var db = new KeysEntities())
            {
                var data = db.RentalListing.Where(x => x.IsActive == true)
                           .Select(x => new RentListingViewModel
                {
                    Model = new RentListingModel
                    {
                        Id            = x.Id,
                        PropertyId    = x.PropertyId,
                        Title         = x.Title,
                        Description   = x.Description.Trim(),
                        MovingCost    = x.MovingCost ?? 0,
                        TargetRent    = x.TargetRent,
                        AvailableDate = x.AvailableDate,
                        Furnishing    = x.Furnishing,
                        IdealTenant   = x.IdealTenant,
                        OccupantCount = x.OccupantCount ?? 0,
                        PetsAllowed   = x.PetsAllowed,
                        MediaFiles    = x.RentalListingMedia.Select(y => new MediaModel
                        {
                            Id          = y.Id,
                            Status      = "load",
                            NewFileName = y.NewFileName,
                            OldFileName = y.OldFileName
                        }).ToList(),
                    },
                    IsOwner       = db.OwnerProperty.FirstOrDefault(y => y.PropertyId == x.PropertyId).OwnerId == model.UserId,
                    IsApplied     = db.RentalApplication.Any(y => y.RentalListingId == x.Id && y.PersonId == model.UserId),
                    Bedrooms      = x.Property.Bedroom ?? 0,
                    Bathrooms     = x.Property.Bathroom ?? 0,
                    ParkingSpaces = x.Property.ParkingSpace ?? 0,
                    LandSqm       = x.Property.LandSqm ?? 0,
                    FloorArea     = x.Property.FloorArea ?? 0,
                    CreatedOn     = x.CreatedOn,
                    Address       = new AddressViewModel
                    {
                        AddressId = x.Property.Address.AddressId,
                        CountryId = x.Property.Address.CountryId,
                        Number    = x.Property.Address.Number.Replace(" ", ""),
                        Street    = x.Property.Address.Street.Trim(),
                        City      = x.Property.Address.City.Trim(),
                        Suburb    = x.Property.Address.Suburb.Trim() ?? "",
                        PostCode  = x.Property.Address.PostCode.Replace(" ", ""),
                        Latitude  = x.Property.Address.Lat,
                        Longitude = x.Property.Address.Lng,
                    },
                    PropertyAddress = (x.Property.Address.Number.Replace(" ", "")) + " " +
                                      (x.Property.Address.Street.Trim() ?? "") + " " +
                                      (x.Property.Address.Suburb.Trim() ?? "") + " " +
                                      (x.Property.Address.City.Trim() ?? "") + "-" +
                                      (x.Property.Address.PostCode.Replace(" ", "")),
                    PropertyType      = x.Property.PropertyType.Name,
                    RentalPaymentType = x.Property.TargetRentType.Name,
                    Latitude          = x.Property.Address.Lat,
                    Longitude         = x.Property.Address.Lng,
                });

                var allItems = data.OrderByDescending(x => x.CreatedOn).ToPagedList(model.Page, 10);
                switch (model.SortOrder)
                {
                case "Title":
                    data = data.OrderBy(s => s.Model.Title);
                    break;

                case "Title(Desc)":
                    data = data.OrderByDescending(s => s.Model.Title);
                    break;

                case "Highest Rent":
                    data = data.OrderByDescending(s => s.Model.TargetRent);
                    break;

                case "Lowest Rent":
                    data = data.OrderBy(s => s.Model.TargetRent);
                    break;

                case "Latest Available Date":
                    data = data.OrderByDescending(s => s.Model.AvailableDate);
                    break;

                case "Earliest Available Date":
                    data = data.OrderBy(s => s.Model.AvailableDate);
                    break;

                case "Earliest Listing":
                    data = data.OrderBy(s => s.CreatedOn);
                    break;

                case "Latest Listing":
                    data = data.OrderByDescending(s => s.CreatedOn);
                    break;

                default:
                    data = data.OrderByDescending(s => s.CreatedOn);
                    break;
                }

                if (!String.IsNullOrWhiteSpace(model.SearchString))
                {
                    SearchUtil searchTool   = new SearchUtil();
                    int        searchType   = searchTool.CheckDisplayType(model.SearchString);
                    string     formatString = searchTool.ConvertString(model.SearchString);

                    switch (searchType)
                    {
                    case 1:
                        data = data.AsEnumerable().Where(r => r.Model.Title.ToLower().EndsWith(formatString) ||
                                                         r.PropertyAddress.ToLower().EndsWith(formatString) ||
                                                         ("$" + r.Model.TargetRent.ToString()).EndsWith(formatString) ||
                                                         (r.Model.AvailableDate != null && r.Model.AvailableDate.Value.ToString("MMMM d yyyy").ToLower().EndsWith(formatString.Replace(",", ""))) ||
                                                         (r.Model.AvailableDate != null && r.Model.AvailableDate.Value.ToString("d MMMM yyyy").ToLower().EndsWith(formatString.Replace(",", ""))) ||
                                                         (r.Model.AvailableDate != null && r.Model.AvailableDate.Value.ToString("MMM d yyyy").ToLower().EndsWith(formatString.Replace(",", ""))) ||
                                                         (r.Model.AvailableDate != null && r.Model.AvailableDate.Value.ToString("d MMM yyyy").ToLower().EndsWith(formatString.Replace(",", "")))).AsQueryable();
                        break;

                    case 2:
                        data = data.AsEnumerable().Where(r => r.Model.Title.ToLower().StartsWith(formatString) ||
                                                         r.PropertyAddress.ToLower().StartsWith(formatString) ||
                                                         ("$" + r.Model.TargetRent.ToString()).StartsWith(formatString) ||
                                                         (r.Model.AvailableDate != null && r.Model.AvailableDate.Value.ToString("MMMM d yyyy").ToLower().StartsWith(formatString.Replace(",", ""))) ||
                                                         (r.Model.AvailableDate != null && r.Model.AvailableDate.Value.ToString("d MMMM yyyy").ToLower().StartsWith(formatString.Replace(",", ""))) ||
                                                         (r.Model.AvailableDate != null && r.Model.AvailableDate.Value.ToString("MMM d yyyy").ToLower().StartsWith(formatString.Replace(",", ""))) ||
                                                         (r.Model.AvailableDate != null && r.Model.AvailableDate.Value.ToString("d MMM yyyy").ToLower().StartsWith(formatString.Replace(",", "")))).AsQueryable();
                        break;

                    case 3:
                        data = data.AsEnumerable().Where(r => r.Model.Title.ToLower().Contains(formatString) ||
                                                         r.PropertyAddress.ToLower().Contains(formatString) ||
                                                         ("$" + r.Model.TargetRent.ToString()).Contains(formatString) ||
                                                         (r.Model.AvailableDate != null && r.Model.AvailableDate.Value.ToString("MMMM d yyyy").ToLower().Contains(formatString.Replace(",", ""))) ||
                                                         (r.Model.AvailableDate != null && r.Model.AvailableDate.Value.ToString("d MMMM yyyy").ToLower().Contains(formatString.Replace(",", ""))) ||
                                                         (r.Model.AvailableDate != null && r.Model.AvailableDate.Value.ToString("MMM d yyyy").ToLower().Contains(formatString.Replace(",", ""))) ||
                                                         (r.Model.AvailableDate != null && r.Model.AvailableDate.Value.ToString("d MMM yyyy").ToLower().Contains(formatString.Replace(",", "")))).AsQueryable();
                        break;
                    }
                }
                var items = data.ToPagedList(model.Page, 10);
                var count = items.Count;
                items = count == 0 ? allItems : items;
                items.ToList().ForEach(x => {
                    x.Model.MediaFiles.ForEach(y => y.InjectMediaModelViewProperties());
                    x.IsInWatchlist = db.RentalWatchList.FirstOrDefault(y => y.PersonId == model.UserId && y.RentalListingId == x.Model.Id && y.IsActive) != null;
                });

                var result = new SearchResult {
                    SearchCount = items.Count, Items = count == 0 ? allItems : items
                };
                return(result);
            }
        }