public void CreateTable()
 {
     if (!Ambiente.isProduction())
     {
         String create = "CREATE TABLE " + this.schema + ".dbo.veiculo (" +
                         "	dataregistro datetime2(7) DEFAULT (getdate()) NOT NULL,"+
                         "	atualizadoem datetime2(7) DEFAULT (getdate()) NOT NULL,"+
                         "	uuid UNIQUEIDENTIFIER DEFAULT NEWSEQUENTIALID(),"+
                         "	dados TEXT NOT NULL,"+
                         "	CONSTRAINT PK_uuid PRIMARY KEY (uuid)"+
                         ")";
         try
         {
             SqlConnection conexao = new SqlConnection(this.dadosConexao);
             SqlCommand    comando = new SqlCommand(create, conexao);
             comando.Connection.Open();
             comando.ExecuteNonQuery();
             comando.Dispose();
             conexao.Close();
             X9.ShowInfo(5, null);
         }
         catch (Exception e)
         {
             X9.OQueRolouNaParada(4, e.Message, this.dadosConexao, create);
         }
     }
     else
     {
         X9.ShowInfo(6, null);
     }
 }
        public void salvaHistorico(Historico h)
        {
            String query = "INSERT INTO veiculo (dados) VALUES(@dados)";

            try
            {
                SqlConnection conexao = new SqlConnection(this.dadosConexao);
                SqlCommand    comando = new SqlCommand(query, conexao);
                comando.Parameters.Add("@dados", SqlDbType.Text);
                comando.Parameters["@dados"].Value = h.getJsonRastreio();
                comando.Connection.Open();
                int rows = comando.ExecuteNonQuery(); //numero de linhas afetadas pela query
                comando.Dispose();
                conexao.Close();
                if (rows <= 0)
                {
                    X9.OQueRolouNaParada(1, query, dadosConexao, null);
                }
                if (!Ambiente.isProduction()) //modo verboso ativo fora de produção. (spam info)
                {
                    X9.ShowInfo(4, h.getJsonRastreio());
                }
            }
            catch (Exception e)
            {
                if (
                    e.Message.Equals("Invalid object name 'veiculo'.") &&
                    !Ambiente.isProduction() &&
                    errorCount == 0
                    )
                {
                    errorCount++;
                    CreateTable();     // SYNC DE ORM É PARA OS FRACOS! Aqui o sistema é bruto.
                    salvaHistorico(h); // caberia um goto aqui fácil.. mas vamos de recursão.
                }
                else
                {
                    if (e.Message.Equals("Invalid object name 'veiculo'."))
                    {
                        X9.OQueRolouNaParada(2, this.dadosConexao, null, null);
                    }
                    else
                    {
                        X9.OQueRolouNaParada(3, e.Message, this.dadosConexao, null);
                    }
                }
            }
        }
Esempio n. 3
0
        static void Main(string[] args)
        {
            ConnectionFactory factory;
            IConnection       connection;
            IModel            channel;
            String            queueName;

            Console.Clear();

            if (Ambiente.isProduction())
            //modo de produção, saída mínima de texto no terminal.
            {
                try
                {
                    factory = new ConnectionFactory()
                    {
                        HostName = RMQHost
                    };
                    connection = factory.CreateConnection();
                    channel    = connection.CreateModel();
                    channel.ExchangeDeclare(exchange: RMQTopic, type: "topic", durable: true);
                    queueName = channel.QueueDeclare(RMQChannel).QueueName;
                    channel.QueueBind(queue: queueName, exchange: RMQTopic, routingKey: RMQKey);
                    X9.ShowInfo(1, null);
                    EventingBasicConsumer consumidorEventos = new EventingBasicConsumer(channel);
                    consumidorEventos.Received += (model, ea) =>
                    {
                        byte[]    body    = ea.Body;
                        String    message = Encoding.UTF8.GetString(body);
                        Historico h       = new Historico();
                        h.setJsonRastreio(message);
                        dao.salvaHistorico(h);
                    };
                    channel.BasicConsume(queue: queueName, autoAck: true, consumer: consumidorEventos);
                }
                catch (Exception e)
                {
                    X9.OQueRolouNaParada(e, 1);
                }
            }


            else
            //fora do ambiente de produção. SPAM INFO rola solto
            {
                try
                {
                    factory = new ConnectionFactory()
                    {
                        HostName = RMQHost
                    };
                    connection = factory.CreateConnection();
                    channel    = connection.CreateModel();
                    channel.ExchangeDeclare(exchange: RMQTopic, type: "topic", durable: true);
                    queueName = channel.QueueDeclare(RMQChannel).QueueName;
                    channel.QueueBind(queue: queueName, exchange: RMQTopic, routingKey: RMQKey);
                    X9.ShowInfo(2, null);
                    EventingBasicConsumer consumidorEventos = new EventingBasicConsumer(channel);
                    consumidorEventos.Received += (model, ea) =>
                    {
                        byte[] body    = ea.Body;
                        String message = Encoding.UTF8.GetString(body);
                        X9.ShowInfo(3, message);
                        Historico h = new Historico();
                        h.setJsonRastreio(message);
                        dao.salvaHistorico(h);
                    };
                    channel.BasicConsume(queue: queueName, autoAck: true, consumer: consumidorEventos);
                }
                catch (Exception e)
                {
                    X9.OQueRolouNaParada(e, 1);
                }
            }
        }