public int EfetuarDoacao(List <int> ingressos, int clienteID, int usuarioID)
        {
            try
            {
                bd.BulkInsert(ingressos, "#tmpIngressos", false, true);
                List <int> bancoIngressoID = new List <int>();

                bd.Consulta(
                    @"
                            SELECT 
                                bi.ID
                            FROM tAssinaturaBancoIngresso bi (NOLOCK)
                            INNER JOIN #tmpIngressos ti ON ti.ID = bi.IngressoID 
                            WHERE bi.ClienteID = " + clienteID);

                if (!bd.Consulta().Read())
                {
                    throw new Exception("Os ingressos selecionados não estão associados a você, caso já tenha efetuado a ação de doação ou devolução, por favor, verifique os comprovantes.");
                }

                do
                {
                    bancoIngressoID.Add(bd.LerInt("ID"));
                } while (bd.Consulta().Read());
                bd.FecharConsulta();

                if (bancoIngressoID.Count != ingressos.Count)
                {
                    throw new Exception("Um dos ingressos selecionados não está associado a você, caso já tenha efetuado a ação de doação ou devolução, por favor, verifique os comprovantes.");
                }

                bd.IniciarTransacao();



                this.ClienteID.Valor = clienteID;
                this.UsuarioID.Valor = usuarioID;
                this.Timestamp.Valor = DateTime.Now;
                this.Acao.Valor      = ((char)AcaoComprovante.Doar).ToString();
                this.Inserir(bd);

                AssinaturaBancoIngressoHistorico oHistorico = new AssinaturaBancoIngressoHistorico();
                AssinaturaBancoIngressoCredito   oCredito   = new AssinaturaBancoIngressoCredito();

                foreach (var bancoIngresso in bancoIngressoID)
                {
                    if (bd.Executar(string.Format("UPDATE tAssinaturaBancoIngresso SET ClienteID = 0 WHERE ID = {0} AND ClienteID = {1}", bancoIngresso, clienteID)) != 1)
                    {
                        throw new Exception("Não foi possível efetuar a ação de doação de um dos ingressos selecionados, caso já tenha efetuado sua ação de doação ou devolução, por favor, verifique os comprovantes.");
                    }
                    bd.Consulta(string.Format(
                                    @"Select ID FROM tAssinaturaAno where AssinaturaID = (Select TOP 1 AssinaturaID from tAssinaturaBancoIngresso(NOLOCK) where ID = {0})
                          AND Ano = (Select TOP 1 Ano from tAssinaturaBancoIngresso(NOLOCK) where ID = {0})", bancoIngresso));

                    if (!bd.Consulta().Read())
                    {
                        throw new Exception("O item no banco de ingresso não possui uma assinatura ano vinculada");
                    }

                    int assinaturaAnoID = bd.LerInt("ID");
                    bd.FecharConsulta();

                    oHistorico.Limpar();
                    oCredito.Limpar();

                    oCredito.ClienteID.Valor       = clienteID;
                    oCredito.Utilizado.Valor       = false;
                    oCredito.AssinaturaAnoID.Valor = assinaturaAnoID;
                    oCredito.Inserir(bd);



                    oHistorico.AssinaturaBancoIngressoID.Valor            = bancoIngresso;
                    oHistorico.AssinaturaBancoIngressoCreditoID.Valor     = oCredito.Control.ID;
                    oHistorico.AssianturaBancoIngressoComprovanteID.Valor = this.Control.ID;
                    oHistorico.Inserir(bd);
                }

                bd.FinalizarTransacao();

                return(this.Control.ID);
            }
            catch (Exception ex)
            {
                bd.DesfazerTransacao();
                throw ex;
            }
            finally
            {
                bd.Fechar();
            }
        }
 // passar o Usuario logado no sistema
 public AssinaturaBancoIngressoCreditoLista_B()
 {
     assinaturaBancoIngressoCredito = new AssinaturaBancoIngressoCredito();
 }