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)); }
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); } }