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