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(); }