Пример #1
0
        public ActionResult AdvancedSearchResult(string sortOrder, string currentFilter, int?page)
        {
            var  user  = User.Identity.Name;
            var  login = AccountService.GetLoginByEmail(user);
            var  IsUserServiceSupplier = CompanyService.IsUserServiceSupplier(login.UserName);
            bool isOwner = false;
            AdvancedMarketJobSearchModel model = (AdvancedMarketJobSearchModel)TempData["AdvancedSearch"] ?? new AdvancedMarketJobSearchModel();

            model.Page = page ?? 1;
            if (model.Suburb == null)
            {
                model.Suburb = "";
            }
            if (model.SuburbList == null)
            {
                model.SuburbList = new List <string>();
            }
            if (model.Title == null)
            {
                model.Title = "";
            }


            string newFilter = currentFilter;

            if (!String.IsNullOrEmpty(currentFilter))
            {
                Dictionary <string, string> keyValuePairs = currentFilter.Split(',')
                                                            .Select(value => value.Split('='))
                                                            .ToDictionary(pair => pair[0], pair => pair[1]);
                if (keyValuePairs["Title"] != "")
                {
                    model.Title = keyValuePairs["Title"];
                }
                if (keyValuePairs["MaxBudget"] != "")
                {
                    model.MaxBudget = Convert.ToInt32(keyValuePairs["MaxBudget"]);
                }
                if (keyValuePairs["MinBudget"] != "")
                {
                    model.MinBudget = Convert.ToInt32(keyValuePairs["MinBudget"]);
                }
                for (int j = 0; keyValuePairs.ContainsKey(("Suburb" + j)); j++)
                {
                    model.SuburbList.Add(keyValuePairs["Suburb" + j]);
                }
            }
            else
            {
                newFilter = "MaxBudget=" + model.MaxBudget.ToString() + ","
                            + "MinBudget=" + model.MinBudget
                            + "," + "Title=" + model.Title.ToString();
                for (int i = 0; i < model.SuburbList.Count; i++)
                {
                    newFilter = newFilter + ",Suburb" + i + "=" + model.SuburbList[i];
                }
            }
            var jobs       = JobService.AdvancedSearchMarketJob(model, sortOrder);
            var rvr        = new RouteValueDictionary(new { SearchString = model.SearchString, ReturnUrl = model.ReturnUrl });
            var sortOrders = new List <SortOrderModel>();

            sortOrders.Add(new SortOrderModel {
                SortOrder = "Latest First", ActionName = "AdvancedSearchResult", RouteValues = rvr.AddRouteValue("SortOrder", "Latest First")
            });
            sortOrders.Add(new SortOrderModel {
                SortOrder = "Earliest First", ActionName = "AdvancedSearchResult", RouteValues = rvr.AddRouteValue("SortOrder", "Earliest First")
            });
            sortOrders.Add(new SortOrderModel {
                SortOrder = "Request Status", ActionName = "AdvancedSearchResult", RouteValues = rvr.AddRouteValue("SortOrder", "Request Status")
            });
            model.SortOrders        = sortOrders;
            model.SearchCount       = jobs.SearchCount;
            TempData["CurrentLink"] = isOwner ? "MarketJobsOwner" : "MarketJobs";
            if (jobs.SearchCount == 0)
            {
                ViewBag.SearchCount = 0;
            }
            model.PagedInput = new PagedInput
            {
                ActionName      = "AdvancedSearchResult",
                ControllerName  = "Home",
                PagedLinkValues = new RouteValueDictionary(new { SortOrder = model.SortOrder, currentFilter = newFilter, ReturnUrl = model.ReturnUrl })
            };
            if (String.IsNullOrWhiteSpace(currentFilter))
            {
                model.Page = 1;
            }
            model.PageCount             = jobs.Items.PageCount;
            model.Items                 = jobs.Items;
            ViewBag.IsOwnerView         = isOwner;
            ViewBag.IsUserServiceSupply = CompanyService.IsUserServiceSupplier(user);
            ViewBag.IsProfileComplete   = CompanyService.IsProfileComplete(login);
            model.IsUserServiceSupply   = CompanyService.IsUserServiceSupplier(user);
            model.IsProfileComplete     = CompanyService.IsProfileComplete(login);
            return(View(model));
        }
