private IEnumerable <Advert> FilterSearch(IEnumerable <Advert> adverts, AdvertSearchModel model)
        {
            IEnumerable <Advert> filteredList = new List <Advert>();

            if (model.Keywords != null)
            {
                foreach (string keyword in model.Keywords)
                {
                    filteredList = filteredList.Concat(adverts.Where(ad => ad.Header.ToLower().Contains(keyword.ToLower()) ||
                                                                     ad.Description.ToLower().Contains(keyword.ToLower())));
                }
                // remove duplicates
                filteredList = filteredList.Distinct();
            }
            else
            {
                filteredList = adverts;
            }

            if (model.ProvinceId != 0)
            {
                filteredList = filteredList.Where(ad => ad.ProvinceId == model.ProvinceId);
            }


            if (model.CityId != 0)
            {
                filteredList = filteredList.Where(ad => ad.CityId == model.CityId);
            }

            filteredList = filteredList.Where(ad => ad.Price >= model.MinPrice);

            if (model.MaxPrice != 0)
            {
                filteredList = filteredList.Where(ad => ad.Price <= model.MaxPrice);
            }

            switch (model.OrderBy)
            {
            case 1:
            {
                filteredList = filteredList.OrderByDescending(ad => ad.Date);
                break;
            }

            case 2:
            {
                filteredList = filteredList.OrderBy(ad => ad.Price);
                break;
            }

            default:
            {
                filteredList = filteredList.OrderByDescending(ad => ad.Price);
                break;
            }
            }

            return(filteredList);
        }
        public IEnumerable <AdvertViewModel> SearchNonFeaturedAdverts(AdvertSearchModel model)
        {
            var entityList = _repo.GetAllAdverts();

            entityList = entityList.Where(ad => ad.State == "Live" && ad.Featured == false);

            var returnList = FilterSearch(entityList, model);

            return(returnList.Select(advert => _mapper.ViewMapper(advert)));
        }
        public List <AdvertViewModel> SearchUserAdverts(int userId, AdvertSearchModel model)
        {
            var entityList = _repo.GetAllUserAdverts(userId);

            entityList = entityList.Where(ad => ad.State != "Deleted").ToList();

            var returnList = FilterSearch(entityList, model);

            return(returnList.Select(advert => _advertMapper.ViewMapper(advert)).ToList());
        }
        public ActionResult <IEnumerable <AdvertViewModel> > SearchUserAdverts(int userId, AdvertSearchModel model)
        {
            var adverts = _userService.SearchUserAdverts(userId, model);

            return(Ok(adverts));
        }
Exemplo n.º 5
0
        public ActionResult <IEnumerable <AdvertViewModel> > SearchNonFeaturedAdverts(AdvertSearchModel model)
        {
            var adverts = _adService.SearchNonFeaturedAdverts(model);

            return(Ok(adverts));
        }