private async Task <bool> AplicarVoucher(AdicionarPedidoCommand message, Pedido pedido) { if (!message.VoucherUtilizado) { return(true); } var voucher = await _voucherRepository.ObterVoucherPorCodigo(message.VoucherCodigo); if (voucher == null) { AdicionarErro("O voucher informado não existe!"); return(false); } var voucherValidation = new VoucherValidation().Validate(voucher); if (!voucherValidation.IsValid) { voucherValidation.Errors.ToList().ForEach(m => AdicionarErro(m.ErrorMessage)); return(false); } pedido.AtribuirVoucher(voucher); voucher.DebitarQuantidade(); _voucherRepository.Atualizar(voucher); return(true); }