public ActionResult MyJobs(SSMyJobsSearchModel model) { var user = User.Identity.Name; var login = AccountService.GetLoginByEmail(user); if (String.IsNullOrWhiteSpace(model.SortOrder)) { model.SortOrder = "Latest Jobs"; } var res = CompanyService.GetJobs(model, login); model.PagedInput = new PagedInput { ActionName = "MyJobs", ControllerName = "Home", 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 = "Lowest Progress", ActionName = "MyJobs", RouteValues = rvr.AddRouteValue("SortOrder", "Lowest Progress") }); sortOrders.Add(new SortOrderModel { SortOrder = "Highest Progress", ActionName = "MyJobs", RouteValues = rvr.AddRouteValue("SortOrder", "Highest Progress") }); sortOrders.Add(new SortOrderModel { SortOrder = "Highest Accepted Quote", ActionName = "MyJobs", RouteValues = rvr.AddRouteValue("SortOrder", "Highest Accepted Quote") }); sortOrders.Add(new SortOrderModel { SortOrder = "Lowest Accepted Quote", ActionName = "MyJobs", RouteValues = rvr.AddRouteValue("SortOrder", "Lowest Accepted Quote") }); sortOrders.Add(new SortOrderModel { SortOrder = "Latest Jobs", ActionName = "MyJobs", RouteValues = rvr.AddRouteValue("SortOrder", "Latest Jobs") }); sortOrders.Add(new SortOrderModel { SortOrder = "Earliest Jobs", ActionName = "MyJobs", RouteValues = rvr.AddRouteValue("SortOrder", "Earliest Jobs") }); 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 = "/Jobs/Home/UpdateJobStatus"; TempData["CurrentLink"] = "My Jobs"; return(View(model)); }
public static SearchResult GetJobs(SSMyJobsSearchModel model, Login login) { using (var db = new KeysEntities()) { var data = db.Job.Where(x => (x.JobStatusId == 2 || x.JobStatusId == 3 || x.JobStatusId == 4) && x.ProviderId == login.Id) .Select(x => new JobViewModel { Model = new JobModel { Id = x.Id, PropertyId = x.PropertyId, ProviderId = x.ProviderId, OwnerId = x.OwnerId, JobStatusId = x.JobStatusId, JobRequestId = x.JobRequestId, JobStartDate = x.JobStartDate, JobEndDate = x.JobEndDate, JobDescription = x.JobDescription, Note = x.Note, AcceptedQuote = x.AcceptedQuote, PercentDone = x.PercentDone, OwnerUpdate = x.OwnerUpdate ?? false, ServiceUpdate = x.ServiceUpdate ?? false, MediaFiles = x.JobMedia.Select(y => new MediaModel { Id = y.Id, NewFileName = y.NewFileName, OldFileName = y.OldFileName, Status = "load" }).ToList(), }, CreatedOn = x.CreatedOn, JobStatusName = x.ServiceProviderJobStatus.Name, ProviderName = x.ServiceProvider.Person.FirstName + " " + x.ServiceProvider.Person.LastName, ProviderCompany = x.ServiceProvider.Company.Name, 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 + " " + x.Property.Address.Street + " " + x.Property.Address.Suburb + " " + x.Property.Address.City + " " + x.Property.Address.PostCode, }); var allItems = data.OrderByDescending(x => x.CreatedOn).ToPagedList(model.Page, 10); switch (model.SortOrder) { case "Lowest Progress": data = data.OrderBy(s => s.Model.PercentDone); break; case "Highest Progress": data = data.OrderByDescending(s => s.Model.PercentDone); break; case "Highest Accepted Quote": data = data.OrderByDescending(s => s.Model.AcceptedQuote); break; case "Lowest Accepted Quote": data = data.OrderBy(s => s.Model.AcceptedQuote); break; case "Latest Jobs": data = data.OrderByDescending(s => s.CreatedOn); break; case "Earliest Jobs": data = data.OrderBy(s => s.CreatedOn); 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.Where(job => job.PropertyName.ToLower().StartsWith(formatString) || job.PropertyAddress.ToLower().StartsWith(formatString) || job.ProviderName.ToLower().StartsWith(formatString) || job.Model.AcceptedQuote.ToString().ToLower().StartsWith(formatString) || job.Model.JobDescription.ToLower().StartsWith(formatString) || job.JobStatusName.ToLower().StartsWith(formatString)); break; case 2: data = data.Where(job => job.PropertyName.ToLower().EndsWith(formatString) || job.PropertyAddress.ToLower().EndsWith(formatString) || job.ProviderName.ToLower().EndsWith(formatString) || job.Model.AcceptedQuote.ToString().ToLower().EndsWith(formatString) || job.Model.JobDescription.ToLower().EndsWith(formatString) || job.JobStatusName.ToLower().EndsWith(formatString)); break; case 3: data = data.Where(job => job.PropertyName.ToLower().Contains(formatString) || job.PropertyAddress.ToLower().Contains(formatString) || job.ProviderName.ToLower().Contains(formatString) || job.Model.AcceptedQuote.ToString().ToLower().Contains(formatString) || job.Model.JobDescription.ToLower().Contains(formatString) || job.JobStatusName.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.Model.MediaFiles.ForEach(y => y.InjectMediaModelViewProperties())); var result = new SearchResult { SearchCount = items.Count, Items = count == 0 ? allItems : items }; return(result); } }