public ActionResult MyRentalApplications(RentalAppSearchModel model) { var user = User.Identity.Name; var login = AccountService.GetLoginByEmail(user); if (String.IsNullOrWhiteSpace(model.SortOrder)) { model.SortOrder = "Latest Date"; } if (model.RentalStatus == null) { model.RentalStatus = Service.Models.RentalApplicationStatus.Applied; } var res = TenantService.GetAllRentApplications(model, login); model.PagedInput = new PagedInput { ActionName = "MyRentalApplications", ControllerName = "Home", PagedLinkValues = new RouteValueDictionary(new { SortOrder = model.SortOrder, SearchString = model.SearchString, RentalStatus = model.RentalStatus }) }; var rvr = new RouteValueDictionary(new { SearchString = model.SearchString, RentalStatus = model.RentalStatus }); var sortOrders = new List <SortOrderModel>(); sortOrders.Add(new SortOrderModel { SortOrder = "Lowest Rent", ActionName = "MyRentalApplications", RouteValues = rvr.AddRouteValue("SortOrder", "Lowest Rent") }); sortOrders.Add(new SortOrderModel { SortOrder = "Highest Rent", ActionName = "MyRentalApplications", RouteValues = rvr.AddRouteValue("SortOrder", "Highest Rent") }); sortOrders.Add(new SortOrderModel { SortOrder = "Earliest Date", ActionName = "MyRentalApplications", RouteValues = rvr.AddRouteValue("SortOrder", "Earliest Date") }); sortOrders.Add(new SortOrderModel { SortOrder = "Latest Date", ActionName = "MyRentalApplications", RouteValues = rvr.AddRouteValue("SortOrder", "Latest Date") }); sortOrders.Add(new SortOrderModel { SortOrder = "Earliest Available", ActionName = "MyRentalApplications", RouteValues = rvr.AddRouteValue("SortOrder", "Earliest Available") }); sortOrders.Add(new SortOrderModel { SortOrder = "Latest Available", ActionName = "MyRentalApplications", RouteValues = rvr.AddRouteValue("SortOrder", "Latest Available") }); sortOrders.Add(new SortOrderModel { SortOrder = "Accepted First", ActionName = "MyRentalApplications", RouteValues = rvr.AddRouteValue("SortOrder", "Accepted First") }); model.SortOrders = sortOrders; model.SearchCount = res.SearchCount; if (String.IsNullOrWhiteSpace(model.SearchString)) { model.Page = 1; } model.PageCount = res.Items.PageCount; model.Items = res.Items; model.EditUrl = "/Tenants/Home/EditTenancyApplication"; model.DeleteUrl = "/Tenants/Home/DeleteTenancyApplication"; TempData["CurrentLink"] = "MyRentApps"; return(View(model)); }
public static SearchResult GetAllRentApplications(RentalAppSearchModel model, Login login) { using (var db = new KeysEntities()) { var data = db.RentalApplication.Where(x => x.PersonId == login.Id && x.IsActive == true) .Select(x => new { Model = new RentalApplicationModel { Id = x.Id, RentalListingId = x.RentalListingId, PersonId = x.PersonId, Note = x.Note, TenantsCount = x.TenantsCount, IsViewedByOwner = x.IsViewedByOwner ?? false, MediaFiles = x.RentalApplicationMedia.Select(y => new MediaModel { Id = y.Id, Status = "load", NewFileName = y.NewFileName, OldFileName = y.OldFileName }).ToList() }, CreatedOn = x.CreatedOn, Status = new { Id = x.RentalApplicationStatus.Id, Status = x.RentalApplicationStatus.Status, }, RentalListing = new RentListingModel { Title = x.RentalListing.Title, Description = x.RentalListing.Description, MovingCost = x.RentalListing.MovingCost, TargetRent = x.RentalListing.TargetRent, AvailableDate = x.RentalListing.AvailableDate, Furnishing = x.RentalListing.Furnishing, IdealTenant = x.RentalListing.IdealTenant, OccupantCount = x.RentalListing.OccupantCount, PetsAllowed = x.RentalListing.PetsAllowed, }, RentalPaymentType = x.RentalListing.Property.TargetRentType.Name, Bedrooms = x.RentalListing.Property.Bedroom ?? 0, Bathrooms = x.RentalListing.Property.Bathroom ?? 0, ParkingSpaces = x.RentalListing.Property.ParkingSpace ?? 0, LandSqm = x.RentalListing.Property.LandSqm ?? 0, FloorArea = x.RentalListing.Property.FloorArea ?? 0, PropertyType = x.RentalListing.Property.TargetRentType.Name, AddressString = x.RentalListing.Property.Address.Number + " " + x.RentalListing.Property.Address.Street + ", " + x.RentalListing.Property.Address.Suburb + ", " + x.RentalListing.Property.Address.City + " - " + x.RentalListing.Property.Address.PostCode, Address = new AddressViewModel { AddressId = x.RentalListing.Property.Address.AddressId, CountryId = x.RentalListing.Property.Address.CountryId, Number = x.RentalListing.Property.Address.Number.Replace(" ", ""), Street = x.RentalListing.Property.Address.Street.Trim(), City = x.RentalListing.Property.Address.City.Trim(), Suburb = x.RentalListing.Property.Address.Suburb.Trim() ?? "", PostCode = x.RentalListing.Property.Address.PostCode.Replace(" ", ""), }, }); var allItems = data.OrderByDescending(x => x.CreatedOn).ToPagedList(model.Page, 10); switch (model.SortOrder) { case "Lowest Rent": data = data.OrderBy(x => x.RentalListing.TargetRent); break; case "Highest Rent": data = data.OrderByDescending(x => x.RentalListing.TargetRent); break; case "Earliest Date": data = data.OrderBy(x => x.CreatedOn); break; case "Latest Date": data = data.OrderByDescending(x => x.CreatedOn); break; case "Earliest Available": data = data.OrderBy(x => x.RentalListing.AvailableDate); break; case "Latest Available": data = data.OrderByDescending(x => x.RentalListing.AvailableDate); break; case "Accepted First": data = data.OrderBy(x => x.Status.Status); break; default: data = data.OrderByDescending(x => x.CreatedOn); break; } if (!String.IsNullOrWhiteSpace(model.SearchString)) { SearchUtil searchTool = new SearchUtil(); int searchType = searchTool.CheckDisplayType(model.SearchString); string formatString = searchTool.ConvertString(model.SearchString); data = data.AsEnumerable().Where(x => (x.AddressString?.ToLower().Contains(formatString) ?? false) || (x.Model.Note?.ToLower().Contains(formatString) ?? false) || x.RentalListing.AvailableDate.Value.ToString("MMMM d yyyy").ToLower().Contains(formatString.Replace(",", "")) || x.RentalListing.AvailableDate.Value.ToString("d MMMM yyyy").ToLower().Contains(formatString.Replace(",", "")) || x.RentalListing.AvailableDate.Value.ToString("MMM d yyyy").ToLower().Contains(formatString.Replace(",", "")) || x.RentalListing.AvailableDate.Value.ToString("d MMM yyyy").ToLower().Contains(formatString.Replace(",", "")) || (x.Status.Status ?? "").ToLower().Contains(formatString)).AsQueryable(); } ; 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()); }); return(new SearchResult { SearchCount = count, Items = items }); } }