コード例 #1
0
ファイル: HomeController.cs プロジェクト: lane-dev/key-core
        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));
        }
コード例 #2
0
        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
                });
            }
        }