public static void DownloadFotosSenadores(string dirRaiz) { using (var banco = new Banco()) { DataTable table = banco.GetTable("SELECT id, foto FROM sf_senador where foto is not null", 0); foreach (DataRow row in table.Rows) { string id = row["id"].ToString(); string src = dirRaiz + id + ".jpg"; if (File.Exists(src)) { continue; } try { using (WebClient client = new WebClient()) { client.Headers.Add("User-Agent: Other"); client.DownloadFile(row["foto"].ToString(), src); ImportacaoUtils.CreateImageThumbnail(src); Console.WriteLine("Atualizado imagem do senador " + id); } } catch (Exception) { //ignore } } } }
public static string DownloadFotosSenadores(string dirRaiz) { var db = new StringBuilder(); using (var banco = new Banco()) { DataTable table = banco.GetTable("SELECT id FROM sf_senador where valor_total_ceaps > 0 or ativo = 'S'"); foreach (DataRow row in table.Rows) { string id = row["id"].ToString(); string url = "https://www.senado.leg.br/senadores/img/fotos-oficiais/senador" + id + ".jpg"; string src = dirRaiz + id + ".jpg"; if (File.Exists(src)) { continue; } try { using (WebClient client = new WebClient()) { client.Headers.Add("User-Agent: Other"); client.DownloadFile(url, src); ImportacaoUtils.CreateImageThumbnail(src, 120, 160); ImportacaoUtils.CreateImageThumbnail(src, 240, 300); db.AppendLine("Atualizado imagem do senador " + id); Console.WriteLine("Atualizado imagem do senador " + id); } } catch (Exception ex) { if (!ex.Message.Contains("404")) { db.AppendLine("Imagem do senador " + id + " inexistente! Motivo: " + ex.ToFullDescriptionString()); Console.WriteLine("Imagem do senador " + id + " inexistente! Motivo: " + ex.ToFullDescriptionString()); //ignore } } } } return(db.ToString()); }
private static void CarregaDadosCsv(string file, int ano, bool completo) { int indice = 0; int ANO = indice++; int MES = indice++; int SENADOR = indice++; int TIPO_DESPESA = indice++; int CNPJ_CPF = indice++; int FORNECEDOR = indice++; int DOCUMENTO = indice++; int DATA = indice++; int DETALHAMENTO = indice++; int VALOR_REEMBOLSADO = indice++; //var linhaAtual = 0; using (var banco = new Banco()) { if (!completo) { banco.ExecuteNonQuery(@" delete from sf_despesa where ano=" + DateTime.Now.Year + @"; -- select max(id)+1 from sf_despesa ALTER TABLE sf_despesa AUTO_INCREMENT = 196405; "); } LimpaDespesaTemporaria(banco); using (var reader = new StreamReader(file, Encoding.GetEncoding("ISO-8859-1"))) { short count = 0; while (!reader.EndOfStream) { count++; var linha = reader.ReadLine(); if (string.IsNullOrEmpty(linha)) { continue; } if (!linha.EndsWith("\"")) { linha += reader.ReadLine(); } var valores = ImportacaoUtils.ParseCsvRowToList(@""";""", linha); if (count == 1) //Pula primeira linha, data da atualização { continue; } if (count == 2) { if ( (valores[ANO] != "ANO") || (valores[MES] != "MES") || (valores[SENADOR] != "SENADOR") || (valores[TIPO_DESPESA] != "TIPO_DESPESA") || (valores[CNPJ_CPF] != "CNPJ_CPF") || (valores[FORNECEDOR] != "FORNECEDOR") || (valores[DOCUMENTO] != "DOCUMENTO") || (valores[DATA] != "DATA") || (valores[DETALHAMENTO] != "DETALHAMENTO") || (valores[VALOR_REEMBOLSADO] != "VALOR_REEMBOLSADO") ) { throw new Exception("Mudança de integração detectada para o Senado Federal"); } // Pular linha de titulo continue; } banco.AddParameter("ano", Convert.ToInt32(valores[ANO])); banco.AddParameter("mes", Convert.ToInt32(valores[MES])); banco.AddParameter("senador", valores[SENADOR]); banco.AddParameter("tipo_despesa", valores[TIPO_DESPESA]); banco.AddParameter("cnpj_cpf", !string.IsNullOrEmpty(valores[CNPJ_CPF]) ? Utils.RemoveCaracteresNaoNumericos(valores[CNPJ_CPF]) : ""); banco.AddParameter("fornecedor", valores[FORNECEDOR]); banco.AddParameter("documento", valores[DOCUMENTO]); banco.AddParameter("data", !string.IsNullOrEmpty(valores[DATA]) ? (object)Convert.ToDateTime(valores[DATA]) : DBNull.Value); banco.AddParameter("detalhamento", valores[DETALHAMENTO]); banco.AddParameter("valor_reembolsado", Convert.ToDouble(valores[VALOR_REEMBOLSADO])); banco.ExecuteNonQuery( @"INSERT INTO sf_despesa_temp ( ano, mes, senador, tipo_despesa, cnpj_cpf, fornecedor, documento, `data`, detalhamento, valor_reembolsado ) VALUES ( @ano, @mes, @senador, @tipo_despesa, @cnpj_cpf, @fornecedor, @documento, @data, @detalhamento, @valor_reembolsado )" ); } //if (completo && (++linhaAtual == 10000)) //{ // linhaAtual = 0; // ProcessarDespesasTemp(banco, completo); //} } ProcessarDespesasTemp(banco, completo); } if (ano == DateTime.Now.Year) { AtualizaSenadorValores(); AtualizaCampeoesGastos(); using (var banco = new Banco()) { banco.ExecuteNonQuery(@" UPDATE parametros SET sf_senador_ultima_atualizacao=NOW(); " ); } } }
private static string CarregaDadosCsv(string file, int ano, bool completo) { var cultureInfo = CultureInfo.CreateSpecificCulture("pt-BR"); var sb = new StringBuilder(); string sResumoValores = string.Empty; int indice = 0; int ANO = indice++; int MES = indice++; int SENADOR = indice++; int TIPO_DESPESA = indice++; int CNPJ_CPF = indice++; int FORNECEDOR = indice++; int DOCUMENTO = indice++; int DATA = indice++; int DETALHAMENTO = indice++; int VALOR_REEMBOLSADO = indice++; int linhaAtual = 0; using (var banco = new Banco()) { var lstHash = new List <string>(); using (var dReader = banco.ExecuteReader("select hash from sf_despesa where ano=" + ano)) { while (dReader.Read()) { try { lstHash.Add(dReader["hash"].ToString()); } catch (Exception) { // Vai ter duplicado mesmo } } } using (var dReader = banco.ExecuteReader("select sum(valor) as valor, count(1) as itens from sf_despesa where ano=" + ano)) { if (dReader.Read()) { sResumoValores = string.Format("[{0}]={1}", dReader["itens"], Utils.FormataValor(dReader["valor"])); } } LimpaDespesaTemporaria(banco); using (var reader = new StreamReader(file, Encoding.GetEncoding("ISO-8859-1"))) { short count = 0; while (!reader.EndOfStream) { count++; var linha = reader.ReadLine(); if (string.IsNullOrEmpty(linha)) { continue; } if (!linha.EndsWith("\"")) { linha += reader.ReadLine(); } var valores = ImportacaoUtils.ParseCsvRowToList(@""";""", linha); if (count == 1) //Pula primeira linha, data da atualização { continue; } if (count == 2) { if ( (valores[ANO] != "ANO") || (valores[MES] != "MES") || (valores[SENADOR] != "SENADOR") || (valores[TIPO_DESPESA] != "TIPO_DESPESA") || (valores[CNPJ_CPF] != "CNPJ_CPF") || (valores[FORNECEDOR] != "FORNECEDOR") || (valores[DOCUMENTO] != "DOCUMENTO") || (valores[DATA] != "DATA") || (valores[DETALHAMENTO] != "DETALHAMENTO") || (valores[VALOR_REEMBOLSADO] != "VALOR_REEMBOLSADO") ) { throw new Exception("Mudança de integração detectada para o Senado Federal"); } // Pular linha de titulo continue; } banco.AddParameter("ano", Convert.ToInt32(valores[ANO])); banco.AddParameter("mes", Convert.ToInt32(valores[MES])); banco.AddParameter("senador", valores[SENADOR]); banco.AddParameter("tipo_despesa", valores[TIPO_DESPESA]); banco.AddParameter("cnpj_cpf", !string.IsNullOrEmpty(valores[CNPJ_CPF]) ? Utils.RemoveCaracteresNaoNumericos(valores[CNPJ_CPF]) : ""); banco.AddParameter("fornecedor", valores[FORNECEDOR]); banco.AddParameter("documento", valores[DOCUMENTO]); banco.AddParameter("data", !string.IsNullOrEmpty(valores[DATA]) ? (object)Convert.ToDateTime(valores[DATA], cultureInfo) : DBNull.Value); banco.AddParameter("detalhamento", valores[DETALHAMENTO]); banco.AddParameter("valor_reembolsado", Convert.ToDouble(valores[VALOR_REEMBOLSADO], cultureInfo)); string hash = banco.ParametersHash(); if (lstHash.Remove(hash)) { banco.ClearParameters(); continue; } banco.AddParameter("hash", hash); banco.ExecuteNonQuery( @"INSERT INTO sf_despesa_temp ( ano, mes, senador, tipo_despesa, cnpj_cpf, fornecedor, documento, `data`, detalhamento, valor_reembolsado, hash ) VALUES ( @ano, @mes, @senador, @tipo_despesa, @cnpj_cpf, @fornecedor, @documento, @data, @detalhamento, @valor_reembolsado, @hash )" ); } if (++linhaAtual % 100 == 0) { Console.WriteLine(linhaAtual); } } if (lstHash.Count == 0 && linhaAtual == 0) { sb.AppendFormat("<p>Não há novos itens para importar! #2</p>"); return(sb.ToString()); } if (lstHash.Count > 0) { foreach (var hash in lstHash) { banco.ExecuteNonQuery(string.Format("delete from sf_despesa where hash = '{0}'", hash)); } Console.WriteLine("Registros para exluir: " + lstHash.Count); sb.AppendFormat("<p>{0} registros excluidos</p>", lstHash.Count); } sb.Append(ProcessarDespesasTemp(banco, completo)); } if (ano == DateTime.Now.Year) { AtualizaSenadorValores(); AtualizaCampeoesGastos(); AtualizaResumoMensal(); } using (var banco = new Banco()) { using (var dReader = banco.ExecuteReader("select sum(valor) as valor, count(1) as itens from sf_despesa where ano=" + ano)) { if (dReader.Read()) { sResumoValores += string.Format(" -> [{0}]={1}", dReader["itens"], Utils.FormataValor(dReader["valor"])); } } sb.AppendFormat("<p>Resumo atualização: {0}</p>", sResumoValores); } return(sb.ToString()); }