示例#1
0
        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);
        }