public ActionResult MyRequests(MyRequestSearchModel model) { var user = User.Identity.Name; var login = AccountService.GetLoginByEmail(user); if (String.IsNullOrWhiteSpace(model.SortOrder)) { model.SortOrder = "Latest Request"; } if (model.RequestStatus == null) { model.RequestStatus = PropertyRequestStatus.Submitted; } var data = TenantService.GetAllRequests(model, login); model.PagedInput = new PagedInput { ActionName = "MyRequests", ControllerName = "Home", PagedLinkValues = new RouteValueDictionary(new { SortOrder = model.SortOrder, SearchString = model.SearchString, PropertyId = model.PropertyId, RequestStatus = model.RequestStatus }) }; model.InputValues = new List <SearchInput>() { new SearchInput { Name = "PropertyId", Value = model.PropertyId.ToString() }, new SearchInput { Name = "RequestStatus", Value = model.RequestStatus.ToString() } }; var rvr = new RouteValueDictionary(new { SearchString = model.SearchString, PropertyId = model.PropertyId, RequestStatus = model.RequestStatus }); var sortOrders = new List <SortOrderModel>(); sortOrders.Add(new SortOrderModel { SortOrder = "Latest Request", ActionName = "MyRequests", RouteValues = rvr.AddRouteValue("SortOrder", "Latest Request") }); sortOrders.Add(new SortOrderModel { SortOrder = "Earliest Request", ActionName = "MyRequests", RouteValues = rvr.AddRouteValue("SortOrder", "Earliest Request") }); sortOrders.Add(new SortOrderModel { SortOrder = "Requested Type", ActionName = "MyRequests", RouteValues = rvr.AddRouteValue("SortOrder", "Requested Type") }); model.SortOrders = sortOrders; model.SearchCount = data.SearchCount; if (String.IsNullOrWhiteSpace(model.SearchString)) { model.Page = 1; } model.PageCount = data.Items.PageCount; model.Items = data.Items; model.EditUrl = "/Tenants/Home/UpdateRequest"; model.DeleteUrl = "/Tenants/Home/DeleteRequest"; TempData["CurrentLink"] = "MyRentApps"; return(View(model)); }
public static SearchResult GetAllRequests(MyRequestSearchModel model, Login login) { using (var db = new KeysEntities()) { var data = db.TenantProperty.Where(x => x.TenantId == login.Id).SelectMany(x => x.Property.PropertyRequest) .Where(x => x.RequestStatusId != 4 && x.IsActive == true && x.ToOwner && x.CreatedBy == login.Id) .Select(x => new MyRequestViewModel { Model = new RequestModel { Id = x.Id, PropertyId = x.PropertyId, RequestMessage = x.RequestMessage, IsUpdated = x.IsUpdated ?? false, RequestStatusId = x.RequestStatusId, MediaFiles = x.PropertyRequestMedia.Select(y => new MediaModel { Data = y.NewFileName, Id = y.Id, NewFileName = y.NewFileName, OldFileName = y.OldFileName, Status = "load" }).ToList() }, PropertyAddress = x.Property.Address.Number + " " + x.Property.Address.Street + ", " + x.Property.Address.Suburb + ", " + x.Property.Address.City + " - " + x.Property.Address.PostCode, LandlordName = x.Property.OwnerProperty.FirstOrDefault().Person.FirstName + " " + x.Property.OwnerProperty.FirstOrDefault().Person.LastName, LandlordContactNumber = x.Property.OwnerProperty.FirstOrDefault().Person.Login.PhoneNumber ?? "Not Available", RequestType = x.RequestType.Name, RequestStatus = (x.IsViewed && !x.RequestStatusId.Equals((int)JobRequestStatus.Accepted)) ? " Viewed by Owner Decision Pending" : x.RequestStatus.Name, CreatedOn = x.CreatedOn, }); if (model.PropertyId.HasValue) { data = data.Where(x => x.Model.PropertyId == model.PropertyId); } if (model.RequestStatus.HasValue) { data = data.Where(x => x.Model.RequestStatusId == (int)model.RequestStatus.Value); } var allItems = data.OrderByDescending(x => x.CreatedOn).ToPagedList(model.Page, 10); switch (model.SortOrder) { case "Latest Request": data = data.OrderByDescending(s => s.CreatedOn); break; case "Earliest Request": data = data.OrderBy(s => s.CreatedOn); break; case "Requested Type": data = data.OrderBy(s => s.RequestType); 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(x => x.Model.RequestMessage.ToLower().EndsWith(formatString) || x.RequestStatus.ToLower().EndsWith(formatString) || x.LandlordName.ToLower().EndsWith(formatString) || x.LandlordContactNumber.ToLower().EndsWith(formatString) || x.RequestType.ToLower().EndsWith(formatString)).AsQueryable(); break; case 2: data = data.AsEnumerable().Where(x => x.Model.RequestMessage.ToLower().StartsWith(formatString) || x.RequestStatus.ToLower().StartsWith(formatString) || x.LandlordName.ToLower().StartsWith(formatString) || x.LandlordContactNumber.ToLower().StartsWith(formatString) || x.RequestType.ToLower().StartsWith(formatString)).AsQueryable(); break; case 3: data = data.AsEnumerable().Where(x => x.Model.RequestMessage.ToLower().Contains(formatString) || x.RequestStatus.ToLower().Contains(formatString) || x.LandlordName.ToLower().Contains(formatString) || x.LandlordContactNumber.ToLower().Contains(formatString) || x.RequestType.ToLower().Contains(formatString)).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())); var result = new SearchResult { SearchCount = count, Items = items }; return(result); } }