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());
        }
Example #2
0
        public async Task <bool> Handle(IniciarPedidoCommand message, CancellationToken cancellationToken)
        {
            if (!ValidarComando(message))
            {
                return(false);
            }

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

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

                return(false);
            }

            pedido.IniciarPedido();

            var itemList = new List <Item>();

            pedido.PedidoItems.ForEach(p => itemList.Add(new Item {
                Id = p.ProdutoId, Quantidade = p.Quantidade
            }));

            var listaProdutosPedido = new ListaProdutosPedido()
            {
                PedidoId = pedido.Id, Itens = itemList
            };

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

            _IPedidoRepository.Atualizar(pedido);

            return(await _IPedidoRepository.IUnitOfWork.Commit());
        }