Пример #2
0
        public static SearchResult AdvancedSearchMarketJob(AdvancedMarketJobSearchModel model, string sortOder)
        {
            using (var db = new KeysEntities())
            {
                var allJobRequests = db.TenantJobRequest.Where(x => x.JobStatusId == 1);
                var data           = allJobRequests.Select(x => new JobMarketModel
                {
                    Id             = x.Id,
                    PropertyId     = x.PropertyId,
                    Title          = x.Title,
                    JobDescription = x.JobDescription,
                    MaxBudget      = x.MaxBudget,
                    MediaFiles     = x.TenantJobRequestMedia.Select(y => new MediaModel
                    {
                        Data        = y.NewFileName,
                        Id          = y.Id,
                        NewFileName = y.NewFileName,
                        OldFileName = y.OldFileName,
                        Status      = "load",
                    }).ToList(),
                    //},
                    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(" ", ""),
                    },
                    PropertyAddress = x.Property.Address.Number.ToString() + " " + x.Property.Address.Street.ToString() + " " + x.Property.Address.Suburb.ToString() + " " + x.Property.Address.City.ToString(),
                    CreatedOn       = x.CreatedOn,
                }).AsQueryable();

                var allItems = data.OrderByDescending(x => x.CreatedOn).ToPagedList(model.Page, 10);
                allItems.ToList().ForEach(x => x.MediaFiles.ForEach(y => y.InjectMediaModelViewProperties()));
                // code for search and filtering should be here
                switch (sortOder)
                {
                case "JobDesc":
                    data = data.OrderBy(s => s.JobDescription);
                    break;

                case "JobDesc_desc":
                    data = data.OrderBy(s => s.JobDescription);
                    break;

                case "Date":
                    data = data.OrderBy(s => s.CreatedOn);
                    break;

                case "Date_desc":
                    data = data.OrderByDescending(s => s.CreatedOn);
                    //data = data.OrderByDescending(s => DateTime.Parse(s.PostedDate));

                    break;

                case "MaxBudget":
                    data = data.OrderBy(s => s.MaxBudget);
                    break;

                case "maxBudget_desc":
                    data = data.OrderByDescending(s => s.MaxBudget);
                    break;

                case "Title":
                    data = data.OrderBy(s => s.Title);
                    break;

                case "Title_Desc":
                    data = data.OrderByDescending(s => s.Title);
                    break;

                default:
                    data = data.OrderByDescending(s => s.CreatedOn);
                    break;
                }
                if (model.SuburbList.Count > 0)
                {
                    data = from r in data
                           where model.SuburbList.Contains(r.Address.Suburb)
                           select r;
                }
                data = from r in data
                       where ((r.MaxBudget >= (model.MinBudget ?? r.MaxBudget)) && (r.MaxBudget <= (model.MaxBudget ?? r.MaxBudget)))
                       select r;
                var items = data.OrderBy(x => x.CreatedOn).ToPagedList(model.Page, 10);
                items.ToList().ForEach(x => x.MediaFiles.ForEach(y => y.InjectMediaModelViewProperties()));
                var count  = items.Count;
                var result = new SearchResult {
                    SearchCount = items.Count, Items = count == 0 ? allItems : items
                };
                return(result);
            }
        }
Пример #3
0
 public ActionResult AdvanceSearch(string sortOrder, int?page, AdvancedMarketJobSearchModel advancedSearch)
 {
     TempData["AdvancedSearch"] = advancedSearch;
     return(RedirectToAction("AdvancedSearchResult"));
 }