Esempio n. 1
0
        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());
        }
Esempio n. 2
0
        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));
        }