public async Task <IActionResult> FilterPublications(PublicationSearchModel filters, [FromQuery] PagedParams param) { var queryable = SearchPublication(filters); var publications = await PagedList <Publication> .CreateAsync(queryable.OrderByDescending( c => c.Id), param.PageNumber, param.PageSize); Response.AddPagination(publications.CurrentPage, publications.PageSize, publications.TotalCount, publications.TotalPages); return(Ok(publications.ToList())); }
private IQueryable <Publication> SearchPublication(PublicationSearchModel filters = null) { var query = _repoWrapper.Publication.Queryable(); if (filters.UserId != null) { query = _repoWrapper.Publication.FindQueryable(v => v.UserId == filters.UserId); } if (filters.InvoiceNumber != null) { query = query.Where(v => v.InvoiceNumber == filters.InvoiceNumber); } if (filters.MinMileage != null) { query = query.Where(v => v.Mileage >= filters.MinMileage); } if (filters.MaxMileage != null) { query = query.Where(v => v.Mileage >= filters.MaxMileage); } if (filters.SerialNumber != null) { query = query.Where(v => v.SerialNumber.StartsWith(filters.SerialNumber)); } if (filters.InsideColor != null) { query = query.Where(v => v.InsideColor.StartsWith(filters.InsideColor)); } if (filters.OutsideColor != null) { query = query.Where(v => v.OutsideColor.StartsWith(filters.OutsideColor)); } if (filters.MinPrice != null) { query = query.Where(v => v.Price >= filters.MinPrice); } if (filters.MaxPrice != null) { query = query.Where(v => v.Price <= filters.MaxPrice); } if (filters.BrandId != null) { query = query.Where(v => v.BrandId == filters.BrandId); } if (filters.ModelId != null) { query = query.Where(v => v.ModelId == filters.ModelId); } if (filters.FuelId != null) { query = query.Where(v => v.FuelId == filters.FuelId); } if (filters.LocationId != null) { query = query.Where(v => v.LocationId == filters.LocationId); } if (filters.PackId != null) { query = query.Where(v => v.PackId == filters.PackId); } if (filters.TransmissionId != null) { query = query.Where(v => v.TransmissionId == filters.TransmissionId); } if (filters.VersionId != null) { query = query.Where(v => v.VersionId == filters.VersionId); } if (filters.YearId != null) { query = query.Where(v => v.YearId == filters.YearId); } if (filters.DoorsNumberId != null) { query = query.Where(v => v.DoorsNumberId == filters.DoorsNumberId); } if (filters.UserId != null) { query = query.Where(v => v.UserId == filters.UserId); } return(query); }