public ActionResult MyQuotes(QuotesSearchViewModel model)
        {
            var user  = User.Identity.Name;
            var login = AccountService.GetLoginByEmail(user);

            if (String.IsNullOrWhiteSpace(model.SortOrder))
            {
                model.SortOrder = "Latest Date";
            }
            if (String.IsNullOrWhiteSpace(model.Status))
            {
                model.Status = "opening";
            }
            var res = CompanyService.GetJobQuotes(model, login);

            model.PagedInput = new PagedInput
            {
                ActionName      = "MyQuotes",
                ControllerName  = "Manage",
                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 Amount", ActionName = "MyQuotes", RouteValues = rvr.AddRouteValue("SortOrder", "Lowest Amount")
            });
            sortOrders.Add(new SortOrderModel {
                SortOrder = "Highest Amount", ActionName = "MyQuotes", RouteValues = rvr.AddRouteValue("SortOrder", "Highest Amount")
            });
            sortOrders.Add(new SortOrderModel {
                SortOrder = "Latest Date", ActionName = "MyQuotes", RouteValues = rvr.AddRouteValue("SortOrder", "Latest Date")
            });
            sortOrders.Add(new SortOrderModel {
                SortOrder = "Earliest Date", ActionName = "MyQuotes", RouteValues = rvr.AddRouteValue("SortOrder", "Earliest Date")
            });
            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           = "/Companies/Manage/EditJobQuote";
            model.DeleteUrl         = "/Companies/Manage/DeleteJobQuote";
            TempData["CurrentLink"] = "MyQuotes";
            return(View(model));
        }
Exemple #2
0
        public static SearchResult GetJobQuotes(QuotesSearchViewModel model, Login login)
        {
            using (var db = new KeysEntities())
            {
                var data = db.JobQuote.Where(x => x.ProviderId == login.Id)
                           .Select(q => new
                {
                    Model = new JobQuoteModel {
                        Id           = q.Id,
                        Amount       = q.Amount,
                        Note         = q.Note,
                        JobRequestId = q.JobRequestId,
                        MediaFiles   = q.JobQuoteMedia.Select(y => new MediaModel {
                            Id = y.Id, OldFileName = y.FileName.Substring(36), NewFileName = y.FileName
                        }).ToList(),
                    },
                    JobDescription  = q.TenantJobRequest.JobDescription,
                    CreatedOn       = q.CreatedOn,
                    PropertyAddress = q.TenantJobRequest.Property.Address.Number + " " + q.TenantJobRequest.Property.Address.Street + ", " + q.TenantJobRequest.Property.Address.Suburb + ", " + q.TenantJobRequest.Property.Address.City + " - " + q.TenantJobRequest.Property.Address.PostCode,
                    Address         = new AddressViewModel
                    {
                        AddressId = q.TenantJobRequest.Property.Address.AddressId,
                        CountryId = q.TenantJobRequest.Property.Address.CountryId,
                        Number    = q.TenantJobRequest.Property.Address.Number.Replace(" ", ""),
                        Street    = q.TenantJobRequest.Property.Address.Street.Trim(),
                        City      = q.TenantJobRequest.Property.Address.City.Trim(),
                        Suburb    = q.TenantJobRequest.Property.Address.Suburb.Trim() ?? "",
                        PostCode  = q.TenantJobRequest.Property.Address.PostCode.Replace(" ", "")
                    },
                    Status = q.Status
                });
                if (!String.IsNullOrWhiteSpace(model.Status))
                {
                    data = data.Where(x => x.Status.ToLower() == model.Status);
                }
                var allItems = data.OrderByDescending(x => x.CreatedOn).ToPagedList(model.Page, 10);
                switch (model.SortOrder)
                {
                case "Lowest Amount":
                    data = data.OrderBy(s => s.Model.Amount);
                    break;

                case "Highest Amount":
                    data = data.OrderByDescending(s => s.Model.Amount);
                    break;

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

                case "Earliest Date":
                    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);
                    decimal    number;
                    var        canParse = Decimal.TryParse(formatString, out number);
                    switch (searchType)
                    {
                    case 1:
                        data = data.Where(x => x.PropertyAddress.ToLower().EndsWith(formatString) || (x.Status ?? "").ToLower().EndsWith(formatString));
                        if (canParse)
                        {
                            data = data.Where(x => x.Model.Amount.Equals(number));
                        }
                        break;

                    case 2:
                        data = data.Where(x => x.PropertyAddress.ToLower() == formatString || (x.Status ?? "").ToLower().StartsWith(formatString));
                        if (canParse)
                        {
                            data = data.Where(x => x.Model.Amount.Equals(number));
                        }
                        break;

                    case 3:

                        data = data.Where(x => x.PropertyAddress.ToLower().Contains(formatString) || (x.Status ?? "").ToLower().Contains(formatString));
                        if (canParse)
                        {
                            data = data.Where(x => x.Model.Amount.Equals(number));
                        }
                        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);
            }
        }
