public async Task <ActionResult <SearchCarAdsOutputModel> > Search( [FromQuery] CarAdsQuery query) { var carAdListings = await this.carAds.GetListings(query); var totalPages = await this.carAds.Total(query); return(new SearchCarAdsOutputModel(carAdListings, query.Page, totalPages)); }
private async Task <IQueryable <CarAd> > GetCarAdsQuery( CarAdsQuery query, int?dealerId = null, bool includePaging = true) { var dataQuery = this.AllAvailable(); if (dealerId.HasValue) { dataQuery = this .All() .Where(c => c.DealerId == dealerId); } if (query.Category.HasValue) { dataQuery = dataQuery.Where(c => c.CategoryId == query.Category); } if (!string.IsNullOrWhiteSpace(query.Description)) { var fullTextSearch = await this.fullTextSearch .Query <CarAdFullTextSearchModel>( c => c.Description, query.Description); var ids = fullTextSearch.Select(c => c.CarAdId); dataQuery = dataQuery.Where(c => ids.Contains(c.Id)); } if (!string.IsNullOrWhiteSpace(query.Manufacturer)) { dataQuery = dataQuery.Where(c => c .Manufacturer.Name.ToLower().Contains(query.Manufacturer.ToLower())); } if (query.MinPricePerDay.HasValue) { dataQuery = dataQuery.Where(c => c.PricePerDay >= query.MinPricePerDay); } if (query.MaxPricePerDay.HasValue) { dataQuery = dataQuery.Where(c => c.PricePerDay <= query.MaxPricePerDay); } if (includePaging) { dataQuery = dataQuery .Skip((query.Page - 1) * CarAdsPerPage) .Take(CarAdsPerPage); } return(dataQuery); }
public async Task <ActionResult <MineCarAdsOutputModel> > Mine( [FromQuery] CarAdsQuery query) { var dealerId = await this.dealers.GetIdByUser(this.currentUser.UserId); var carAdListings = await this.carAds.Mine(dealerId, query); var totalPages = await this.carAds.Total(query); return(new MineCarAdsOutputModel(carAdListings, query.Page, totalPages)); }
public async Task <int> Total(CarAdsQuery query) => await(await this .GetCarAdsQuery(query, includePaging: false)) .CountAsync();
public async Task <IEnumerable <MineCarAdOutputModel> > Mine(int dealerId, CarAdsQuery query) => await this.mapper .ProjectTo <MineCarAdOutputModel>(await this .GetCarAdsQuery(query, dealerId)) .ToListAsync();
public async Task <IEnumerable <CarAdOutputModel> > GetListings(CarAdsQuery query) => await this.mapper .ProjectTo <CarAdOutputModel>(await this .GetCarAdsQuery(query)) .ToListAsync();