private Pedido MapearNovoPedido(ICadastrarPedidoInput input) { return(new Pedido { ClienteId = input.ClienteId, DataPedido = input.DataPedido, ItensPedido = input.ItensPedido.Select(f => new ProdutoPedido(f)).ToList() }); }
private async Task ValidarInput(ICadastrarPedidoInput input, CancellationToken cancellationToken) { var validacao = await validador.ValidateAsync(input, cancellationToken); if (!validacao.IsValid) { throw new ArgumentException( JsonConvert.SerializeObject( validacao.Errors.Select(f => f.ErrorMessage))); } }
public async Task <ICadastrarPedidoOutput> Executar(ICadastrarPedidoInput input, CancellationToken cancellationToken = default) { await ValidarInput(input, cancellationToken); var pedido = MapearNovoPedido(input); pedido.ValorFrete = await ObterValorFrete(input.ClienteId, cancellationToken) ?? 0; await this.AtualizarValorTotalItensPedido(pedido.ItensPedido, cancellationToken); await this.pedidoServico.CadastrarPedido(pedido, cancellationToken); var cadastrarPedidoOutput = new CadastrarPedidoOutput { NumeroPedido = pedido.NumeroPedido }; return(cadastrarPedidoOutput); }