Exemple #3
0
        public ActionResult GetJobQuotes(QuotesSearchViewModel model)
        {
            if (model.SortOrder == null)
            {
                model.SortOrder = "Latest Listing";
            }
            var data = db.JobQuote.Where(x => x.Status.ToLower() == "opening")
                       .Select(x => new {
                Model = new JobQuoteModel
                {
                    Id           = x.Id,
                    JobRequestId = x.JobRequestId,
                    Amount       = x.Amount,
                    Status       = x.Status,
                    Note         = x.Note,
                    IsViewed     = x.IsViewed,
                    MediaFiles   = x.JobQuoteMedia.Select(y => new MediaModel
                    {
                        Id          = y.Id,
                        OldFileName = y.FileName.Substring(36),
                        NewFileName = y.FileName,
                    }).ToList(),
                },
                CreatedOn    = x.CreatedOn,
                ProviderName = x.ServiceProvider != null ? x.ServiceProvider.Person != null ? x.ServiceProvider.Person.FirstName : "" : "",
                CompanyName  = x.ServiceProvider != null ? x.ServiceProvider.Company != null ? x.ServiceProvider.Company.Name : "" : "",
            });

            if (model.MarketJobId.HasValue)
            {
                data = data.Where(x => x.Model.JobRequestId == model.MarketJobId);
                var mJob = db.TenantJobRequest.FirstOrDefault(x => x.Id == model.MarketJobId);
                model.MarketJob = mJob.MapTo <MarketJobModel>();
            }
            var allItems = data.OrderByDescending(x => x.CreatedOn).ToPagedList(model.Page, 10);

            switch (model.SortOrder)
            {
            case "Company (A-Z)":
                data = data.OrderBy(s => s.CompanyName);
                break;

            case "Company (Z-A)":
                data = data.OrderByDescending(s => s.CompanyName);
                break;

            case "Lowest Amount":
                data = data.OrderBy(s => s.Model.Amount);
                break;

            case "Highest Amount":
                data = data.OrderByDescending(s => s.Model.Amount);
                break;

            default:
                data = data.OrderByDescending(s => s.Model.Amount);
                break;
            }
            if (!String.IsNullOrWhiteSpace(model.SearchString))
            {
                SearchTool searchTool   = new SearchTool();
                int        searchType   = searchTool.CheckDisplayType(model.SearchString);
                string     formatString = searchTool.ConvertString(model.SearchString);

                switch (searchType)
                {
                case 1:
                    data = data.Where(x => x.Model.Amount.ToString() == formatString ||
                                      x.CompanyName.ToLower().StartsWith(formatString) ||
                                      x.Model.Note.ToLower().StartsWith(formatString));
                    break;

                case 2:
                    data = data.Where(x => x.Model.Amount.ToString() == formatString ||
                                      x.CompanyName.ToLower().EndsWith(formatString) ||
                                      x.Model.Note.ToLower().EndsWith(formatString));
                    break;

                case 3:
                    double number;
                    if (Double.TryParse(formatString, out number))
                    {
                        data = data.Where(y => double.Parse(y.Model.Amount.ToString().Split(',')[0]) <= double.Parse(formatString.Split(',')[0]));
                    }
                    else
                    {
                        data = data.Where(y => y.Model.Note.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
            };

            model.PagedInput = new PagedInput
            {
                ActionName      = "GetJobQuotes",
                ControllerName  = "Home",
                PagedLinkValues = new RouteValueDictionary(new { SortOrder = model.SortOrder, SearchString = model.SearchString, MarketJobId = model.MarketJobId })
            };
            var formInputs = new List <SearchInput>();

            formInputs.Add(new SearchInput {
                Name = "MarketJobId", Value = model.MarketJobId.ToString()
            });
            model.InputValues = formInputs;
            var rvr        = new RouteValueDictionary(new { SearchString = model.SearchString, MarketJobId = model.MarketJobId });
            var sortOrders = new List <SortOrderModel>();

            sortOrders.Add(new SortOrderModel {
                SortOrder = "Company (A-Z)", ActionName = "GetJobQuotes", RouteValues = rvr.AddRouteValue("SortOrder", "Name")
            });
            sortOrders.Add(new SortOrderModel {
                SortOrder = "Company (Z-A)", ActionName = "GetJobQuotes", RouteValues = rvr.AddRouteValue("SortOrder", "Company (Z-A)")
            });
            sortOrders.Add(new SortOrderModel {
                SortOrder = "Lowest Amount", ActionName = "GetJobQuotes", RouteValues = rvr.AddRouteValue("SortOrder", "Lowest Amount")
            });
            sortOrders.Add(new SortOrderModel {
                SortOrder = "Highest Amount", ActionName = "GetJobQuotes", RouteValues = rvr.AddRouteValue("SortOrder", "Higest Amount")
            });
            model.SortOrders  = sortOrders;
            model.SearchCount = result.SearchCount;
            if (String.IsNullOrWhiteSpace(model.SearchString))
            {
                model.Page = 1;
            }
            model.PageCount = result.Items.PageCount;
            model.Items     = result.Items;
            var currentJob = db.TenantJobRequest.Where(x => x.Id == model.MarketJobId).FirstOrDefault();

            model.Address = currentJob.Property.Address?.ToAddressString() ?? "";
            return(View(model));
        }