Example #1
0
        public IEnumerable <Advert> GetAll(AdvertsFilterRequestModel filters, AdvertsSortRequestModel sortInfo, int pageNumber = 0, int pageSize = 10)
        {
            var adverts = _advertRepository.GetAll();

            if (filters != null)
            {
                adverts = FilterAdverts(adverts, filters);
            }

            if (sortInfo != null)
            {
                adverts = SortAdverts(adverts, sortInfo);
            }

            var mappedAdverts = adverts.Where(x => !x.IsClosed)
                                .Skip(pageNumber * pageSize).Select(x => new Advert()
            {
                AccountId    = x.AccountId,
                Tags         = x.Tags.Select(c => c.Value).ToList(),
                Reward       = x.Reward,
                CreationDate = x.CreationDate,
                Title        = x.Title,
                Text         = x.Text,
                ImageUrl     = x.AdvertImages.FirstOrDefault().Url,
                Account      = new Account()
                {
                    FirstName   = x.Account.FirstName,
                    LastName    = x.Account.LastName,
                    PhoneNumber = x.Account.AccountPhoneNumbers.FirstOrDefault(c => c.IsPrimary).PhoneNumber
                }
            }).Take(pageSize);

            return(mappedAdverts);
        }
 public HttpResponseMessage Get([FromUri] AdvertsFilterRequestModel filters, [FromUri] AdvertsSortRequestModel sortInfo,
                                [FromUri] int pageNumber = 0, [FromUri] int pageSize = 10)
 {
     try
     {
         var result = _advertService.GetAll(filters, sortInfo, pageNumber, pageSize);
         return(Request.CreateResponse(System.Net.HttpStatusCode.OK, result));
     }
     catch (ArgumentNullException exception)
     {
         return(Request.CreateResponse(System.Net.HttpStatusCode.BadRequest, exception.Message));
     }
     catch (Exception exception)
     {
         return(Request.CreateResponse(System.Net.HttpStatusCode.InternalServerError, exception.Message));
     }
 }
Example #3
0
        private IQueryable <AdvertEntity> SortAdverts(IQueryable <AdvertEntity> adverts, AdvertsSortRequestModel sortOrder)
        {
            IQueryable <AdvertEntity> resultQuery = adverts;

            if (sortOrder.ByCity)
            {
                resultQuery = sortOrder.IsDesc ? adverts.OrderByDescending(x => x.AdvertAddressDetails.City) : adverts.OrderBy(x => x.AdvertAddressDetails.City);
            }

            if (sortOrder.ByReward)
            {
                resultQuery = sortOrder.IsDesc ? adverts.OrderByDescending(x => x.Reward) : adverts.OrderBy(x => x.Reward);
            }

            if (sortOrder.ByTitle)
            {
                resultQuery = sortOrder.IsDesc ? adverts.OrderByDescending(x => x.Title) : adverts.OrderBy(x => x.Title);
            }

            if (sortOrder.ByCreationDate)
            {
                resultQuery = sortOrder.IsDesc ? adverts.OrderByDescending(x => x.CreationDate) : adverts.OrderBy(x => x.CreationDate);
            }

            return(resultQuery);
        }