示例#1
0
        public ActionResult Inspections(TenantInspectionSearchModel model)
        {
            var user  = User.Identity.Name;
            var login = AccountService.GetLoginByEmail(user);

            if (String.IsNullOrWhiteSpace(model.SortOrder))
            {
                model.SortOrder = "Latest First";
            }
            var res = TenantService.GetAllInspections(model, login);

            model.PagedInput = new PagedInput
            {
                ActionName      = "Inspections",
                ControllerName  = "Rent",
                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 = "Latest First", ActionName = "Inspections", RouteValues = rvr.AddRouteValue("SortOrder", "Latest First")
            });
            sortOrders.Add(new SortOrderModel {
                SortOrder = "Earliest First", ActionName = "Inspections", RouteValues = rvr.AddRouteValue("SortOrder", "Earliest First")
            });
            sortOrders.Add(new SortOrderModel {
                SortOrder = "High Progress", ActionName = "Inspections", RouteValues = rvr.AddRouteValue("SortOrder", "High Progress")
            });
            sortOrders.Add(new SortOrderModel {
                SortOrder = "Low Progress", ActionName = "Inspections", RouteValues = rvr.AddRouteValue("SortOrder", "Low Progress")
            });
            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/EditInspection";
            return(View(model));
        }
示例#2
0
        public static SearchResult GetAllInspections(TenantInspectionSearchModel model, Login login)
        {
            using (var db = new KeysEntities())
            {
                var props = db.TenantProperty.Where(x => x.TenantId == login.Id && (x.IsActive ?? true)).Select(x => x.PropertyId);
                var data  = db.Inspection.Where(x => props.Contains(x.PropertyId))
                            .Select(x => new TenantInsPectionViewModel
                {
                    Model = new InspectionModel {
                        Id          = x.Id,
                        Message     = x.Message,
                        StatusId    = x.StatusId,
                        IsViewed    = x.IsViewed ?? false,
                        PercentDone = x.PercentDone,
                        OwnerUpdate = x.OwnerUpdate ?? false,
                        Reason      = x.Reason,
                        MediaFiles  = x.InspectionMedia.Select(y => new MediaModel {
                            Id = y.Id, NewFileName = y.NewFileName, OldFileName = y.OldFileName
                        }).ToList()
                    },
                    CreatedOn     = x.CreatedOn,
                    Status        = x.InspectionStatus.Name,
                    DueDate       = x.PropertyRequest.DueDate,
                    LandlordName  = x.Property.OwnerProperty.FirstOrDefault().Person.FirstName + " " + x.Property.OwnerProperty.FirstOrDefault().Person.LastName,
                    LandlordPhone = x.Property.OwnerProperty.FirstOrDefault().Person.Login.PhoneNumber,
                    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(" ", ""),
                    },
                });
                var allItems = data.OrderByDescending(x => x.CreatedOn).ToPagedList(model.Page, 10);
                switch (model.SortOrder)
                {
                case "Latest First":
                    data = data.OrderByDescending(x => x.CreatedOn);
                    break;

                case "Earliest First":
                    data = data.OrderBy(x => x.CreatedOn);
                    break;

                case "High Progress":
                    data = data.OrderByDescending(x => x.Model.PercentDone);
                    break;

                case "Low Progress":
                    data = data.OrderBy(x => x.Model.PercentDone);
                    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);
                    switch (searchType)
                    {
                    case 1:
                        data = data.Where(x => x.Model.Message.ToLower().EndsWith(formatString) ||
                                          x.Status.ToLower().EndsWith(formatString) ||
                                          x.Model.Reason.ToLower().EndsWith(formatString));
                        break;

                    case 2:
                        data = data.Where(x => x.Model.Message.ToLower().StartsWith(formatString) ||
                                          x.Status.ToLower().StartsWith(formatString) ||
                                          x.Model.Reason.ToLower().StartsWith(formatString));
                        break;

                    case 3:
                        data = data.Where(x => x.Model.Message.ToLower().Contains(formatString) ||
                                          x.Status.ToLower().StartsWith(formatString) ||
                                          x.Model.Reason.ToLower().Contains(formatString));

                        break;
                    }
                }
                ;
                var items = data.ToPagedList(model.Page, 10);
                var count = items.Count;
                items = count == 0 ? allItems : items;
                items.ToList().ForEach(x => {
                    x.CanBeEdited = x.DueDate != null ? DateTime.UtcNow > x.DueDate : true;
                    x.Model.MediaFiles.ForEach(y => y.InjectMediaModelViewProperties());
                });
                var result = new SearchResult {
                    SearchCount = items.Count, Items = count == 0 ? allItems : items
                };
                return(result);
            }
        }