示例#1
0
        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));
        }
示例#2
0
        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);
            }
        }