예제 #1
0
        public void Execute(AddBeerRequest request, IAddBeerPresenter presenter)
        {
            var validator = new AddBeerValidator(_catalog);

            var validationResult = validator.Validate(request);

            var response = new AddBeerResponse();

            if (!validationResult.IsValid)
            {
                response.Data   = null;
                response.Errors = validationResult.Errors
                                  .Select(e => new KeyValuePair <string, string>(e.PropertyName, e.ErrorMessage))
                                  .ToDictionary(x => x.Key, x => x.Value);
            }
            else
            {
                var beer = _catalog.AddBeer(new BeerModel(
                                                null,
                                                null,
                                                null,
                                                request.Label,
                                                request.Description,
                                                request.Stock
                                                ));

                response.Data   = beer;
                response.Errors = null;
            }

            presenter.Present(response);
        }
예제 #2
0
        public AddBeerResponse AddBeer(AddBeerRequest addBeerRequest)
        {
            var response = new AddBeerResponse()
            {
                BaseResponse = CreateBaseResponse(addBeerRequest.BaseRequest)
            };

            response.BaseResponse = VerifyBaseRequest(addBeerRequest.BaseRequest, response.BaseResponse);

            if (response.BaseResponse.ResponseStatus == ResponseStatus.Failure)
            {
                response.Beer = null;
                return(response);
            }

            var beer = _beerRepository.AddBeer(addBeerRequest.Beer);

            response.Beer = beer;
            return(response);
        }
예제 #3
0
 public void Present(AddBeerResponse response)
 {
     ViewModel = new ApiAddBeerViewModel
     {
         HttpCode = response.Errors != null && response.Errors.Any() ? 400 : 201,
         Success  = response.Errors == null || !response.Errors.Any(),
         Data     = response.Errors != null && response.Errors.Any()
             ? null
             : new
         {
             Id           = response.Data.Id.Value,
             Label        = response.Data.Label.Value,
             Description  = response.Data.Description.Value,
             Stock        = response.Data.Stock.Value,
             Available    = response.Data.Stock.Value > 0,
             LimitedStock = response.Data.Stock.Value <= 50
         },
         Errors = response.Errors
     };
 }