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());
        }
Esempio n. 2
0
        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)));
        }
Esempio n. 3
0
        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)));
        }