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); }
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)); }
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()); }
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); }