public async Task <bool> Handle(IniciarPedidoCommand message, CancellationToken cancellationToken)
        {
            if (!ValidarComando(message))
            {
                return(false);
            }

            var pedido = await _pedidoRepository.ObterPedidoRascunhoPorClienteId(message.ClienteId);

            pedido.IniciarPedido();

            var itensList = new List <Item>();

            pedido.PedidoItems.ForEach(i => itensList.Add(new Item {
                Id = i.ProdutoId, Quantidade = i.Quantidade
            }));
            var listaProdutosPedido = new ListaProdutosPedido {
                PedidoId = pedido.Id, Itens = itensList
            };

            pedido.AdicionarEvento(new PedidoIniciadoEvent(pedido.Id, pedido.ClienteId, listaProdutosPedido, pedido.ValorTotal, message.NomeCartao, message.NumeroCartao, message.ExpiracaoCartao, message.CvvCartao));

            _pedidoRepository.Atualizar(pedido);
            return(await _pedidoRepository.UnitOfWork.Commit());
        }
Esempio n. 2
0
 public PedidoProcessamentoCanceladoEvent(Guid pedidoId, Guid clienteId, ListaProdutosPedido produtosPedido)
 {
     AggregateId    = pedidoId;
     PedidoId       = pedidoId;
     ClienteId      = clienteId;
     ProdutosPedido = produtosPedido;
 }
        public async Task <bool> Handle(CancelarProcessamentoPedidoEstornarEstoqueCommand message, CancellationToken cancellationToken)
        {
            var pedido = await _pedidoRepository.ObterPorId(message.PedidoId);

            if (pedido == null)
            {
                await _mediatorHandler.PublicarNotificacao(new DomainNotification("pedido", "Pedido não encontrado!"));

                return(false);
            }

            var itensList = new List <Item>();

            pedido.PedidoItens.ForEach(i => itensList.Add(new Item {
                Id = i.ProdutoId, Quantidade = i.Quantidade
            }));
            var listaProdutosPedido = new ListaProdutosPedido {
                PedidoId = pedido.Id, Itens = itensList
            };

            pedido.AdicionarEvento(new PedidoProcessamentoCanceladoEvent(pedido.Id, pedido.ClienteId, listaProdutosPedido));
            pedido.TornarRascunho();

            return(await _pedidoRepository.UnitOfWork.Commit());
        }
Esempio n. 4
0
        public async Task <bool> ReporListaProdutosPedido(ListaProdutosPedido listaProdutosPedido)
        {
            foreach (var item in listaProdutosPedido.Itens)
            {
                await ReporItemEstoque(item.Id, item.Quantidade);
            }

            return(await _produtoRepository.UnitOfWork.Commit());
        }
        public async Task <bool> ReporListaProdutosPedido(ListaProdutosPedido lista)
        {
            foreach (var item in lista.Itens)
            {
                await ReporItemEstoque(item.Id, item.Quantidade);
            }

            return(true);
        }
 public PedidoEstoqueConfirmadoEvent(Guid pedidoId, Guid clienteId, decimal total, ListaProdutosPedido produtosPedido, string nomeCartao, string numeroCartao, string expiracaoCartao, string cvvCartao)
 {
     PedidoId        = pedidoId;
     ClienteId       = clienteId;
     Total           = total;
     ProdutosPedido  = produtosPedido;
     NomeCartao      = nomeCartao;
     NumeroCartao    = numeroCartao;
     ExpiracaoCartao = expiracaoCartao;
     CvvCartao       = cvvCartao;
 }
Esempio n. 7
0
 public PedidoIniciadoEvent(Guid pedidoId, Guid clienteId, ListaProdutosPedido itens, decimal total, string nomeCartao, string numeroCartao, string expiracaoCartao, string cvvCartao)
 {
     AggregateId     = pedidoId;
     PedidoId        = pedidoId;
     ClienteId       = clienteId;
     ProdutosPedido  = itens;
     Total           = total;
     NomeCartao      = nomeCartao;
     NumeroCartao    = numeroCartao;
     ExpiracaoCartao = expiracaoCartao;
     CvvCartao       = cvvCartao;
 }
Esempio n. 8
0
        public async Task <bool> DebitarListaProdutosPedido(ListaProdutosPedido listaProdutosPedido)
        {
            foreach (var item in listaProdutosPedido.Itens)
            {
                if (!await DebitarItemEstoque(item.Id, item.Quantidade))
                {
                    return(false);
                }
            }

            return(await _produtoRepository.UnitOfWork.Commit());
        }
        public async Task <bool> DebitarListaProdutosPedido(ListaProdutosPedido _lista)
        {
            foreach (var item in _lista.Itens)
            {
                if (!await DebitarItemEstoque(item.Id, item.Quantidade))
                {
                    return(false);
                }
            }

            return(true);
        }