public async Task <bool> Handle(CancelarPedidoCommand mensagem, CancellationToken cancellationToken) { var pedido = await _pedidoRepository.ObterPorId(mensagem.PedidoID); if (pedido == null) { await _mediatorHandler.PublicarNotificacao(new DomainNotification("pedido", "Pedido não encontrado")); } var itens = new List <Item>(); pedido.PedidoItems.ForEach(c => itens.Add(new Item { ID = c.ProdutoID, Quantidade = c.Quantidade })); var produtos = new Core.DomainObjects.DTO.PedidoItem { PedidoID = pedido.ID, Itens = itens }; pedido.AdicionarEvento(new PedidoProcessamentoCanceladoEvent(pedido.ID, pedido.ClienteID, produtos)); pedido.TornarRascunho(); return(await _pedidoRepository.UnityOfWork.Commit()); }
public async Task <bool> Handle(IniciarPedidoCommand message, CancellationToken cancellationToken) { if (!ValidarComando(message)) { return(false); } var pedido = await _pedidoRepository.ObterPedidoRascunhoPorClienteID(message.ClienteID); pedido.IniciarPedido(); var itens = new List <Item>(); pedido.PedidoItems.ForEach(i => itens.Add(new Item { ID = i.ProdutoID, Quantidade = i.Quantidade })); var pedidoItems = new Core.DomainObjects.DTO.PedidoItem { PedidoID = pedido.ID, Itens = itens }; pedido.AdicionarEvento(new PedidoIniciadoEvent(pedido.ID, pedido.ClienteID, pedido.ValorTotal, message.NomeCartao, message.NumeroCartao, message.ExpiracaoCartao, message.CvvCartao, pedidoItems)); pedido.IniciarPedido(); _pedidoRepository.Atualizar(pedido); return(await _pedidoRepository.UnityOfWork.Commit()); }