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