public ServiceResult <BeerDTO[]> SearchBeers(SearchBeerDTO searchData) { var allBeersResult = GetAllBeers(); if (allBeersResult.IsError) { return(new ServiceResult <BeerDTO[]>("Error while getting beers")); } var matchingBeers = allBeersResult.SuccessResult.Where(b => MatchesSearch(b, searchData)); return(new ServiceResult <BeerDTO[]>(matchingBeers.ToArray())); }
public IActionResult Search([FromBody] SearchBeerDTO searchData) { if (!ModelState.IsValid) { return(StatusCode(422, ModelState)); } var result = _beerService.SearchBeers(searchData); if (result.IsError) { return(StatusCode(422, result.Errors)); } return(Ok(result.SuccessResult)); }
private bool MatchesSearch(BeerDTO beer, SearchBeerDTO searchData) { if (!String.IsNullOrWhiteSpace(searchData.Name)) { if (!beer.Name.ToLower().Contains(searchData.Name.ToLower())) { return(false); } } return(((searchData.Style != null && beer.Style != searchData.Style) || beer.Alcohol < searchData.AlcoholMin || beer.Alcohol > searchData.AlcoholMax || beer.Ibu < searchData.IbuMin || beer.Ibu > searchData.IbuMax || beer.Blg < searchData.BlgMin || beer.Blg > searchData.BlgMax) ? false : true); }