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> 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); }