protected void InserirControle(string acao, CTLib.BD database) { try { System.Text.StringBuilder sql = new System.Text.StringBuilder(); sql.Append("INSERT INTO cCanalPreco (ID, Versao, Acao, TimeStamp, UsuarioID) "); sql.Append("VALUES (@ID,@V,'@A','@TS',@U)"); sql.Replace("@ID", this.Control.ID.ToString()); if (!acao.Equals("I")) { this.Control.Versao++; } sql.Replace("@V", this.Control.Versao.ToString()); sql.Replace("@A", acao); sql.Replace("@TS", DateTime.Now.ToString("yyyyMMddHHmmssffff")); sql.Replace("@U", this.Control.UsuarioID.ToString()); database.Executar(sql.ToString()); } catch (Exception ex) { throw ex; } }
public bool Atualizar(CTLib.BD database) { try { string sqlVersion = "SELECT MAX(Versao) FROM cCanalPreco WHERE ID=" + this.Control.ID; object obj = bd.ConsultaValor(sqlVersion); int versao = (obj != null) ? Convert.ToInt32(obj) : 0; this.Control.Versao = versao; InserirControle("U", database); InserirLog(database); StringBuilder sql = new StringBuilder(); sql.Append("UPDATE tCanalPreco SET CanalID = @001, PrecoID = @002, DataInicio = '@003', DataFim = '@004', Quantidade = @005 "); sql.Append("WHERE ID = @ID"); sql.Replace("@ID", this.Control.ID.ToString()); sql.Replace("@001", this.CanalID.ValorBD); sql.Replace("@002", this.PrecoID.ValorBD); sql.Replace("@003", this.DataInicio.ValorBD); sql.Replace("@004", this.DataFim.ValorBD); sql.Replace("@005", this.Quantidade.ValorBD); int x = database.Executar(sql.ToString()); bool result = (x == 1); bd.FinalizarTransacao(); return(result); } catch (Exception ex) { throw ex; } }
protected void InserirLog(CTLib.BD database) { try { StringBuilder sql = new StringBuilder(); sql.Append("INSERT INTO xCanalPreco (ID, Versao, CanalID, PrecoID, DataInicio, DataFim, Quantidade) "); sql.Append("SELECT ID, @V, CanalID, PrecoID, DataInicio, DataFim, Quantidade FROM tCanalPreco WHERE ID = @I"); sql.Replace("@I", this.Control.ID.ToString()); sql.Replace("@V", this.Control.Versao.ToString()); database.Executar(sql.ToString()); } catch (Exception ex) { throw ex; } }
/// <summary> /// Obter Taxa de Conveniencia de um canal dada o canal e o pacote /// </summary> /// <returns></returns> public int BuscaTaxaConveniencia(int canalid, int pacoteid, CTLib.BD database) { try{ int taxaConveniencia; string sql = "SELECT TaxaConveniencia " + "FROM tCanalPacote (NOLOCK) " + "WHERE CanalID=" + canalid + " AND PacoteID=" + pacoteid; object ret = database.ConsultaValor(sql); taxaConveniencia = (ret != null) ? (int)ret : 0; return(taxaConveniencia); }catch { throw; }finally{ database.FecharConsulta(); } }
/// <summary> ///1.Reserva a quantidade que tiver disponível para o vale ingresso ///2. Verifica se a quantidade reservada foi suficiente /// 2.1. Se for suficiente: finaliza e retorna a informação /// 2.2. Se não for suficiente: Vale tem quantidade limitada? /// 2.2.1. Sim: Não tem vir suficiente para a reserva /// 2.2.2. Não: Cria a quantidade de virs restante e reserva novamente /// </summary> /// <param name="bd"></param> public BindingList <EstruturaRetornoReservaValeIngresso> Reservar(CTLib.BD bd, int valeIngressoTipoID, int quantidadeReservar, int clienteID, int canalID, int lojaID, int usuarioID, string sessionID) { BD bdInserirVir = new BD(); try { int quantidadeReservada = 0, quantidadeNaoReservada = 0; BindingList <EstruturaRetornoReservaValeIngresso> reserva = new BindingList <EstruturaRetornoReservaValeIngresso>(); BindingList <EstruturaRetornoReservaValeIngresso> reservados; ValeIngressoTipo valeIngressoTipo = new ValeIngressoTipo(); ValeIngresso valeIngresso; valeIngressoTipo.Ler(valeIngressoTipoID);//Preenche as informações do tipo if (valeIngressoTipo.Control.ID == 0) { throw new Exception("ValeIngresso inexistente"); } if (string.IsNullOrEmpty(sessionID)) { reserva = this.Reservar(bd, quantidadeReservar, valeIngressoTipoID, canalID, lojaID, usuarioID, clienteID); } else { reserva = this.ReservarInternet(bd, quantidadeReservar, valeIngressoTipoID, canalID, lojaID, usuarioID, clienteID, sessionID); } quantidadeReservada = reserva.Count; quantidadeNaoReservada = quantidadeReservar - quantidadeReservada; //Verifica se a quantidade reservada foi suficiente. if (quantidadeReservada == quantidadeReservar) { return(reserva); } else//Não conseguiu reservar tudo { //O vale ingresso tem quantidade limitada? if (valeIngressoTipo.QuantidadeLimitada.Valor) { return(reserva); } else {//Se não tem quantidade limitada deve criar os vale ingressos restante for (int i = 0; i < quantidadeNaoReservada; i++) { //preenche o objeto valeIngresso = new ValeIngresso(); valeIngresso.ValeIngressoTipoID.Valor = valeIngressoTipoID; valeIngresso.DataCriacao.Valor = new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day); valeIngresso.Status.Valor = ((char)ValeIngresso.enumStatus.Disponivel).ToString(); valeIngresso.UsuarioID.Valor = usuarioID; if (valeIngressoTipo.CodigoTrocaFixo.Valor.Length > 0) { //Codigo fixo. Todos devem ter todos os códigos valeIngresso.CodigoTroca.Valor = valeIngressoTipo.CodigoTrocaFixo.Valor; } else { valeIngresso.CodigoTroca.Valor = string.Empty; } //Se der algum erro joga exception. e desfaz a transação de reserva. valeIngresso.Inserir(bdInserirVir); } //Após Inserir tenta reservar os vales restantes if (string.IsNullOrEmpty(sessionID)) { reservados = this.Reservar(bd, quantidadeReservar, valeIngressoTipoID, canalID, lojaID, usuarioID, clienteID); } else { reservados = this.ReservarInternet(bd, quantidadeReservar, valeIngressoTipoID, canalID, lojaID, usuarioID, clienteID, sessionID); } foreach (EstruturaRetornoReservaValeIngresso item in reservados) { reserva.Add(item); } } } return(reserva); } catch (Exception) { throw; } }