public List <Offer> GetOffersByMatching(OfferParams offerParams)
        {
            var query = offerParams.QueryFilter.Trim().RemoveDiacritics().ToLower();

            if (!string.IsNullOrEmpty(query))
            {
                HashSet <Offer> conj = new HashSet <Offer>();
                // Utils.TreatValues(offerParams);

                var offers = _context.Offers.Include(off => off.Photos).AsQueryable();

                conj = conj.Union(offers.Where(off => off.Advertiser.RemoveDiacritics().Trim().ToLower().Contains(query))).ToHashSet();

                conj = conj.Union(offers.Where(off => off.Category.Trim().RemoveDiacritics().ToLower().Contains(query))).ToHashSet();

                conj = conj.Union(offers.Where(off => off.Description.Trim().RemoveDiacritics().ToLower().Contains(query))).ToHashSet();

                conj = conj.Union(offers.Where(off => off.Title.Trim().RemoveDiacritics().ToLower().Contains(query))).ToHashSet();

                conj = conj.Union(offers.Where(off => off.ComoUsar.Trim().RemoveDiacritics().ToLower().Contains(query))).ToHashSet();

                conj = conj.Union(offers.Where(off => off.OndeFica.Trim().RemoveDiacritics().ToLower().Contains(query))).ToHashSet();

                return(conj.ToList());
            }

            return(new List <Offer> {
            });
        }
Exemple #2
0
        public IActionResult GetOffersByMatching([FromQuery] OfferParams offerParams)
        {
            List <Offer>             offers             = _repo.GetOffersByMatching(offerParams);
            List <OfferForReturnDto> offersForReturnDto = _mapper.Map <List <OfferForReturnDto> >(offers);

            return(Ok(offersForReturnDto));
        }
Exemple #3
0
        public async Task <IActionResult> GetFilteredOffers([FromQuery] OfferParams offerParams)
        {
            List <Offer> offers = await _repo.GetOffersByFiltering(offerParams);

            var offersToReturn = _mapper.Map <List <OfferForReturnDto> >(offers);

            return(Ok(offersToReturn));
        }
Exemple #4
0
        public async Task <ActionResult <IEnumerable <Offer> > > OffersFromCategory(OfferCategory offerCategory,
                                                                                    [FromQuery] OfferParams offerParams)
        {
            var offers = await _unitOfWork.OfferRepository.GetOffersFromCategoryAsync(offerCategory, offerParams);

            Response.AddPaginationHeader(offers.CurrentPage, offers.PageSize,
                                         offers.TotalCount, offers.TotalPages);

            return(Ok(offers));
        }
        public async Task <List <Offer> > GetOffersByFiltering(OfferParams offerParams)
        {
            var offers = _context.Offers.Include(off => off.Photos).AsQueryable();

            if (offerParams.OfferId > 0)
            {
                offers = offers.Where(off => off.Id == offerParams.OfferId);
            }

            if (!string.IsNullOrEmpty(offerParams.Advertiser))
            {
                offers = offers.Where(off => off.Advertiser == offerParams.Advertiser);
            }

            if (!string.IsNullOrEmpty(offerParams.Category))
            {
                offers = offers.Where(off => off.Category == offerParams.Category);
            }

            if (!string.IsNullOrEmpty(offerParams.Description))
            {
                offers = offers.Where(off => off.Description == offerParams.Description);
            }

            if (!string.IsNullOrEmpty(offerParams.Title))
            {
                offers = offers.Where(off => off.Title == offerParams.Title);
            }

            if (!string.IsNullOrEmpty(offerParams.ComoUsar))
            {
                offers = offers.Where(off => off.ComoUsar == offerParams.ComoUsar);
            }

            if (!string.IsNullOrEmpty(offerParams.OndeFica))
            {
                offers = offers.Where(off => off.OndeFica == offerParams.OndeFica);
            }

            if (offerParams.IsHanked)
            {
                offers = offers.Where(off => off.IsHanked);
            }

            return(await offers.ToListAsync());
        }
        public async Task <PagedList <Offer> > GetOffersFromCategoryAsync(OfferCategory offerCategory,
                                                                          OfferParams offerParams)
        {
            var query = _context.Offers
                        .Where(x => x.OfferCategoryName == offerCategory)
                        .Include(p => p.Photos)
                        .AsQueryable();

            var order = offerParams.OrderBy;

            query = query.Where(x => x.Price >= offerParams.MinPrice && x.Price <= offerParams.MaxPrice);
            query = offerParams.OrderBy switch
            {
                "PriceDesc" => query.OrderByDescending(x => x.Price),
                "Price" => query.OrderBy(x => x.Price),
                _ => query.OrderBy(x => x.Id)
            };

            return(await PagedList <Offer> .CreateAsync(query.AsNoTracking(), offerParams.PageNumber, offerParams.PageSize));
        }
Exemple #7
0
        public async Task <IActionResult> GetAllOffers([FromQuery] OfferParams param)
        {
            IQueryable <Offer> queryable = _repoWrapper.Offer.Queryable();

            if (param.Role == UserParams.ROLE_EMPLOYEE)
            {
                queryable = queryable.Where(u => u.Publication.UserId.Equals(param.Id) && u.Enabled == true);
            }
            else if (param.Role == UserParams.ROLE_DISTRIBUTOR)
            {
                queryable = queryable.Where(d => (d.UserId.Equals(param.Id) && d.Enabled == true));
            }
            var offers = await PagedList <Offer> .CreateAsync(queryable.OrderByDescending(
                                                                  c => c.Id), param.PageNumber, param.PageSize);

            Response.AddPagination(offers.CurrentPage, offers.PageSize,
                                   offers.TotalCount, offers.TotalPages);

            return(Ok(offers.ToList()));
        }
Exemple #8
0
        public async Task <IActionResult> GetFilteredOffersForUser(int userId,
                                                                   [FromQuery] OfferParams offerParams)
        {
            if (userId != int.Parse(User.FindFirst(ClaimTypes.NameIdentifier).Value))
            {
                return(Unauthorized());
            }

            List <Offer> offers = await _repo.GetOffersByFiltering(offerParams);

            List <Offer> offersCart = await _repo.GetOffersCart(userId);

            foreach (var offer in offersCart)
            {
                offers.RemoveAll(off => off.Id == offer.Id);
            }

            var offersToReturn = _mapper.Map <List <OfferForReturnDto> >(offers);

            return(Ok(offersToReturn));
        }