public async Task <PagedList <Advert> > GetActiveAdverts(AdvertParams advertParams) { var adverts = _context.Adverts.Where(a => a.AdvertStatus.ToLower() == "active").Include(p => p.Photos).Include(u => u.User).AsQueryable(); if (advertParams.Make != null && advertParams.Make != "") { adverts = adverts.Where(a => a.Make.ToLower().Contains(advertParams.Make.ToLower())); } if (advertParams.Model != null && advertParams.Model != "") { adverts = adverts.Where(a => a.Model.ToLower().Contains(advertParams.Model.ToLower())); } if (advertParams.TransmissionType != null && advertParams.TransmissionType != "") { adverts = adverts.Where(a => a.TransmissionType.ToLower() == advertParams.TransmissionType.ToLower()); } if (advertParams.FuelType != null && advertParams.FuelType != "") { adverts = adverts.Where(a => a.FuelType.ToLower() == advertParams.FuelType.ToLower()); } if (advertParams.DriveType != null && advertParams.DriveType != "") { adverts = adverts.Where(a => a.DriveType.ToLower() == advertParams.DriveType.ToLower()); } if (advertParams.Colour != null && advertParams.Colour != "") { adverts = adverts.Where(a => a.Colour.ToLower() == advertParams.Colour.ToLower()); } if (advertParams.BodyStyle != null && advertParams.BodyStyle != "") { adverts = adverts.Where(a => a.BodyStyle.ToLower() == advertParams.BodyStyle.ToLower()); } if (advertParams.MinPrice != 0 || advertParams.MaxPrice != 10000000) { adverts = adverts.Where(a => a.Price >= advertParams.MinPrice && a.Price <= advertParams.MaxPrice); } if (advertParams.MinModelYear != 1900 || advertParams.MaxModelYear != DateTime.Now.Year + 1) { adverts = adverts.Where(a => a.ModelYear >= advertParams.MinModelYear && a.ModelYear <= advertParams.MaxModelYear); } if (advertParams.MinHorsePower != 0 || advertParams.MaxHorsePower != 3000) { adverts = adverts.Where(a => a.HorsePower >= advertParams.MinHorsePower && a.HorsePower <= advertParams.MaxHorsePower); } if (advertParams.MinSeatNumber != 1 || advertParams.MaxSeatNumber != 50) { adverts = adverts.Where(a => a.SeatNumber >= advertParams.MinSeatNumber && a.SeatNumber <= advertParams.MaxSeatNumber); } if (advertParams.MinMileage != 0 || advertParams.MaxMileage != 20000000) { adverts = adverts.Where(a => a.Mileage >= advertParams.MinMileage && a.Mileage <= advertParams.MaxMileage); } if (advertParams.MinWeight != 0 || advertParams.MaxWeight != 10000) { adverts = adverts.Where(a => a.Weight >= advertParams.MinWeight && a.Weight <= advertParams.MaxWeight); } return(await PagedList <Advert> .CreateAsync(adverts, advertParams.PageNumber, advertParams.PageSize)); }
public async Task <IActionResult> GetActivePosts([FromQuery] AdvertParams advertParams) { var posts = await _repo.GetActiveAdverts(advertParams); var postsToReturn = _mapper.Map <IEnumerable <AdvertForListDto> >(posts); Response.AddPagination(posts.CurrentPage, posts.PageSize, posts.TotalItemCount, posts.TotalPages); return(Ok(postsToReturn)); }