public async Task <IActionResult> Index(FilterAdvertViewModel viewFilter, int?page) { AdvertFilter filter = _mapper.Map <AdvertFilter>(viewFilter); filter.CurrentPage = 1; var response = await _advertApiClient.GetAdvertsByFilterAsync(filter); ViewBag.Adverts = response.Data; var cats = await _categoryApiClient.GetCategoriesAsync(); ViewBag.Categories = cats.Data; ViewBag.CurrentPage = 1; ViewBag.Size = filter.Size; return(View()); }
public async Task <IActionResult> Filter( [FromQuery] string Header = default, [FromQuery] string Description = default, [FromQuery] int CategoryId = default, [FromQuery] string HasPhotoOnly = "false", [FromQuery] uint?PriceFrom = null, [FromQuery] uint?PriceTo = null, [FromQuery] string UserId = default, [FromQuery] long?AdvertId = null, [FromQuery] DateTime?CreatedDateTimeFrom = null, [FromQuery] DateTime?CreatedDateTimeTo = null, [FromQuery] string Region = default, [FromQuery] int Size = 6, [FromQuery] string in_header = "true", [FromQuery] int page = 1 ) { ViewData["Header"] = Header; ViewData["Description"] = Description; ViewData["CategoryId"] = CategoryId; ViewData["HasPhotoOnly"] = HasPhotoOnly; ViewData["PriceFrom"] = PriceFrom; ViewData["PriceTo"] = PriceTo; ViewData["UserId"] = UserId; ViewData["AdvertId"] = AdvertId; ViewData["CreatedDateTimeFrom"] = CreatedDateTimeFrom; ViewData["CreatedDateTimeTo"] = CreatedDateTimeTo; ViewData["Region"] = Region; ViewData["Size"] = Size; ViewData["in_header"] = in_header; ViewData["page"] = page; var cats = await _categoryApiClient.GetCategoriesAsync(); IReadOnlyCollection <CategoryDto> cat_data = cats.Data; ViewBag.Categories = cat_data; var _filter = new FilterAdvertViewModel { Header = Header, Description = Description, CategoryId = (CategoryId == 0) ? (long?)null : CategoryId, HasPhotoOnly = bool.Parse(HasPhotoOnly), PriceFrom = PriceFrom, PriceTo = PriceTo, UserId = UserId, AdvertId = AdvertId, CreatedDateTimeFrom = CreatedDateTimeFrom, CreatedDateTimeTo = CreatedDateTimeTo, Region = Region, Size = Size }; if (in_header.Equals("false")) { _filter.Description = Header; } var viewFilter = _filter; int p = page; AdvertFilter filter = _mapper.Map <AdvertFilter>(viewFilter); filter.CurrentPage = p; if (viewFilter.CreatedDateTimeTo.HasValue || viewFilter.CreatedDateTimeFrom.HasValue) { var range = new Range <DateTime>(); if (viewFilter.CreatedDateTimeFrom.HasValue) { range.From = viewFilter.CreatedDateTimeFrom.Value; } else { range.From = DateTime.MinValue; } if (viewFilter.CreatedDateTimeTo.HasValue) { range.To = viewFilter.CreatedDateTimeTo.Value; } else { range.To = DateTime.MaxValue; } filter.CreatedDateTime = range; } if (viewFilter.PriceTo.HasValue || viewFilter.PriceFrom.HasValue) { var range = new Range <uint>(); if (viewFilter.PriceFrom.HasValue) { range.From = viewFilter.PriceFrom.Value; } else { range.From = UInt32.MinValue; } if (viewFilter.PriceTo.HasValue) { range.To = viewFilter.PriceTo.Value; } else { range.To = UInt32.MaxValue; } filter.Price = range; } var response = await _advertApiClient.GetAdvertsByFilterAsync(filter); IReadOnlyCollection <AdvertDto> _ads = response.Data; ViewBag.Adverts = _ads; ViewBag.CurrentPage = p; ViewBag.Size = filter.Size; if (response.HasErrors) { return(View("Error", new ErrorViewModel { RequestId = response.Errors.FirstOrDefault() })); } return(View(_filter)); }