private FilterDataViewModel GetFilterVm(IEnumerable <Vehicle> results = null) { var vm = new FilterDataViewModel { Vehicle = new Vehicle(), PriceDataStart = ctx.Vehicles.OrderBy(x => x.Price).Select(x => new SelectListItem { Text = x.Price.ToString(), Value = x.Price.ToString() }), YearDataStart = ctx.Vehicles.OrderBy(x => x.Year).Select(x => new SelectListItem { Text = x.Year.ToString(), Value = x.Year.ToString() }), MileageDataStart = ctx.Vehicles.OrderBy(x => x.Mileage).Select(x => new SelectListItem { Text = x.Mileage.ToString(), Value = x.Mileage.ToString() }).Distinct(), PriceDataEnd = ctx.Vehicles.OrderBy(x => x.Price).Select(x => new SelectListItem { Text = x.Price.ToString(), Value = x.Price.ToString() }).Distinct(), YearDataEnd = ctx.Vehicles.OrderBy(x => x.Year).Select(x => new SelectListItem { Text = x.Year.ToString(), Value = x.Year.ToString() }), MileageDataEnd = ctx.Vehicles.OrderBy(x => x.Mileage).Select(x => new SelectListItem { Text = x.Mileage.ToString(), Value = x.Mileage.ToString() }), FuelData = ctx.Vehicles.Select(x => new SelectListItem { Text = x.Fuel, Value = x.Fuel, }).Distinct().OrderBy(x => x.Value), BodiesData = ctx.Bodies.Select(x => new SelectListItem { Text = x.BodyName, Value = x.Id.ToString() }) }; vm.Results = results ?? new List <Vehicle>(); return(vm); }
public IViewComponentResult Invoke(FilterDataViewModel model) { model.MaxSize = (int)((_db.Photos.Max(p => p.Size) / 1024) + 1); model.MaxWidth = _db.Photos.Max(p => p.Width); model.MaxHeight = _db.Photos.Max(p => p.Height); return(View("FilterPanel", model)); }
public IActionResult FilterAction(FilterDataViewModel vm) { var result = ctx.Vehicles.Include(x => x.Brand).Include(x => x.Dealership).Where(x => x.Price >= Convert.ToDecimal(vm.MinPrice.Replace(".", ",")) && x.Price <= Convert.ToDecimal(vm.MaxPrice.Replace(".", ","))); result = result.Where(x => x.Mileage >= vm.MinMileage && x.Mileage <= vm.MaxMileage); result = result.Where(x => x.BodyId == vm.SelectedBody); result = result.Where(x => x.Fuel == vm.SelectedFuel); result = result.Where(x => x.Year >= vm.MinYear && x.Year <= vm.MaxYear); result = result.OrderByDescending(Vehicle => Vehicle.DateAdded); if (vm.NewCar == true) { result = result.Where(x => x.Used == false); var finalResult = result.ToList(); vm = GetFilterVm(finalResult); } else if (vm.OldCar == true) { result = result.Where(x => x.Used == true); var finalResult = result.ToList(); vm = GetFilterVm(finalResult); } else if (vm.OldCar == false || vm.NewCar == false) { var finalResult = result.ToList(); vm = GetFilterVm(finalResult); } return(View("index", vm)); //var finalResult = result.ToList(); //if (finalResult.Count() == 0) //{ // finalResult = ctx.Vehicles.OrderBy(x => x.Id).Take(8).ToList(); // vm = GetFilterVm(finalResult); // return View("index", vm); //} //else //{ // vm = GetFilterVm(finalResult); // return View("index", vm); //} }
public IActionResult Search(FilterDataViewModel vm) { var VehicleSearchResults = repo.Vehicles.Where(x => x.Model.Contains(vm.SearchString) || vm.SearchString == "").ToList(); vm.Results = VehicleSearchResults; return(RedirectToAction("Filter", "Index", vm.Results)); }
public IActionResult Search(HomeViewModel vm) { try { var VehicleSearchResults = ctx.Vehicles.Include(x => x.Brand).Include(x => x.Dealership).Where(x => x.Model.Contains(vm.SearchString) || vm.SearchString == "").ToList(); var hej = new FilterDataViewModel { Results = VehicleSearchResults }; var heh = GetFilterVm(VehicleSearchResults); return(View(nameof(Index), heh)); } catch (Exception ex) { return(RedirectToAction("Index", "Home")); } }
public IEnumerable <Photo> FilterData(string sizeRange, string widthRange, string heightRange, string hashtagsFilter, string authorFilter, dynamic viewBag) { FilterDataViewModel filterData = new FilterDataViewModel(); if (authorFilter == null) { authorFilter = ""; } if (hashtagsFilter == null) { hashtagsFilter = ""; } var sizeRangeParts = sizeRange.Split('-'); int.TryParse(sizeRangeParts[0], out int sizeRangeMin); int.TryParse(sizeRangeParts[1], out int sizeRangeMax); filterData.SizeRangeMin = sizeRangeMin; filterData.SizeRangeMax = sizeRangeMax; viewBag.SizeRangeMin = sizeRangeMin; viewBag.SizeRangeMax = sizeRangeMax; var widthRangeParts = widthRange.Split('-'); int.TryParse(widthRangeParts[0], out int widthRangeMin); int.TryParse(widthRangeParts[1], out int widthRangeMax); filterData.WidthRangeMin = widthRangeMin; filterData.WidthRangeMax = widthRangeMax; viewBag.WidthRangeMin = widthRangeMin; viewBag.WidthRangeMax = widthRangeMax; var heightRangeParts = heightRange.Split('-'); int.TryParse(heightRangeParts[0], out int heightRangeMin); int.TryParse(heightRangeParts[1], out int heightRangeMax); filterData.HeightRangeMin = heightRangeMin; filterData.HeightRangeMax = heightRangeMax; filterData.HashtagsFilter = hashtagsFilter; filterData.AuthorFilter = authorFilter; viewBag.HeightRangeMin = heightRangeMin; viewBag.HeightRangeMax = heightRangeMax; viewBag.HashtagsFilter = hashtagsFilter; viewBag.AuthorFilter = authorFilter; viewBag.FilterData = filterData; var hashtagsToFilter = filterData.HashtagsFilter.Split(' ').Distinct(); var hashtagIds = _db.Hashtags.Where(h => hashtagsToFilter.Contains(h.Text)).Select(h => h.Id).ToArray(); var photoIds = _db.PhotoHashtags.Where(ph => hashtagIds.Contains(ph.HashtagId)).Select(ph => ph.PhotoId).Distinct().ToArray(); var photos = _db.Photos .Include(p => p.NRAKOUser) .Include(p => p.PhotosHashtags) .ThenInclude(ph => ph.Hashtag) .AsQueryable(); if (hashtagIds.Count() != 0) { photos = photos.Where(p => photoIds.Contains(p.Id)); } photos = photos.Where(p => p.Size >= (filterData.SizeRangeMin * 1024) && p.Size <= (filterData.SizeRangeMax * 1024)) .Where(p => p.Width >= filterData.WidthRangeMin && p.Width <= filterData.WidthRangeMax) .Where(p => p.Height >= filterData.HeightRangeMin && p.Height <= filterData.HeightRangeMax) .Where(p => p.NRAKOUser.UserName.Contains(filterData.AuthorFilter)) .OrderBy(p => p.DateCreated); viewBag.MaxSize = (_db.Photos.Max(p => p.Size) / 1024) + 1; viewBag.MaxWidth = _db.Photos.Max(p => p.Width); viewBag.MaxHeight = _db.Photos.Max(p => p.Height); return(photos.ToList()); }