public bool ExcluiCotaItem(int IdObrigatoriedade, int IdCota) { if (IdObrigatoriedade > 0 && IdCota > 0) { CotaItemFormaPagamento oCotaItemFormaPagamento = new CotaItemFormaPagamento(); CotaItemControle oCotaItemControle = new CotaItemControle(); Obrigatoriedade oObrigatoriedade = new Obrigatoriedade(); oObrigatoriedade.Limpar(); oObrigatoriedade.Excluir(bd, IdObrigatoriedade); oCotaItemFormaPagamento.Limpar(); oCotaItemFormaPagamento.ExcluirPorCotaItemID(bd, IdCota); //Excluir o Controlador de Quantidade já vendidas oCotaItemControle.CotaItemID.Valor = IdCota; oCotaItemControle.ExcluirControladorPorCotaItemID(bd); return(this.Excluir(bd, IdCota)); } else { return(false); } }
public void ValidarLugarMarcadoInternet(EstruturaPrecoReservaSite preco, Setor.enumLugarMarcado tipoSetor, EstruturaCotasInfo cotaInfo, int serieID, EstruturaReservaInternet estruturaReserva) { int cortesiaID = 0; Bilheteria oBilheteria = new Bilheteria(); CotaItem oCotaItem = new CotaItem(); CotaItemControle cotaItemControle = new CotaItemControle(); List <EstruturaCotaItemReserva> listaCotaItem = new List <EstruturaCotaItemReserva>(); if (cotaInfo.CotaID_Apresentacao != 0 || cotaInfo.CotaID_ApresentacaoSetor != 0) { listaCotaItem = oCotaItem.getListaCotaItemReserva(cotaInfo.CotaID_Apresentacao, cotaInfo.CotaID_ApresentacaoSetor); } cotaInfo.ApresentacaoID = this.ApresentacaoID.Valor; cotaInfo.ApresentacaoSetorID = this.ApresentacaoSetorID.Valor; oCotaItem.AtualizarInformacoesCota(listaCotaItem, preco, cotaInfo); if (listaCotaItem.Any() && cotaInfo.CotaItemID > 0) { cotaInfo.QuantidadeJaVendida = cotaItemControle.getQuantidadeNovo(cotaInfo.CotaItemID, cotaInfo.CotaItemID_APS, cotaInfo.ApresentacaoID, cotaInfo.ApresentacaoSetorID); var qtdReservar = preco.QuantidadeReservar(); if (!cotaInfo.ValidaReserva(qtdReservar)) { throw new BilheteriaException(string.Format("Não será possível reservar o preço \"{0}\", o limite de venda foi excedido.", preco.PrecoNome), Bilheteria.CodMensagemReserva.PrecoIndisponivel); } } decimal precoValor = 0; // Verifica se existe quantidade do PrecoID disponivel para venda e retorna via referencia o valor do preço if (preco.Quantidade != oBilheteria.GetIngressosQPodeReservar(this.ClienteID.Valor, this.SessionID.Valor, preco.ID, preco.Quantidade, ref precoValor, false, serieID, estruturaReserva)) { throw new BilheteriaException(string.Format("A quantidade disponivel para o preço \"{0}\" foi excedida.", preco.PrecoNome), Bilheteria.CodMensagemReserva.PrecoIndisponivel); } this.TxConv = oBilheteria.TaxaConveniencia(this.EventoID.Valor, preco.ID, estruturaReserva.CanalID); if (this.TxConv > 0) { this.TaxaProcessamentoValor = oBilheteria.ValorTaxaProcessamento(this.EventoID.Valor); if (this.TaxaProcessamentoValor > 0) { this.TxConv = 0; } } //Aqui precisa fazer a validação, é cortesia?? if (preco.Valor == 0 && TxConv == 0 && TaxaProcessamentoValor == 0) { cortesiaID = new Cortesia().CortesiaPadraoEvento(this.EventoID.Valor); if (cortesiaID <= 0) { throw new Exception("Não possível encontrar a cortesia associada a este evento!"); } this.CortesiaID.Valor = cortesiaID; } this.PrecoID.Valor = preco.ID; this.CotaItemID = cotaInfo.CotaItemID; this.CotaItemIDAPS = cotaInfo.CotaItemID_APS; this.SerieID.Valor = serieID; }
/// <summary> /// Método para retornar os ingressos (para reserva) dos melhores lugares de mesa fechada. /// kim /// </summary> /// <param name="usuarioID"></param> /// <param name="lojaID"></param> /// <param name="sessionID"></param> /// <param name="clienteID"></param> /// <param name="eventoID"></param> /// <param name="apresentacaoSetorID"></param> /// <param name="precos"></param> /// <param name="preReserva"></param> /// <returns></returns> public List <Ingresso> MelhoresIngressos(int usuarioID, int lojaID, string sessionID, int clienteID, int eventoID, int apresentacaoID, int apresentacaoSetorID, int setorID, List <EstruturaPrecoReservaSite> precos, Setor.enumLugarMarcado tipoSetor, EstruturaCotasInfo cotaInfo, int serieID, EstruturaReservaInternet estruturaReserva, bool isEntradaFranca) { BD bd = new BD(ConfigurationManager.AppSettings["ConexaoReadOnly"]); BD bdReserva = new BD(); Ingresso oIngresso = new Ingresso(); Bilheteria oBilheteria = new Bilheteria(); Cota oCota = new Cota(); CotaItemControle cotaItemControle = new CotaItemControle(); CotaItem oCotaItem = new CotaItem(); Lugar oLugar = new Lugar(); //usado para a busca de melhores lugares. List <Ingresso> ingressosRetorno; decimal precoValor; int p; decimal valorConv = 0; decimal valorProcessamento = 0; //decimal valor; Cortesia oCortesia = new Cortesia(); int CortesiaPadraoID = 0; DateTime timeStamp = DateTime.Now.AddMinutes(new ConfigGerenciador().getValorTempoReserva()); try { int qtdPrecos = 0; //Essa variavel duplica o preço e o valor pela quantidade de para reservar. //Dessa forma é possível reservar os lugares com os preços corretos. kim List <EstruturaPrecoReservaSite> precoPorLugar = new List <EstruturaPrecoReservaSite>(); List <EstruturaPrecoReservaSite> listaPreco = new List <EstruturaPrecoReservaSite>(); EstruturaPrecoReservaSite itemPreco; List <EstruturaCotaItemReserva> listaCotaItem = new List <EstruturaCotaItemReserva>(); if (cotaInfo.CotaID_Apresentacao != 0 || cotaInfo.CotaID_ApresentacaoSetor != 0) { listaCotaItem = oCotaItem.getListaCotaItemReserva(cotaInfo.CotaID_Apresentacao, cotaInfo.CotaID_ApresentacaoSetor); } cotaInfo.ApresentacaoID = apresentacaoID; cotaInfo.ApresentacaoSetorID = apresentacaoSetorID; var qtdIncrementada = 0; foreach (EstruturaPrecoReservaSite preco in precos) { //Verifica se é possivel reservar o ingresso apartir das cotas geradas p/ a apresentacao/setor oCotaItem.AtualizarInformacoesCota(listaCotaItem, preco, cotaInfo); if (listaCotaItem.Any() && cotaInfo.CotaItemID > 0) { cotaInfo.QuantidadeJaVendida = cotaItemControle.getQuantidadeNovo(cotaInfo.CotaItemID, cotaInfo.CotaItemID_APS, cotaInfo.ApresentacaoID, cotaInfo.ApresentacaoSetorID); var qtdReservar = preco.QuantidadeReservar(); if (!cotaInfo.ValidaReserva(qtdReservar)) { throw new BilheteriaException(string.Format("Não será possível reservar o preço \"{0}\", o limite de venda foi excedido.", preco.PrecoNome), Bilheteria.CodMensagemReserva.PrecoIndisponivel); } } precoValor = 0; // Verifica se existe quantidade do PrecoID disponivel para venda e retorna via referencia o valor do preço if (preco.Quantidade != oBilheteria.GetIngressosQPodeReservar(clienteID, sessionID, preco.ID, preco.Quantidade, ref precoValor, false, serieID, estruturaReserva)) { throw new BilheteriaException(string.Format("A quantidade disponível para o preço \"{0}\" foi excedida.", preco.PrecoNome), Bilheteria.CodMensagemReserva.PrecoIndisponivel); } //incrementa a quantidade qtdPrecos += preco.Quantidade; if (tipoSetor != IRLib.Setor.enumLugarMarcado.Pista) { //duplica os registros para serem usados mais tarde na hora da reserva de lugares marcados for (int x = 0; x < preco.Quantidade; x++) { itemPreco = new EstruturaPrecoReservaSite(); itemPreco.ID = preco.ID; itemPreco.GerenciamentoIngressosID = preco.GerenciamentoIngressosID; itemPreco.Valor = precoValor; itemPreco.Quantidade = preco.Quantidade; itemPreco.CotaItemID = cotaInfo.CotaItemID; itemPreco.CotaItemIDAPS = cotaInfo.CotaItemID_APS; itemPreco.CodigoCinema = preco.CodigoCinema; itemPreco.CodigoProgramacao = preco.CodigoProgramacao; precoPorLugar.Add(itemPreco); } } else { //gera novos registros para adicionar a cotaItemID do contrario não ha como verificar a multipla selecao de precos itemPreco = new EstruturaPrecoReservaSite(); itemPreco.ID = preco.ID; itemPreco.GerenciamentoIngressosID = preco.GerenciamentoIngressosID; itemPreco.PrecoNome = preco.PrecoNome; itemPreco.Quantidade = preco.Quantidade; itemPreco.Valor = preco.Valor; itemPreco.CotaItemID = cotaInfo.CotaItemID; itemPreco.CotaItemIDAPS = cotaInfo.CotaItemID_APS; itemPreco.CodigoCinema = preco.CodigoCinema; itemPreco.CodigoProgramacao = preco.CodigoProgramacao; listaPreco.Add(itemPreco); } } //Lugares marcados. Precisa achar os melhores lugares. if (tipoSetor != IRLib.Setor.enumLugarMarcado.Pista) { #region Busca Ingresso de Lugar Marcado // Busca a lista dos Melhores Lugares List <Lugar> lugares = oLugar.MelhorLugarMarcado(qtdPrecos, apresentacaoSetorID, tipoSetor); //Verifica se os ingressos estão juntos if (tipoSetor == IRLib.Setor.enumLugarMarcado.MesaFechada) { if (lugares.Count == 0) { throw new Exception("Não foi possível efetuar todas as reserva."); } if (lugares.Count != qtdPrecos) { throw new Exception("Não existem mesas com a capacidade de acomodar todas as pessoas juntas"); } } int quantidadeMesaAberta = 0; bool mesaAberta = (tipoSetor == IRLib.Setor.enumLugarMarcado.MesaAberta); // Se for mesa aberta o total da de ingressos é a soma de todas as quantidades na listagem. if (mesaAberta) { foreach (Lugar itemLugar in lugares) { quantidadeMesaAberta += itemLugar.Quantidade.Valor; } if (quantidadeMesaAberta != qtdPrecos) // Não encontrou a qtd suficiente?! { lugares.Clear(); // Limpa os ingressos e passa para a próxima. } } else { if (lugares.Count != qtdPrecos) // Não encontrou a qtd suficiente?! { lugares.Clear(); // Limpa os ingressos e passa para a próxima. } } ingressosRetorno = new List <Ingresso>(); p = 0; //variavel de controle para os preços int controlePrecoID = 0; //variavel de controle para saber se mudou o precoID e trazer a nova taxa de entrega //Busca os ingressos para os melhores lugares encontrados foreach (Lugar l in lugares) { try { //Só faz a select com base na quantidade caso seja mesa aberta. string top = mesaAberta ? "TOP " + l.Quantidade.Valor : ""; string sql = "SELECT " + top + " ID, Codigo,EmpresaID FROM tIngresso(NOLOCK) " + "WHERE ApresentacaoSetorID = " + apresentacaoSetorID + " AND Status = '" + Ingresso.DISPONIVEL + "' " + "AND LugarID = " + l.Control.ID; bd.Consulta(sql); while (bd.Consulta().Read()) { if (precoPorLugar[p].ID != controlePrecoID) { valorConv = oBilheteria.TaxaConveniencia(eventoID, precoPorLugar[p].ID, estruturaReserva.CanalID); //Se não tem conveniencia, não deve contar que possui taxa de processamento, ignora a busca if (valorConv > 0) { valorProcessamento = oBilheteria.ValorTaxaProcessamento(eventoID); } controlePrecoID = precoPorLugar[p].ID; } //popula o objeto ingresso oIngresso = new Ingresso(); oIngresso.Control.ID = bd.LerInt("ID"); oIngresso.PrecoID.Valor = precoPorLugar[p].ID; oIngresso.UsuarioID.Valor = usuarioID; oIngresso.Codigo.Valor = bd.LerString("Codigo"); oIngresso.LojaID.Valor = lojaID; oIngresso.ClienteID.Valor = clienteID; oIngresso.SessionID.Valor = sessionID; oIngresso.TimeStampReserva.Valor = timeStamp; oIngresso.LugarID.Valor = l.Control.ID; oIngresso.TxConv = valorProcessamento > 0 ? 0 : valorConv; oIngresso.TaxaProcessamentoValor = valorProcessamento; oIngresso.Grupo.Valor = l.Grupo.Valor; oIngresso.Classificacao.Valor = l.Classificacao.Valor; oIngresso.CotaItemID = precoPorLugar[p].CotaItemID; oIngresso.CotaItemIDAPS = precoPorLugar[p].CotaItemIDAPS; oIngresso.EmpresaID.Valor = bd.LerInt("EmpresaID"); oIngresso.SerieID.Valor = serieID; ////se não tiver valor e não tiver conveniencia não deve reservar if (precoPorLugar[p].Valor == 0 && oIngresso.TxConv == 0 && oIngresso.TaxaProcessamentoValor == 0) { // Atribui a Cortesia Padrão do Evento/Local - INICIO if (CortesiaPadraoID == 0) { CortesiaPadraoID = oCortesia.CortesiaPadraoEvento(eventoID); } if (CortesiaPadraoID <= 0) { throw new Exception("Falha ao reservar os ingressos. Não existe cortesia associada a este evento."); } oIngresso.CortesiaID.Valor = CortesiaPadraoID; // // Atribui a Cortesia Padrão do Evento/Local - FIM // oIngresso.Status.Valor = Ingresso.CORTESIA_SEM_CONVENIENCIA; ingressosRetorno.Add(oIngresso); // break;//break para inserir somente um registro. esse registro de ingresso vai ser utilizado // //como base de info para deletar o preço inválido do banco de dados do site. } else { ingressosRetorno.Add(oIngresso); } if (tipoSetor != IRLib.Setor.enumLugarMarcado.MesaFechada) { p++; } } if (tipoSetor == IRLib.Setor.enumLugarMarcado.MesaFechada) { p++; } } catch { throw; } } #endregion } else //Ingressos de pista { #region Busca Ingressos de Pista Ingresso ing; ingressosRetorno = new List <Ingresso>(); ArrayList ingressosIDInseridos = new ArrayList(); //lista de ingressos ID para não buscar os mesmos ingressos. string evitaDuplicidades = ""; //monta a string para a sql foreach (EstruturaPrecoReservaSite preco in listaPreco) { if (ingressosRetorno.Count > 0) { //Monta a query que evita duplicidade de ingressos na hora de reservar. foreach (Ingresso item in ingressosRetorno) { ingressosIDInseridos.Add(item.Control.ID); } evitaDuplicidades = "AND ID NOT IN ( " + Utilitario.ArrayToString(ingressosIDInseridos) + ") "; } //Busca os ingressos de pista. bd.FecharConsulta(); var bdBusca = new BD(ConfigurationManager.AppSettings["ConexaoReadOnly"]); var readerCount = bdBusca.ConsultaCount(string.Format("SELECT TOP {0} ID, Codigo, LugarID FROM tIngresso(NOLOCK) WHERE ApresentacaoSetorID = {1} AND Status = '{2}' {3} ORDER BY newid()", preco.Quantidade, apresentacaoSetorID, Ingresso.DISPONIVEL, evitaDuplicidades)); if (readerCount.rowCount > 0 && readerCount.rowCount != preco.Quantidade) { throw new Exception("Quantidade de ingressos selecionado não está disponível. Tente com uma quantidade menor."); } while (bdBusca.Consulta().Read()) { valorConv = oBilheteria.TaxaConveniencia(eventoID, preco.ID, estruturaReserva.CanalID); //Se não tem conveniencia, não deve contar que possui taxa de processamento, ignora a busca if (valorConv > 0) { valorProcessamento = oBilheteria.ValorTaxaProcessamento(eventoID); } else { valorProcessamento = 0; } //Popula o objeto ingresso e adiciona a lista de retorno ing = new Ingresso { Control = { ID = bdBusca.LerInt("ID") }, PrecoID = { Valor = preco.ID }, GerenciamentoIngressosID = { Valor = preco.GerenciamentoIngressosID }, UsuarioID = { Valor = estruturaReserva.UsuarioID }, Codigo = { Valor = bdBusca.LerString("Codigo") }, LojaID = { Valor = estruturaReserva.LojaID }, ClienteID = { Valor = clienteID }, SessionID = { Valor = sessionID }, TimeStampReserva = { Valor = timeStamp }, LugarID = { Valor = bdBusca.LerInt("LugarID") }, TxConv = valorProcessamento > 0 ? 0 : valorConv, TaxaProcessamentoValor = valorProcessamento, CotaItemID = preco.CotaItemID, CotaItemIDAPS = preco.CotaItemIDAPS, SerieID = { Valor = serieID }, CompraGUID = { Valor = estruturaReserva.GUID } }; //Se for EntradaGratuita OU (se não tiver valor e não tiver conveniencia não deve reservar) if (preco.Valor == 0 && ing.TxConv == 0 && ing.TaxaProcessamentoValor == 0) { // Atribui a Cortesia Padrão do Evento/Local - INICIO if (CortesiaPadraoID == 0) { CortesiaPadraoID = oCortesia.CortesiaPadraoEvento(eventoID, isEntradaFranca); } if (CortesiaPadraoID <= 0) { throw new Exception("Não foi possível reservar o ingresso. Por favor, tente novamente mais tarde."); } ing.CortesiaID.Valor = CortesiaPadraoID; // Atribui a Cortesia Padrão do Evento/Local - FIM //ing.Status.Valor = Ingresso.CORTESIA_SEM_CONVENIENCIA; ingressosRetorno.Add(ing); //break;//break para inserir somente um registro. esse registro de ingresso vai ser utilizado ////como base de info para deletar o preço inválido do banco de dados do site. } else { ingressosRetorno.Add(ing); } }//fim while consulta banco bdBusca.Fechar(); }//fim foreach precos //Ingressos para cinema, deve utilizar on demand! if (listaPreco.Any(c => !string.IsNullOrEmpty(c.CodigoCinema))) { ingressosRetorno = this.NovoNaoMarcadoOnDemand(estruturaReserva, apresentacaoSetorID, eventoID, apresentacaoID, setorID, ingressosRetorno, listaPreco); } #endregion } return(ingressosRetorno); } catch (Exception ex) { throw ex; } finally { bdReserva.Fechar(); bd.Fechar(); } }
// passar o Usuario logado no sistema public CotaItemControleLista_B() { cotaItemControle = new CotaItemControle(); }
public int[] LimpaReservasAssinatura() { try { int delayReserva = int.Parse(System.Configuration.ConfigurationManager.AppSettings["delayReserva"]); ArrayList ids = new ArrayList(); DateTime data = DateTime.Now; data = data.AddMinutes(-delayReserva); bd.FecharConsulta(); var sqlConsultaIngresso = @"SELECT ID, ApresentacaoID, Status, CotaItemID FROM tIngresso ( NOLOCK ) WHERE @data > TimeStampReserva AND TimeStampReserva IS NOT NULL AND TimeStampReserva <> '' AND Status = @status AND AssinaturaClienteID > 0 "; var parametrosConsultaIngresso = new List <SqlParameter>() { new SqlParameter("data", data.ToString("yyyyMMddHHmmss")), new SqlParameter("status", (char)Ingresso.StatusIngresso.RESERVADO) }; bd.Consulta(sqlConsultaIngresso, parametrosConsultaIngresso); var bdUpdate = new BD(); while (bd.Consulta().Read()) { var ingressoId = bd.LerInt("ID"); var apresentacaoId = bd.LerInt("ApresentacaoID"); var cotaItemId = bd.LerInt("CotaItemID"); var sqlUpdateIngresso = @"UPDATE tIngresso SET AssinaturaClienteID = 0, TimeStampReserva = '', ClienteID = 0, Status = @statusNovo, CotaItemID = NULL WHERE Status = @statusAntigo AND ID = @ingressoId "; var parametrosUpdateIngresso = new List <SqlParameter>() { new SqlParameter("statusNovo", (char)Ingresso.StatusIngresso.DISPONIVEL), new SqlParameter("statusAntigo", (char)Ingresso.StatusIngresso.RESERVADO), new SqlParameter("ingressoId", ingressoId) }; var sucesso = bdUpdate.Executar(sqlUpdateIngresso, parametrosUpdateIngresso) > 0; if (!sucesso) { continue; } if (apresentacaoId != 0 && cotaItemId != 0) { var cotaItemControle = new CotaItemControle(); cotaItemControle.DecrementarControladorApresentacao(apresentacaoId, cotaItemId); } ids.Add(bd.LerInt("ID")); } return((int[])ids.ToArray(typeof(int))); } catch { throw; } finally { bd.DesfazerTransacao(); bd.Fechar(); } }
public string[] ValidarCotaInformacoesNovo(EstruturaCotasInfo cotasInfo, string precoNome, int BIN, int formaPagamentoID, bool somenteVIR, bool somenteCortesias) { string[] msgCota = new string[2]; CotaItemControle oCotaItemControle = new CotaItemControle(); ValeIngresso oValeIngresso = new ValeIngresso(); try { if (string.IsNullOrEmpty(msgCota[0]) && cotasInfo.ValidaBin) { if (BIN == 0) { msgCota[0] = "1"; if (somenteVIR) { msgCota[1] = "Atenção, O preço: " + precoNome + " requer que o ingresso seja pago com um cartão válido para a promoção <br /> Não será possivel comprar somente com Vale Ingressos"; } else { msgCota[1] = "Atenção, O preço: " + precoNome + " requer que o ingresso seja pago com um cartão válido para a promoção. <br /> Compras com Visa Electron, ItauShopLine e Somente Vale Ingressos não serão aceitas"; } } else if (!this.ValidarBin(BIN, cotasInfo.CotaItemID > 0 ? cotasInfo.CotaItemID : cotasInfo.CotaItemID_APS, cotasInfo.ParceiroID)) { msgCota[0] = "1"; msgCota[1] = "Atenção, o BIN digitado não corresponde a um BIN válido para o preço: " + precoNome + "."; } } if (string.IsNullOrEmpty(msgCota[0])) { if (somenteVIR) { formaPagamentoID = oValeIngresso.FormaDePagamentoID; } else if (somenteCortesias) { return(msgCota); } if (!this.ValidarFormaPagamento(formaPagamentoID, cotasInfo.CotaItemID > 0 ? cotasInfo.CotaItemID : cotasInfo.CotaItemID_APS)) { msgCota[0] = "2"; if (somenteVIR) { msgCota[1] = "A Forma de Pagamento Somente Vale Ingresso não é válida para o Preço: " + precoNome; } else { msgCota[1] = "A Forma de Pagamento selecionada é válida para o Preço: " + precoNome; } } } return(msgCota); } catch (Exception) { throw; } }
public void ValidarCotaInformacoes(int apresentacaoID, int setorID, EstruturaCotaItemReserva item, EstruturaPrecoReservaSite preco, int BIN, int formaPagamentoID, int clienteID, string sessionID, ref string[] msgCota, bool somenteVIR) { CotaItemControle oCotaItemControle = new CotaItemControle(); ValeIngresso oValeIngresso = new ValeIngresso(); try { int[] quantidades = new int[2] { 0, 0 }; int apresentacaoSetorID = new ApresentacaoSetor().ApresentacaoSetorID(apresentacaoID, setorID); quantidades = oCotaItemControle.getQuantidade(item.ID, apresentacaoID, apresentacaoSetorID); if (((quantidades[0] + preco.Quantidade > item.Quantidade || quantidades[1] + preco.Quantidade > item.Quantidade) && item.Quantidade != 0) || (quantidades[0] + preco.Quantidade > item.QuantidadeApresentacao && item.QuantidadeApresentacao != 0) || (quantidades[1] + preco.Quantidade > item.QuantidadeApresentacaoSetor && item.QuantidadeApresentacaoSetor != 0)) { msgCota[0] = "4"; msgCota[1] = "O Limite de venda do preço especial: " + preco.PrecoNome + " foi excedido"; } if (string.IsNullOrEmpty(msgCota[0]) && item.ValidaBin) { if (item.ValidaBin && BIN == 0) { msgCota[0] = "1"; if (somenteVIR) { msgCota[1] = "Atenção, O Preço: " + preco.PrecoNome + " requer que o ingresso seja pago com um cartão válido para a promoção <br /> Não será possivel comprar somente com Vale Ingressos"; } else { msgCota[1] = "Atenção, O Preço: " + preco.PrecoNome + " requer que o ingresso seja pago com um cartão válido para a promoção. <br /> Compras com Visa Electron, ItauShopLine e Somente Vale Ingressos não serão aceitas"; } } else if (!this.ValidarBin(BIN, item.ID, item.ParceiroID)) { msgCota[0] = "1"; msgCota[1] = "Atenção, o BIN do cartão digitado não corresponde a um BIN válido para o preço: " + preco.PrecoNome + "."; } } else if (string.IsNullOrEmpty(msgCota[0])) { if (somenteVIR) { formaPagamentoID = oValeIngresso.FormaDePagamentoID; } if (!this.ValidarFormaPagamento(formaPagamentoID, item.ID)) { msgCota[0] = "2"; if (somenteVIR) { msgCota[1] = "A Forma de Pagamento Somente Vale Ingresso não é válida para o Preço: " + preco.PrecoNome; } else { msgCota[1] = "A Forma de Pagamento selecionada é válida para o Preço: " + preco.PrecoNome; } } } } catch (Exception) { throw; } }
public void SalvarItem(BD bd, List <EstruturaCotaItem> lista, int cotaID, bool gerarControle) { try { CotaItemFormaPagamento oCotaItemFormaPagamento = new CotaItemFormaPagamento(); CotaItemControle oCotaItemControle = new CotaItemControle(); Obrigatoriedade oObrigatoriedade = new Obrigatoriedade(); for (int i = 0; i < lista.Count; i++) { this.Limpar(); if (lista[i].Novo && !lista[i].Excluir) { oObrigatoriedade.Limpar(); int ObrigatoriedadeID = 0; if (lista[i].obrigatoriedade != null) { #region Preenche o Obj obrigatoriedade oObrigatoriedade.Nome.Valor = lista[i].obrigatoriedade.Nome; oObrigatoriedade.RG.Valor = lista[i].obrigatoriedade.RG; oObrigatoriedade.CPF.Valor = lista[i].obrigatoriedade.CPF; oObrigatoriedade.Telefone.Valor = lista[i].obrigatoriedade.Telefone; oObrigatoriedade.DataNascimento.Valor = lista[i].obrigatoriedade.DataNascimento; oObrigatoriedade.Email.Valor = lista[i].obrigatoriedade.Email; oObrigatoriedade.CPFResponsavel.Valor = lista[i].obrigatoriedade.CPFResponsavel; oObrigatoriedade.NomeResponsavel.Valor = lista[i].obrigatoriedade.NomeResponsavel; #endregion oObrigatoriedade.Inserir(bd); ObrigatoriedadeID = oObrigatoriedade.Control.ID; } this.PrecoIniciaCom.Valor = lista[i].precoIniciaCom; this.Quantidade.Valor = lista[i].quantidade; this.QuantidadePorCliente.Valor = lista[i].quantidadePorCliente; this.ParceiroID.Valor = lista[i].parceiroID; this.ValidaBin.Valor = lista[i].validaBin; this.ObrigatoriedadeID.Valor = ObrigatoriedadeID; this.CotaID.Valor = cotaID; this.Tipo.Valor = lista[i].Tipo; this.TextoValidacao.Valor = lista[i].textoValidacao; this.TermoSite.Valor = lista[i].TermoSite; this.Termo.Valor = lista[i].Termo; this.TermoSite.Valor = lista[i].TermoSite; this.CPFResponsavel.Valor = lista[i].CPFResponsavel; this.Nominal.Valor = lista[i].Nominal; this.QuantidadePorCodigo.Valor = lista[i].QuantidadePorCodigo; this.Inserir(bd); for (int w = 0; w < lista[i].FormaPagamentoInserir.Count; w++) { oCotaItemFormaPagamento.Limpar(); oCotaItemFormaPagamento.CotaItemID.Valor = this.Control.ID; oCotaItemFormaPagamento.FormaPagamentoID.Valor = lista[i].FormaPagamentoInserir[w].FormaPagamentoID; oCotaItemFormaPagamento.Inserir(); } //Gera um novo Controle de Quantidade do CotaItem if (gerarControle) { oCotaItemControle.CotaItemID.Valor = this.Control.ID; oCotaItemControle.GerarControladorDeCotaAntiga(bd, cotaID, lista[i].precoIniciaCom); } } else if (!lista[i].Novo && !lista[i].Excluir) { if (lista[i].obrigatoriedade != null && lista[i].obrigatoriedade.Mudou) { oObrigatoriedade.Limpar(); #region Preenche o Obj obrigatoriedade oObrigatoriedade.Control.ID = lista[i].obrigatoriedadeID; oObrigatoriedade.Nome.Valor = lista[i].obrigatoriedade.Nome; oObrigatoriedade.RG.Valor = lista[i].obrigatoriedade.RG; oObrigatoriedade.CPF.Valor = lista[i].obrigatoriedade.CPF; oObrigatoriedade.Telefone.Valor = lista[i].obrigatoriedade.Telefone; oObrigatoriedade.DataNascimento.Valor = lista[i].obrigatoriedade.DataNascimento; oObrigatoriedade.Email.Valor = lista[i].obrigatoriedade.Email; oObrigatoriedade.CPFResponsavel.Valor = lista[i].obrigatoriedade.CPFResponsavel; oObrigatoriedade.NomeResponsavel.Valor = lista[i].obrigatoriedade.NomeResponsavel; #endregion oObrigatoriedade.Atualizar(bd); } this.Control.ID = lista[i].ID; this.PrecoIniciaCom.Valor = lista[i].precoIniciaCom; this.Quantidade.Valor = lista[i].quantidade; this.QuantidadePorCliente.Valor = lista[i].quantidadePorCliente; this.ParceiroID.Valor = lista[i].parceiroID; this.ValidaBin.Valor = lista[i].validaBin; this.ObrigatoriedadeID.Valor = lista[i].obrigatoriedadeID; this.CotaID.Valor = cotaID; this.Tipo.Valor = lista[i].Tipo; this.TextoValidacao.Valor = lista[i].textoValidacao; this.Termo.Valor = lista[i].Termo; this.TermoSite.Valor = lista[i].TermoSite; this.CPFResponsavel.Valor = lista[i].CPFResponsavel; this.Nominal.Valor = lista[i].Nominal; this.QuantidadePorCodigo.Valor = lista[i].QuantidadePorCodigo; this.Atualizar(bd); //Inclui novas formas de pagamento for (int w = 0; w < lista[i].FormaPagamentoInserir.Count; w++) { oCotaItemFormaPagamento.Limpar(); oCotaItemFormaPagamento.CotaItemID.Valor = this.Control.ID; oCotaItemFormaPagamento.FormaPagamentoID.Valor = lista[i].FormaPagamentoInserir[w].FormaPagamentoID; oCotaItemFormaPagamento.Inserir(); } //Excluir formas de pagamento for (int w = 0; w < lista[i].FormaPagamentoExcluir.Count; w++) { oCotaItemFormaPagamento.Limpar(); oCotaItemFormaPagamento.ExcluirPorIDs(bd, lista[i].FormaPagamentoExcluir[w].FormaPagamentoID, lista[i].ID); } } else if (!lista[i].Novo) { oObrigatoriedade.Limpar(); oObrigatoriedade.Excluir(bd, lista[i].obrigatoriedadeID); oCotaItemFormaPagamento.Limpar(); oCotaItemFormaPagamento.ExcluirPorCotaItemID(bd, lista[i].ID); //Excluir o Controlador de Quantidade já vendidas oCotaItemControle.CotaItemID.Valor = lista[i].ID; oCotaItemControle.ExcluirControladorPorCotaItemID(bd); this.Excluir(bd, lista[i].ID); } } } catch (Exception) { throw; } }