Ejemplo n.º 1
0
        public static StringBuilder getXml(ListaPosicoes lista)
        {
            StringBuilder documentoXml = null;

            try
            {

                documentoXml = new StringBuilder();

                documentoXml.Append("<pacote versao=\"1.0\" rastreadora=\"CAR11102\">");

                for (int i = 0; i < lista.Count; i++)
                {
                    documentoXml.Append("<sinal id=\"" + lista[i].CodigoModulo + "\"" +
                        " x=\"" + Convert.ToString(lista[i].Longitude).Replace(",", ".") + "\"" +
                        " y=\"" + Convert.ToString(lista[i].Latitude).Replace(",", ".")  + "\"" +
                        " vel=\"" + Convert.ToString(lista[i].Velocidade) + "\"" +
                        " data=\"" + Convert.ToString(Convert.ToDateTime(lista[i].Data).ToString("yyyy-MM-dd HH:mm:ss")) + "\"/>");
                }

                documentoXml.Append("</pacote>");

            }
            catch (Exception ex)
            {
                throw new Exception("Não foi possivel montar o xml. Erro: " + ex.Message);
            }

            return documentoXml;
        }
Ejemplo n.º 2
0
        public void DeletaPosicoes(ListaPosicoes listaPosicoes)
        {
            try
            {
                string parametrosId = Convert.ToString(listaPosicoes[0].IdPosicao);

                if (listaPosicoes.Count > 1)
                    for (int i = 1; i < listaPosicoes.Count; i++)
                        parametrosId = parametrosId + "," + Convert.ToString(listaPosicoes[i].IdPosicao);

                string sql = "delete from posicoes_infopae where id_posicao in (" + parametrosId + ")";

                SqlConnection conexao = DBConnection.Conexao.ConectaSql;
                if (conexao.State != ConnectionState.Open)
                    conexao.Open();

                SqlCommand command = new SqlCommand(sql, conexao);
                command.ExecuteNonQuery();

                conexao.Close();

            }
            catch (Exception ex)
            {
                throw new Exception("Não foi possível deletar as posições. Erro: " + ex.Message);
            }
        }
Ejemplo n.º 3
0
        public ListaPosicoes getListaPosicoes()
        {
            ListaPosicoes lista = new ListaPosicoes();
            FusoHorario.FusoHorario fusoHorario;

            try
            {
                string sql = "select top 60 id_posicao, modulo, tipo, latitude, longitude, cast(velocidade as int) as velocidade, data from posicoes_infopae order by modulo, data";

                SqlConnection conexao = DBConnection.Conexao.ConectaSql;
                if (conexao.State != ConnectionState.Open)
                    conexao.Open();
                SqlCommand command = new SqlCommand(sql, conexao);
                SqlDataReader reader = command.ExecuteReader();

                fusoHorario = FusoHorario.FusoHorario.ObterInstancia();

                while(reader.Read())
                {

                    Posicao posicao = new Posicao();
                    posicao.IdPosicao = Convert.ToInt32(reader["id_posicao"]);
                    posicao.CodigoModulo = Convert.ToString(reader["modulo"]);
                    posicao.Tipo = Convert.ToChar(reader["tipo"]);
                    posicao.Latitude = Convert.ToDouble(reader["latitude"]);
                    posicao.Longitude = Convert.ToDouble(reader["longitude"]);
                    posicao.Velocidade = Convert.ToDouble(reader["velocidade"]);
                    posicao.Data = Convert.ToDateTime(reader["data"]);

                    posicao.Data = MetodosAuxiliares.MetodosAuxiliares.ArrumarFusoHorario(posicao.Data, fusoHorario);

                    lista.Add(posicao);

                }

                conexao.Close();

            }
            catch (Exception ex)
            {
                throw new Exception("Não foi possível carregar a lista de posições. Erro: " + ex.Message);
            }

            return lista;
        }
Ejemplo n.º 4
0
        private void Resposta(XmlReader respostaXml)
        {
            List<int> listaErros;
            Boolean salvo = false;

            try
            {
                #region Le o xml de resposta
                try
                {

                    listaErros = new List<int>();

                    while (respostaXml.Read())
                    {
                        if ((respostaXml.NodeType == XmlNodeType.Element) && (respostaXml.Name == "erro"))
                        {

                            salvo = true;

                            if (respostaXml.HasAttributes)
                            {
                                listaErros.Add(Convert.ToInt32(respostaXml.GetAttribute("numerosinal")));
                            }
                        }
                    }

                    if (salvo == true)
                    {
                        string diretorioErro = Application.StartupPath + "\\Erro";
                        string descricaoArquivoErro = "Erro" + DateTime.Now.ToString("xml_dd_MM_yyyy_hh_mm_ss") + ".txt";

                        StreamWriter respostaTexto = new StreamWriter(diretorioErro + "//" + descricaoArquivoErro);

                        respostaTexto.Write(respostaXml.Value);
                        respostaTexto.Flush();
                        respostaTexto.Close();

                        //XmlDocument xmlDocument = new XmlDocument();
                        //xmlDocument.Load(respostaXml);

                        //xmlDocument.Save(diretorioErro + "\\" + descricaoArquivoErro);
                        salvo = false;
                    }

                }
                catch(Exception ex)
                {
                    throw new Exception("Não foi possível ler a resposta do web service. Erro: " + ex.Message);
                }
                #endregion

                if (listaErros.Count > 0)
                {

                    ProcessaPosicoesErro(listaErros);
                    this.teveErro = true;
                }
                else
                {
                    controlePosicao.DeletaPosicoes(listaPosicoes);
                    this.teveErro = false;
                }

                listaErros = null;
                listaPosicoes = null;

            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message);
            }
        }
Ejemplo n.º 5
0
        private void VerificaDataPosicoes(ListaPosicoes listaPosicoes)
        {
            try
            {

                foreach (Posicao.Posicao posicao in listaPosicoes)
                {
                    Modulo.Modulo modulo = listaModulos.getModulo(posicao.CodigoModulo);

                    if (modulo != null)
                        if (posicao.Data <= modulo.DataUltimaPosicao)
                            listaPosicoesExcluir.Add(posicao);
                        else
                        {
                            listaPosicoesEnviar.Add(posicao);
                            modulo.DataUltimaPosicao = posicao.Data;
                        }
                }

            }
            catch (Exception ex)
            {
                throw new Exception("Não foi possível veririficar a data das posições. Erro: " + ex.Message);
            }
        }
Ejemplo n.º 6
0
        private void ProcessaThread()
        {
            ListaPosicoes listaPosicoes;

            contador = 120;

            while (threadAtivada == true && this.threadPrincipal.IsAlive == true)
            {
                try
                {

                    if (contador >= 10)
                    {

                        listaPosicoes = controlePosicao.getListaPosicoes();

                        if (listaPosicoes.Count > 0)
                        {

                            listaPosicoesEnviar = new ListaPosicoes();
                            listaPosicoesExcluir = new ListaPosicoes();

                            VerificaDataPosicoes(listaPosicoes);

                            DeletaPosicoesDataAntiga();

                            AtualizaModulos();

                            webService.ListaPosicoes = listaPosicoesEnviar;
                            webService.EnviaXml();

                            if (!webService.TeveErro)
                                contador = 0;
                        }
                        else
                        {
                            contador = 0;
                        }

                    }

                    Thread.Sleep(1000);
                    contador++;
                }
                catch (Exception ex)
                {
                    MensagensErro = ex.Message;
                }
            }
        }