Beispiel #1
0
 private Pedido MapearNovoPedido(ICadastrarPedidoInput input)
 {
     return(new Pedido
     {
         ClienteId = input.ClienteId,
         DataPedido = input.DataPedido,
         ItensPedido = input.ItensPedido.Select(f => new ProdutoPedido(f)).ToList()
     });
 }
Beispiel #2
0
        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)));
            }
        }
Beispiel #3
0
        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);
        }