Esempio n. 1
0
        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;
            }
        }
Esempio n. 2
0
        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;
            }
        }
Esempio n. 3
0
        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;
            }
        }
Esempio n. 4
0
        /// <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();
            }
        }
Esempio n. 5
0
        /// <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;
            }
        }