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