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; }
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); } }
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; }
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); } }
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); } }
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; } } }