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
                    }
                }
            }
        }
Ejemplo n.º 2
0
        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();
			        "            );
                }
            }
        }
Ejemplo n.º 4
0
        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());
        }