Esempio n. 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);
        }
Esempio n. 2
0
        public ActionResult <ApiAddBeerViewModel> AddBeer([FromBody] AddBeerRequest request)
        {
            var useCase = new AddBeerUseCase(_catalog);

            var presenter = new ApiAddBeerPresenter();

            useCase.Execute(request, presenter);

            var vm = presenter.ViewModel;

            return(vm.HttpCode == 201
                ? Created($"/api/beers/{vm.Data.GetType().GetProperty("Id")?.GetValue(vm.Data)}", vm)
                : (ActionResult)BadRequest(vm));
        }
Esempio n. 3
0
        public async Task <ActionResult <Beer> > AddBeer(Guid breweryId, [FromBody] AddBeerRequest createBeerRequest)
        {
            createBeerRequest.BreweryId = breweryId;
            var result = await _breweryService.AddBeerAsync(_mapper.Map <Beer>(createBeerRequest));

            if (result.IsFailure && result.ErrorCode == ResultErrorCode.Validation)
            {
                return(UnprocessableEntity(result.ErrorMessage));
            }

            if (result.IsFailure && result.ErrorCode == ResultErrorCode.NotFound)
            {
                return(NotFound(result.ErrorMessage));
            }

            return(Ok());
        }
Esempio n. 4
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);
        }