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)); } }
private IQueryable <AdvertEntity> FilterAdverts(IQueryable <AdvertEntity> adverts, AdvertsFilterRequestModel filters) { IQueryable <AdvertEntity> resultQuery = adverts; if (!string.IsNullOrWhiteSpace(filters.City)) { resultQuery = adverts.Where(x => x.AdvertAddressDetails.City == filters.City); } if (filters.CreationDateFromFilter != new DateTime()) { resultQuery = adverts.Where(x => x.CreationDate >= filters.CreationDateFromFilter); } if (filters.CreationDateToFilter != new DateTime()) { resultQuery = adverts.Where(x => x.CreationDate <= filters.CreationDateToFilter); } if (filters.RewardToFilter != 0) { resultQuery = adverts.Where(x => x.Reward <= filters.RewardToFilter); } if (filters.RewardFromFilter != 0) { resultQuery = adverts.Where(x => x.Reward >= filters.RewardFromFilter); } return(resultQuery); }