Exemple #1
0
        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());
        }
Exemple #2
0
        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());
        }