public async Task <IActionResult> GetListing([FromQuery] ListingParam listingParam) { var listings = await _repo.GetListing(listingParam); var ListingToReturn = _mapper.Map <IEnumerable <ListingGetDto> >(listings); //Tags = _mapper.Map<List<TagDTO>>(listing.ListingsTags.Select(t => t.Tag)), Response.AddPagination(listings.CurrentPage, listings.PageSize, listings.TotalCount, listings.TotalPages); return(Ok(ListingToReturn)); }
public async Task <PagedList <Listing> > GetListing(ListingParam listingParam) { var listings = _context.Listings .Include(f => f.Photos) .Include(l => l.ListingTags) .ThenInclude(t => t.Tag).OrderByDescending(o => o.Id).AsQueryable(); ///Filter by Category if (listingParam.CategoryId != 0) { listings = listings.Where(c => c.CategoryId == listingParam.CategoryId); } ///Filter by Location if (listingParam.LocationId != 0) { listings = listings.Where(c => c.LocationId == listingParam.LocationId); } ///Filter by Minimum Price if (listingParam.MinPrice != 0) { listings = listings.Where(c => c.Price >= listingParam.MinPrice); } ///Filter by Maximum Price if (listingParam.MaxPrice != 0) { listings = listings.Where(c => c.Price <= listingParam.MaxPrice); } ///Filter by Tags /// if (listingParam.TagId != null) { foreach (var item in listingParam.TagId) { listings = listings.Where(c => c.ListingTags.Where(w => w.TagId == item) != null); } } ///Order By if (!string.IsNullOrEmpty(listingParam.OrderBy)) { switch (listingParam.OrderBy) { case "LowToHigh": listings = listings.OrderBy(u => u.Price); break; case "HighToLow": listings = listings.OrderByDescending(u => u.Price); break; case "AtoZ": listings = listings.OrderBy(u => u.Title); break; case "ZtoA": listings = listings.OrderByDescending(u => u.Title); break; default: listings = listings.OrderBy(u => u.Id); break; } } return(await PagedList <Listing> .CreateAsync(listings, listingParam.PageNumber, listingParam.PageSize)); }