public async Task <bool> Handle(IniciarPedidoCommand request, CancellationToken cancellationToken) { if (!ValidarComando(request)) { return(false); } var pedido = await _pedidoRepository.ObterPedidoRascunhoPorClienteId(request.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, request.NomeCartao, request.NumeroCartao, request.ExpiracaoCartao, request.CvvCartao)); _pedidoRepository.Atualizar(pedido); return(await _pedidoRepository.UnitOfWork.Commit()); }
public async Task <IActionResult> IniciarPedido(CarrinhoViewModel carrinhoViewModel) { var carrinho = await _pedidoQueries.ObterCarrinhoCliente(ClienteID); var command = new IniciarPedidoCommand(carrinho.PedidoID, ClienteID, carrinho.ValorTotal, carrinhoViewModel.Pagamento.NomeCartao, carrinhoViewModel.Pagamento.NumeroCartao, carrinhoViewModel.Pagamento.ExpiracaoCartao, carrinhoViewModel.Pagamento.CvvCartao); await _mediatorHandler.EnviarComando(command); if (OperacaoValida()) { return(RedirectToAction(nameof(Index), "Pedido")); } return(View(nameof(ResumoDaCompra), await _pedidoQueries.ObterCarrinhoCliente(ClienteID))); }
public async Task <IActionResult> IniciarPedido(CarrinhoDTO carrinhoViewModel) { var carrinho = await _pedidoQueries.GetCarrinhoCliente(ClienteId); var command = new IniciarPedidoCommand(carrinho.PedidoId, ClienteId, carrinho.ValorTotal, carrinhoViewModel.Pagamento.NomeCartao, carrinhoViewModel.Pagamento.NumeroCartao, carrinhoViewModel.Pagamento.ExpiracaoCartao, carrinhoViewModel.Pagamento.CvvCartao); await _mediatorHandler.SendCommand(command); if (OperacaoValida()) { return(RedirectToAction("Index", "Pedido")); } return(View("ResumoDaCompra", await _pedidoQueries.GetCarrinhoCliente(ClienteId))); }