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