public async Task <ActionResult <ICollection <PlaceListModel> > > GetPlaces(PlaceFilterInputModel input) { var result = await this.placeService.GetPlaces(input); var placesCount = this.placeService.GetCount(input); return(Ok(new { result, placesCount })); }
public async Task <ICollection <PlaceListModel> > GetPlaces(PlaceFilterInputModel input) { var query = this.FilterPlaces(input); var listing = await query .Skip(input.Skip) .Take(input.Take) .To <PlaceListModel>() .ToListAsync(); return(listing); }
public async Task <IActionResult> Listing(string city, string searchWord) { var input = new PlaceFilterInputModel() { Take = 4, Skip = 0, City = city, SearchWord = searchWord }; this.ViewData["searchWord"] = searchWord; this.ViewData["city"] = city; this.ViewData["placesCount"] = this.placeService.GetCount(input); var listing = await this.placeService.GetPlaces(input); return(this.View(listing)); }
private IQueryable <Place> FilterPlaces(PlaceFilterInputModel input) { var query = this.context.Places .Include(x => x.PlacePerks) .ThenInclude(x => x.Perk) .Include(x => x.Reviews) .AsQueryable(); if (!String.IsNullOrWhiteSpace(input.SearchWord)) { query = query .Where(x => x.Name.ToLower().Contains(input.SearchWord.ToLower())); } if (!String.IsNullOrWhiteSpace(input.City)) { query = query .Where(x => x.City.ToLower().Contains(input.City.ToLower())); } if (input.Category != 0) { query = query .Where(x => x.Category == input.Category); } if (input.PriceRange != 0) { query = query .Where(x => x.PriceRange == input.PriceRange); } if (input.Perks != null) { if (input.Perks.Count > 0) { foreach (var item in input.Perks) { query = query .Where(x => x.PlacePerks.Any(x => x.Perk.Name == item)); } } } return(query); }
public int GetCount(PlaceFilterInputModel input) { var query = this.FilterPlaces(input); return(query.Count()); }