public async Task <bool> Handle(RemoverItemPedidoCommand message, CancellationToken cancellationToken) { if (!ValidarComando(message)) { return(false); } var pedido = await _pedidoRepository.ObterPedidoRascunhoPorClienteId(message.ClienteId); if (pedido == null) { await _mediator.Publish(new DomainNotification("pedido", "Pedido não encontrado!"), cancellationToken); return(false); } var pedidoItem = await _pedidoRepository.ObterItemPorPedido(pedido.Id, message.ProdutoId); if (pedidoItem != null && !pedido.PedidoItemExistente(pedidoItem)) { await _mediator.Publish(new DomainNotification("pedido", "Item do pedido não encontrado!"), cancellationToken); return(false); } pedido.RemoverItem(pedidoItem); pedido.AdicionarEvento(new PedidoProdutoRemovidoEvent(message.ClienteId, pedido.Id, message.ProdutoId)); _pedidoRepository.RemoverItem(pedidoItem); _pedidoRepository.Atualizar(pedido); return(await _pedidoRepository.UnitOfWork.Commit()); }
public async Task <bool> Handle(RemoverItemPedidoCommand request, CancellationToken cancellationToken) { if (!ValidarComando(request)) { return(false); } var pedido = await _pedidoRepository.ObterPedidoRascunhoPorClienteId(request.ClienteId); if (pedido == null) { await _mediatorHandler.PublicarNotificacao(new DomainNotification("pedido", "Pedido não encontrado")); return(false); } var pedidoItem = await _pedidoRepository.ObterItemPorPedido(pedido.Id, request.ProdutoId); if (pedidoItem != null && !pedido.PedidoItemExistente(pedidoItem)) { await _mediatorHandler.PublicarNotificacao(new DomainNotification("pedido", "Item do pedido não encontrado")); return(false); } pedido.RemoverItem(pedidoItem); _pedidoRepository.RemoverItem(pedidoItem); _pedidoRepository.Atualizar(pedido); return(await _pedidoRepository.UnitOfWork.Commit()); }
public async Task <bool> Handle(RemoverItemPedidoCommand message, CancellationToken cancellationToken) { if (!ValidarComando(message)) { return(false); } var pedido = await _IPedidoRepository.ObterPedidoRascunhoPorClienteId(message.ClienteId); if (pedido == null) { await _IMediateHandler.PublicarNotificacao(new DomainNotification("pedido", "Pedido não encontrado")); return(false); } var pedidoItem = await _IPedidoRepository.ObterItemPorPedido(pedido.Id, message.ProdutoId); if (!pedido.PedidoItemExistente(pedidoItem)) { await _IMediateHandler.PublicarNotificacao(new DomainNotification("pedido", "Produto não encontrado")); return(false); } pedido.RemoverItem(pedidoItem); pedido.AdicionarEvento(new PedidoAtualizadoEvent(message.ClienteId, pedido.Id, pedido.ValorTotal)); pedido.AdicionarEvento(new PedidoProdutoRemovidoEvent(message.ClienteId, pedido.Id, pedidoItem.Id)); _IPedidoRepository.RemoverItem(pedidoItem); // se eu quisersse não precisaria chamar esse método porque o meu priprimo pedidoitem esta ligaod ao pedido o changetracker do EF atualiaria altomaticamente // mas é sempre bom chamar pra ficar explicito no código o que esta acontecendo _IPedidoRepository.Atualizar(pedido); return(await _IPedidoRepository.IUnitOfWork.Commit()); }
public async Task <bool> Handle(RemoverItemPedidoCommand request, CancellationToken cancellationToken) { throw new NotImplementedException(); }