public ActionResult <ApiCheckBeersAvailabilityViewModel> CheckBeersAvailability( [FromBody] CheckBeersAvailabilityRequest request) { var useCase = new CheckBeersAvailabilityUseCase(_catalog); var presenter = new ApiCheckBeersAvailabilityPresenter(); useCase.Execute(request, presenter); var vm = presenter.ViewModel; return(vm.HttpCode == 200 ? Ok(vm) : (ActionResult)BadRequest(vm)); }
public void Execute(CheckBeersAvailabilityRequest request, ICheckBeersAvailabilityPresenter presenter) { var ids = request.Beers.Keys; var catalogBeersStock = _catalog .GetAllBeers() .Where(x => ids.Contains(x.Id.Value)) .Select(x => new { BeerId = x.Id.Value, BeerStock = x.Stock.Value }); var response = new CheckBeersAvailabilityResponse { Data = new Dictionary <Guid, bool>() }; request.Beers.ToList().ForEach(x => { response.Data.Add(x.Key, catalogBeersStock.Any(cbs => cbs.BeerId.Equals(x.Key) && cbs.BeerStock >= x.Value) ); }); presenter.Present(response); }