Esempio n. 1
0
        public static void AtualizaSenadorValores()
        {
            using (var banco = new Banco())
            {
                banco.ExecuteNonQuery("UPDATE sf_senador SET valor_total_ceaps=0;");

                var    dt = banco.GetTable(@"select id from sf_senador
						WHERE id IN (
						select distinct id_sf_senador
						from sf_despesa
					)"                    );
                object valor_total_ceaps;

                foreach (DataRow dr in dt.Rows)
                {
                    banco.AddParameter("id_sf_senador", dr["id"]);
                    valor_total_ceaps =
                        banco.ExecuteScalar("select sum(valor) from sf_despesa where id_sf_senador=@id_sf_senador;");

                    banco.AddParameter("valor_total_ceaps", valor_total_ceaps);
                    banco.AddParameter("id_sf_senador", dr["id"]);
                    banco.ExecuteNonQuery(
                        @"update sf_senador set 
						valor_total_ceaps=@valor_total_ceaps
						where id=@id_sf_senador"
                        );
                }
            }
        }
        protected void Page_Load(object sender, EventArgs e)
        {
            using (var banco = new Banco())
            {
                GridViewDepudadoFederal.PreRender += GridViewDepudadoFederal_PreRender;
                DataTable dt;

                banco.AddParameter("@ideCadastro", Request.QueryString["id"]);
                dt = banco.GetTable(@"SELECT ideCadastro, txNomeParlamentar, uf, partido, condicao, email, nome
                    FROM parlamentares
						  WHERE ideCadastro=@ideCadastro"                        );
                frvDeputadoFederal.DataSource = dt;
                frvDeputadoFederal.DataBind();

                Master.Page.Title = "OPS :: Dep. " + dt.Rows[0]["txNomeParlamentar"].ToString();

                banco.AddParameter("@ideCadastro", Request.QueryString["id"]);
                dt = banco.GetTable(@"SELECT SUM(vlrLiquido) AS ValorTotal, txtDescricao AS Despesa
                    FROM lancamentos
						  WHERE ideCadastro=@ideCadastro
						  GROUP BY txtDescricao
						  ORDER BY 1 DESC"                        );
                GridViewDepudadoFederal.DataSource = dt;
                GridViewDepudadoFederal.DataBind();
                Session["pesquisa0"] = dt;

                ValorTotal.InnerText = Convert.ToDecimal(dt.Compute("Sum(ValorTotal)", "")).ToString("#,###.00");

                banco.AddParameter("@ideCadastro", Request.QueryString["id"]);
                TotalFuncionarios.InnerText = banco.ExecuteScalar(@"SELECT count(1) FROM secretario WHERE deputado=@ideCadastro").ToString();
            }
        }
        private static DataRow LocalizaInsereAtividade(DataTable dtFornecedoresAtividade, IAtividade atividadesSecundaria)
        {
            var drs = dtFornecedoresAtividade.Select("codigo='" + atividadesSecundaria.code + "'");

            var dr = dtFornecedoresAtividade.NewRow();

            if (drs.Length == 0)
            {
                using (var banco = new Banco())
                {
                    var strSql =
                        @"insert into fornecedor_atividade (codigo, descricao) values (@codigo, @descricao); SELECT LAST_INSERT_ID();";
                    banco.AddParameter("@codigo", atividadesSecundaria.code);
                    banco.AddParameter("@descricao", atividadesSecundaria.text);

                    dr["id"]        = Convert.ToInt32(banco.ExecuteScalar(strSql));
                    dr["codigo"]    = atividadesSecundaria.code;
                    dr["descricao"] = atividadesSecundaria.text;

                    dtFornecedoresAtividade.Rows.Add(dr);

                    return(dr);
                }
            }

            return(drs[0]);
        }
Esempio n. 4
0
        public dynamic Consulta(string cnpj, string nome)
        {
            string sSql = @"SELECT 
							id as id_fornecedor
							, cnpj_cpf
							, nome
							, doador
						FROM fornecedor
                        WHERE (1=1)";

            using (Banco banco = new Banco())
            {
                if (!string.IsNullOrEmpty(cnpj))
                {
                    cnpj = Utils.RemoveCaracteresNaoNumericos(cnpj);

                    if (cnpj.Length == 14 || cnpj.Length == 11)
                    {
                        banco.AddParameter("cnpj", cnpj);
                        sSql += " AND cnpj_cpf = @cnpj";
                    }
                    else
                    {
                        banco.AddParameter("cnpj", cnpj + "%");
                        sSql += " AND cnpj_cpf like @cnpj";
                    }
                }
                else
                {
                    if (!string.IsNullOrEmpty(nome))
                    {
                        banco.AddParameter("nome", "%" + Utils.MySqlEscape(nome) + "%");
                        sSql += " AND nome like @nome";
                    }
                }

                sSql += " order by nome limit 100;";

                var lstFornecedor = new List <dynamic>();
                using (MySqlDataReader reader = banco.ExecuteReader(sSql))
                {
                    while (reader.Read())
                    {
                        lstFornecedor.Add(new
                        {
                            id_fornecedor = reader["id_fornecedor"].ToString(),
                            cnpj_cpf      = reader["cnpj_cpf"].ToString(),
                            nome          = reader["nome"].ToString(),
                        });
                    }

                    return(lstFornecedor);
                }
            }
        }
        private static void InserirControle(int controle, string cnpj_cpf, string mensagem)
        {
            using (var banco = new Banco())
            {
                banco.AddParameter("@cnpj_cpf", cnpj_cpf);
                banco.AddParameter("@controle", controle);
                banco.AddParameter("@mensagem", mensagem);

                banco.ExecuteNonQuery(@"update fornecedor set controle=@controle, mensagem=@mensagem where cnpj_cpf=@cnpj_cpf;");
            }
        }
        public dynamic RecebimentosMensaisPorAnoSenadores(int id)
        {
            using (Banco banco = new Banco())
            {
                string strSql = @"
					SELECT l.mes, l.ano, SUM(l.valor) AS valor_total
					FROM sf_despesa l
					WHERE l.id_fornecedor = @id
					group by l.ano, l.mes
					order by l.ano, l.mes;
				"                ;

                banco.AddParameter("@id", id);

                using (MySqlDataReader reader = banco.ExecuteReader(strSql.ToString()))
                {
                    List <dynamic> lstRetorno        = new List <dynamic>();
                    var            lstValoresMensais = new decimal?[12];
                    string         anoControle       = string.Empty;
                    bool           existeGastoNoAno  = false;

                    while (reader.Read())
                    {
                        if (reader["ano"].ToString() != anoControle)
                        {
                            if (existeGastoNoAno)
                            {
                                lstRetorno.Add(new
                                {
                                    name = anoControle.ToString(),
                                    data = lstValoresMensais
                                });

                                lstValoresMensais = new decimal?[12];
                                existeGastoNoAno  = false;
                            }

                            anoControle = reader["ano"].ToString();
                        }

                        if (Convert.ToDecimal(reader["valor_total"]) > 0)
                        {
                            lstValoresMensais[Convert.ToInt32(reader["mes"]) - 1] = Convert.ToDecimal(reader["valor_total"]);
                            existeGastoNoAno = true;
                        }
                    }
                    if (existeGastoNoAno)
                    {
                        lstRetorno.Add(new
                        {
                            name = anoControle.ToString(),
                            data = lstValoresMensais
                        });
                    }


                    return(lstRetorno);
                }
            }
        }
        //public static void ConsultarCNPJ()
        //{
        //	int totalErros = 0, totalAcertos = 0;

        //	while (true)
        //	{
        //		DataTable dtFornecedores;
        //		using (var banco = new Banco())
        //		{
        //			dtFornecedores = banco.GetTable(
        //				@"select cnpj_cpf, f.id, fi.id_fornecedor
        //                  from fornecedor f
        //                  left join fornecedor_info fi on f.id = fi.id_fornecedor
        //                  where char_length(f.cnpj_cpf) = 14
        //                  and f.cnpj_cpf <> '00000000000000'
        //                  -- and obtido_em < '2017-01-01'
        //                  and fi.id_fornecedor is null
        //                  -- and ip_colaborador is null -- not in ('170509', '170510', '170511', '170512')
        //                  -- and controle is null
        //                  -- and controle = 1
        //			and controle <> 5
        //                  -- and (f.mensagem is null or f.mensagem <> 'O número do CNPJ não foi localizado na Receita Federal')
        //                  order by 1 desc");
        //		}

        //		if (dtFornecedores.Rows.Count == 0) break;

        //		Console.WriteLine("Consultando CNPJ's Local: {0} itens.", dtFornecedores.Rows.Count);

        //		foreach (DataRow item in dtFornecedores.Rows)
        //		{
        //			try
        //			{
        //				Receita.ConsultarCNPJ(item["cnpj_cpf"].ToString(), ref totalAcertos, ref totalErros);
        //			}
        //			catch (Exception e)
        //			{
        //				Console.WriteLine(e.Message);
        //				System.Threading.Thread.Sleep(3600000);
        //			}
        //		}
        //	};
        //}

        public static void AtualizaFornecedorDoador()
        {
            using (var banco = new Banco())
            {
                var dt = banco.GetTable("select id, cnpj_cpf from fornecedor");

                foreach (DataRow dr in dt.Rows)
                {
                    banco.AddParameter("cnpj", dr["cnpj_cpf"]);
                    var existe = banco.ExecuteScalar("select 1 from eleicao_doacao where raiz_cnpj_cpf_doador=@cnpj;");
                    if (existe != null)
                    {
                        banco.AddParameter("id", dr["id"]);
                        banco.ExecuteNonQuery("update fornecedor set doador=1 where id=@id");
                    }
                }
            }
        }
        public dynamic Consultar(int id)
        {
            using (Banco banco = new Banco())
            {
                var strSql = @"
					SELECT 
						d.id as id_sf_senador
						, d.nome as nome_parlamentar
						, d.nome_completo as nome_civil
						, d.nascimento
						, d.sexo
						, d.id_partido
						, p.sigla as sigla_partido
						, p.nome as nome_partido
						, d.id_estado
						, e.sigla as sigla_estado
						, e.nome as nome_estado
						, d.email
						, d.valor_total_ceaps
					FROM sf_senador d
					LEFT JOIN partido p on p.id = d.id_partido
					LEFT JOIN estado e on e.id = d.id_estado
					WHERE d.id = @id
				"                ;
                banco.AddParameter("@id", id);

                using (MySqlDataReader reader = banco.ExecuteReader(strSql))
                {
                    if (reader.Read())
                    {
                        return(new
                        {
                            id_sf_senador = reader["id_sf_senador"],
                            nome_parlamentar = reader["nome_parlamentar"].ToString(),
                            nome_civil = reader["nome_civil"].ToString(),
                            nascimento = Utils.FormataData(reader["nascimento"]),
                            sexo = reader["sexo"].ToString(),
                            id_partido = reader["id_partido"],
                            sigla_estado = reader["sigla_estado"].ToString(),
                            nome_partido = reader["nome_partido"].ToString(),
                            id_estado = reader["id_estado"],
                            sigla_partido = reader["sigla_partido"].ToString(),
                            nome_estado = reader["nome_estado"].ToString(),
                            email = reader["email"].ToString(),

                            valor_total_ceaps = Utils.FormataValor(reader["valor_total_ceaps"]),
                        });
                    }

                    return(null);
                }
            }
        }
        private void Gravar()
        {
            try
            {
                using (Banco banco = new Banco())
                {
                    banco.BeginTransaction();

                    banco.AddParameter("UserName", System.Web.HttpContext.Current.User.Identity.Name);
                    banco.ExecuteNonQuery("DELETE FROM senador_usuario WHERE UserName = @UserName");

                    foreach (GridViewRow row in GridView.Rows)
                    {
                        if (row.RowType == DataControlRowType.DataRow)
                        {
                            CheckBox chkRow = (row.Cells[0].FindControl("CheckBoxSelecionar") as CheckBox);

                            if (chkRow.Checked && chkRow.Enabled == true)
                            {
                                try
                                {
                                    banco.AddParameter("UserName", System.Web.HttpContext.Current.User.Identity.Name);
                                    banco.AddParameter("CodigoParlamentar", row.Cells[3].Text);
                                    banco.ExecuteNonQuery("INSERT INTO senador_usuario (UserName, CodigoParlamentar) VALUES (@UserName, @CodigoParlamentar)");
                                }
                                catch (Exception ex)
                                {
                                }
                            }
                        }
                    }

                    banco.CommitTransaction();
                }
            }
            catch (Exception ex)
            {
            }
        }
        public dynamic MaioresNotas(int id)
        {
            using (Banco banco = new Banco())
            {
                var strSql = new StringBuilder();

                strSql.AppendLine(@"
					SELECT
						 l1.id as id_sf_despesa
						, l1.id_fornecedor
						, pj.cnpj_cpf
						, pj.nome AS nome_fornecedor
						, l1.valor
					from (
						SELECT
						l.id
						, l.valor
						, l.id_fornecedor
						FROM sf_despesa l
						WHERE l.id_sf_senador = @id
						order by l.valor desc
						LIMIT 10
					) l1
					LEFT JOIN fornecedor pj on pj.id = l1.id_fornecedor
					order by l1.valor desc 
				"                );

                banco.AddParameter("@id", id);

                using (MySqlDataReader reader = banco.ExecuteReader(strSql.ToString()))
                {
                    List <dynamic> lstRetorno = new List <dynamic>();
                    while (reader.Read())
                    {
                        lstRetorno.Add(new
                        {
                            id_sf_despesa   = reader["id_sf_despesa"].ToString(),
                            id_fornecedor   = reader["id_fornecedor"].ToString(),
                            cnpj_cpf        = reader["cnpj_cpf"].ToString(),
                            nome_fornecedor = reader["nome_fornecedor"].ToString(),
                            valor           = Utils.FormataValor(reader["valor"])
                        });
                    }

                    return(lstRetorno);
                }
            }
        }
        public dynamic QuadroSocietario(int id)
        {
            try
            {
                using (Banco banco = new Banco())
                {
                    string strSql =
                        @"SELECT
							fs.nome
							, fsq1.descricao as qualificacao
							, fs.nome_representante as nome_representante_legal
							, fsq2.descricao as qualificacao_representante_legal
						FROM fornecedor_socio fs
						LEFT JOIN fornecedor_socio_qualificacao fsq1 on fsq1.id = fs.id_fornecedor_socio_qualificacao
						LEFT JOIN fornecedor_socio_qualificacao fsq2 on fsq2.id = fs.id_fornecedor_socio_representante_qualificacao
						where fs.id_fornecedor = @id"                        ;

                    banco.AddParameter("id", id);

                    using (MySqlDataReader reader = banco.ExecuteReader(strSql))
                    {
                        List <dynamic> lstRetorno = new List <dynamic>();
                        while (reader.Read())
                        {
                            lstRetorno.Add(new
                            {
                                nome                             = reader["nome"].ToString(),
                                qualificacao                     = reader["qualificacao"].ToString(),
                                nome_representante_legal         = reader["nome_representante_legal"].ToString(),
                                qualificacao_representante_legal = reader["qualificacao_representante_legal"].ToString()
                            });
                        }

                        return(lstRetorno);
                    }
                }
            }
            catch (Exception)
            { }             //TODO: logar erro

            return(null);
        }
        public dynamic DeputadoFederalMaioresGastos(int id)
        {
            using (Banco banco = new Banco())
            {
                var strSql = new StringBuilder();
                strSql.Append(
                    @"SELECT
						l1.id_cf_deputado
						, p.nome_parlamentar
						, l1.valor_total
					FROM (
						select 
							SUM(l.valor_liquido) AS valor_total
							, l.id_cf_deputado
						from cf_despesa l
						WHERE l.id_fornecedor = @id
						GROUP BY l.id_cf_deputado
						ORDER BY valor_total desc
						LIMIT 10
					) l1
					LEFT JOIN cf_deputado p ON p.id = l1.id_cf_deputado"                    );

                banco.AddParameter("@id", id);

                using (MySqlDataReader reader = banco.ExecuteReader(strSql.ToString()))
                {
                    List <dynamic> lstRetorno = new List <dynamic>();
                    while (reader.Read())
                    {
                        lstRetorno.Add(new
                        {
                            id_cf_deputado   = reader["id_cf_deputado"].ToString(),
                            nome_parlamentar = reader["nome_parlamentar"].ToString(),
                            valor_total      = Utils.FormataValor(reader["valor_total"])
                        });
                    }

                    return(lstRetorno);
                }
            }
        }
        public dynamic SenadoresMaioresGastos(int id)
        {
            using (Banco banco = new Banco())
            {
                var strSql =
                    @"SELECT
						l1.id_sf_senador
						, p.nome as nome_parlamentar
						, l1.valor_total
					FROM (
						select 
							SUM(l.valor) AS valor_total
							, l.id_sf_senador
						from sf_despesa l
						WHERE l.id_fornecedor = @id
						GROUP BY l.id_sf_senador
						ORDER BY valor_total desc
						LIMIT 10
					) l1
					LEFT JOIN sf_senador p ON p.id = l1.id_sf_senador"                    ;

                banco.AddParameter("@id", id);

                using (MySqlDataReader reader = banco.ExecuteReader(strSql))
                {
                    List <dynamic> lstRetorno = new List <dynamic>();
                    while (reader.Read())
                    {
                        lstRetorno.Add(new
                        {
                            id_sf_senador    = reader["id_sf_senador"].ToString(),
                            nome_parlamentar = reader["nome_parlamentar"].ToString(),
                            valor_total      = Utils.FormataValor(reader["valor_total"])
                        });
                    }

                    return(lstRetorno);
                }
            }
        }
Esempio n. 14
0
        public dynamic SecretariosPorDeputado(int id)
        {
            using (Banco banco = new Banco())
            {
                var strSql = new StringBuilder();
                strSql.AppendLine(@"
					SELECT
						s.id as id_cf_secretario
						, s.id_cf_gabinete
						, s.nome
						, s.orgao
						, s.data
					FROM cf_secretario s
					WHERE s.id_cf_deputado = @id
				"                );
                banco.AddParameter("@id", id);

                using (MySqlDataReader reader = banco.ExecuteReader(strSql.ToString()))
                {
                    var lstRetorno = new List <dynamic>();
                    while (reader.Read())
                    {
                        lstRetorno.Add(new
                        {
                            id_cf_secretario = reader["id_cf_secretario"],
                            id_cf_gabinete   = reader["id_cf_gabinete"],
                            nome             = reader["nome"].ToString(),
                            orgao            = reader["orgao"].ToString(),
                            data             = Utils.FormataData(reader["data"])
                        });
                    }

                    return(lstRetorno);
                }
            }
        }
        //internal dynamic Pesquisa(FiltroDropDownDTO filtro)
        //{
        //	using (Banco banco = new Banco())
        //	{
        //		var strSql = new StringBuilder();
        //		strSql.Append("SELECT SQL_CALC_FOUND_ROWS txtCNPJCPF, txtBeneficiario FROM fornecedores ");

        //		if (!string.IsNullOrEmpty(filtro.q))
        //		{
        //			strSql.AppendFormat("WHERE txtBeneficiario LIKE @q OR txtCNPJCPF LIKE @q ", filtro.q);
        //			banco.AddParameter("@q", "%" + filtro.q + "%");
        //		}
        //		else if (!string.IsNullOrEmpty(filtro.qs))
        //		{
        //			strSql.AppendFormat("WHERE txtCNPJCPF IN({0}) ", "'" + filtro.qs.Replace(",", "','") + "'");
        //		}

        //		strSql.AppendFormat("ORDER BY txtBeneficiario, Uf ");
        //		strSql.AppendFormat("LIMIT {0},{1}; ", ((filtro.page ?? 1) - 1) * filtro.count, filtro.count);

        //		strSql.Append("SELECT FOUND_ROWS(); ");

        //		var lstRetorno = new List<dynamic>();
        //		using (MySqlDataReader reader = banco.ExecuteReader(strSql.ToString()))
        //		{
        //			while (reader.Read())
        //			{
        //				lstRetorno.Add(new
        //				{
        //					id = reader[0].ToString(),
        //					text = string.Format("{0} ({1})", reader[1].ToString(), reader[0].ToString()),
        //				});
        //			}

        //			reader.NextResult();
        //			reader.Read();

        //			return new
        //			{
        //				total_count = reader[0],
        //				results = lstRetorno
        //			};
        //		}
        //	}
        //}

        public dynamic Consulta(int id)
        {
            using (Banco banco = new Banco())
            {
                banco.AddParameter("id", id);

                using (MySqlDataReader reader = banco.ExecuteReader(
                           @"SELECT 
							pj.id as id_fornecedor
							, pj.cnpj_cpf
							, pj.nome
							, pj.doador
							, pji.data_de_abertura
							, pji.nome_fantasia
							, CONCAT(a.codigo,' - ',a.descricao) as atividade_principal
							, CONCAT(nj.codigo,' - ',nj.descricao) as natureza_juridica
							, pji.logradouro
							, pji.numero
							, pji.complemento
							, pji.cep
							, pji.bairro
							, pji.municipio as cidade
							, pji.estado
							, pji.situacao_cadastral
							, pji.data_da_situacao_cadastral
							, pji.motivo_situacao_cadastral
							, pji.situacao_especial
							, pji.data_situacao_especial
							, pji.endereco_eletronico
							, pji.telefone
							, pji.ente_federativo_responsavel
							, pji.obtido_em
							, pji.capital_social
						FROM fornecedor pj
						LEFT JOIN fornecedor_info pji on pji.id_fornecedor = pj.id
						LEFT JOIN fornecedor_atividade a on a.id = pji.id_fornecedor_atividade_principal
						LEFT JOIN fornecedor_natureza_juridica nj on nj.id = pji.id_fornecedor_natureza_juridica
						WHERE pj.id = @id;

                        SELECT fa.codigo, fa.descricao
                        FROM fornecedor_atividade_secundaria fas 
                        INNER JOIN fornecedor_atividade fa on fa.id = fas.id_fornecedor_atividade
                        where id_fornecedor = @id;"
                           ))
                {
                    if (reader.Read())
                    {
                        var fornecedor = new
                        {
                            id_fornecedor       = reader["id_fornecedor"].ToString(),
                            cnpj_cpf            = reader["cnpj_cpf"].ToString(),
                            data_de_abertura    = Utils.FormataData(reader["data_de_abertura"]),
                            nome                = reader["nome"].ToString(),
                            nome_fantasia       = reader["nome_fantasia"].ToString(),
                            atividade_principal = reader["atividade_principal"].ToString(),
                            natureza_juridica   = reader["natureza_juridica"].ToString(),
                            logradouro          = reader["logradouro"].ToString(),
                            numero              = reader["numero"].ToString(),
                            complemento         = reader["complemento"].ToString(),
                            cep                         = reader["cep"].ToString(),
                            bairro                      = reader["bairro"].ToString(),
                            cidade                      = reader["cidade"].ToString(),
                            estado                      = reader["estado"].ToString(),
                            situacao_cadastral          = reader["situacao_cadastral"].ToString(),
                            data_da_situacao_cadastral  = reader["data_da_situacao_cadastral"].ToString(),
                            motivo_situacao_cadastral   = reader["motivo_situacao_cadastral"].ToString(),
                            situacao_especial           = reader["situacao_especial"].ToString(),
                            data_situacao_especial      = reader["data_situacao_especial"].ToString(),
                            endereco_eletronico         = reader["endereco_eletronico"].ToString(),
                            telefone                    = reader["telefone"].ToString(),
                            ente_federativo_responsavel = reader["ente_federativo_responsavel"].ToString(),
                            obtido_em                   = Utils.FormataDataHora(reader["obtido_em"]),
                            capital_social              = Utils.FormataValor(reader["capital_social"]),
                            doador                      = reader["doador"],
                            atividade_secundaria        = new List <string>()
                        };

                        reader.NextResult();
                        while (reader.Read())
                        {
                            fornecedor.atividade_secundaria.Add($"{reader["codigo"]} - {reader["descricao"]}");
                        }

                        return(fornecedor);
                    }

                    return(null);
                }
            }
        }
Esempio n. 16
0
        public static void AtualizaSenadores()
        {
            using (var banco = new Banco())
            {
                DataTable dtSenadores = banco.GetTable("SELECT id FROM sf_senador");

                foreach (DataRow dr in dtSenadores.Rows)
                {
                    try
                    {
                        using (var senado = new DataSet())
                        {
                            senado.ReadXml("http://legis.senado.leg.br/dadosabertos/senador/" + dr["id"].ToString());

                            DataRow senador             = senado.Tables["IdentificacaoParlamentar"].Rows[0];
                            DataRow senadosDadosBasicos = senado.Tables["DadosBasicosParlamentar"].Rows[0];

                            banco.AddParameter("NomeParlamentar", Convert.ToString(senador["NomeParlamentar"]));
                            banco.AddParameter("NomeCompletoParlamentar", Convert.ToString(senador["NomeCompletoParlamentar"]));
                            banco.AddParameter("SexoParlamentar", Convert.ToString(senador["SexoParlamentar"])[0].ToString());

                            try
                            {
                                banco.AddParameter("Url", Convert.ToString(senador["UrlPaginaParlamentar"]));
                            }
                            catch (Exception)
                            {
                                banco.AddParameter("Url", DBNull.Value);
                            }

                            try
                            {
                                banco.AddParameter("Foto", Convert.ToString(senador["UrlFotoParlamentar"]));
                            }
                            catch (Exception)
                            {
                                banco.AddParameter("Foto", DBNull.Value);
                            }

                            banco.AddParameter("SiglaPartido", Convert.ToString(senador["SiglaPartidoParlamentar"]));
                            try
                            {
                                banco.AddParameter("SiglaUf", Convert.ToString(senador["UfParlamentar"]));
                            }
                            catch (Exception)
                            {
                                try
                                {
                                    banco.AddParameter("SiglaUf", Convert.ToString(senadosDadosBasicos["UfNaturalidade"]));
                                }
                                catch (Exception)
                                {
                                    try
                                    {
                                        DataRow ultimoMandato = senado.Tables["UltimoMandato"].Rows[0];
                                        banco.AddParameter("SiglaUf", Convert.ToString(ultimoMandato["UfParlamentar"]));
                                    }
                                    catch (Exception)
                                    {
                                        banco.AddParameter("SiglaUf", DBNull.Value);
                                    }
                                }
                            }

                            try
                            {
                                banco.AddParameter("EmailParlamentar", Convert.ToString(senador["EmailParlamentar"]));
                            }
                            catch (Exception)
                            {
                                banco.AddParameter("EmailParlamentar", DBNull.Value);
                            }


                            banco.AddParameter("DataNascimento", Convert.ToString(senadosDadosBasicos["DataNascimento"]));
                            banco.AddParameter("CodigoParlamentar", Convert.ToInt32(senador["CodigoParlamentar"]));
                            // Ao invés de gravar o fim do mandato grava o início
                            //banco.AddParameter("MandatoAtual", Convert.ToDateTime(senador["MandatoAtual"]).AddYears(-9).ToString("yyyyMM"));
                            banco.ExecuteNonQuery(
                                @"UPDATE sf_senador SET 
											nome = @NomeParlamentar
											, nome_completo = @NomeCompletoParlamentar
											, sexo = @SexoParlamentar
											, url = @Url
											, foto = @Foto
											, id_partido = (SELECT id FROM partido where sigla like @SiglaPartido)
											, id_estado = (SELECT id FROM estado where sigla like @SiglaUf)
											, email = @EmailParlamentar
											, nascimento = @DataNascimento
										WHERE id = @CodigoParlamentar"                                        );
                        }
                    }
                    catch (Exception ex)
                    {
                        Console.WriteLine(ex.ToFullDescriptionString());
                    }
                }
            }
        }
        public int AtualizaDados(Fornecedor fornecedor)
        {
            int id_fornecedor = 0;

            using (Banco banco = new Banco())
            {
                bool fornecedor_existente = false;

                string strSqlLocaliza = @"
					SELECT f.id, fi.id_fornecedor
					FROM fornecedor f
					LEFT JOIN fornecedor_info fi on fi.id_fornecedor = f.id
					where f.cnpj_cpf = @cnpj_cpf
				"                ;
                banco.AddParameter("cnpj_cpf", fornecedor.CnpjCpf);

                using (var dReader = banco.ExecuteReader(strSqlLocaliza))
                {
                    if (dReader.Read())
                    {
                        id_fornecedor        = Convert.ToInt32(dReader["id"]);
                        fornecedor_existente = !Convert.IsDBNull(dReader["id_fornecedor"]);
                    }
                    else
                    {
                        throw new BusinessException("Fornecedor inexistente.");
                    }
                }

                object id_fornecedor_atividade_principal;
                object id_fornecedor_natureza_juridica;

                try
                {
                    banco.AddParameter("codigo", fornecedor.AtividadePrincipal.Split(' ')[0]);
                    id_fornecedor_atividade_principal = banco.ExecuteScalar("select id from fornecedor_atividade where codigo=@codigo");
                }
                catch (Exception)
                {
                    id_fornecedor_atividade_principal = DBNull.Value;
                }

                try
                {
                    banco.AddParameter("codigo", fornecedor.NaturezaJuridica.Split(' ')[0]);
                    id_fornecedor_natureza_juridica = banco.ExecuteScalar("select id from fornecedor_natureza_juridica where codigo=@codigo");
                }
                catch (Exception)
                {
                    id_fornecedor_natureza_juridica = DBNull.Value;
                }

                banco.AddParameter("nome", fornecedor.RazaoSocial);
                banco.AddParameter("data_de_abertura", Utils.ParseDateTime(fornecedor.DataAbertura));
                banco.AddParameter("nome_fantasia", fornecedor.NomeFantasia);
                banco.AddParameter("id_fornecedor_atividade_principal", id_fornecedor_atividade_principal);
                banco.AddParameter("id_fornecedor_natureza_juridica", id_fornecedor_natureza_juridica);
                banco.AddParameter("logradouro", fornecedor.Logradouro);
                banco.AddParameter("numero", fornecedor.Numero);
                banco.AddParameter("complemento", fornecedor.Complemento);
                banco.AddParameter("cep", fornecedor.Cep);
                banco.AddParameter("bairro", fornecedor.Bairro);
                banco.AddParameter("municipio", fornecedor.Cidade);
                banco.AddParameter("estado", fornecedor.Uf);
                banco.AddParameter("situacao_cadastral", fornecedor.Situacao);
                banco.AddParameter("data_da_situacao_cadastral", Utils.ParseDateTime(fornecedor.DataSituacao));
                banco.AddParameter("motivo_situacao_cadastral", fornecedor.MotivoSituacao);
                banco.AddParameter("situacao_especial", fornecedor.SituacaoEspecial);
                banco.AddParameter("data_situacao_especial", Utils.ParseDateTime(fornecedor.DataSituacaoEspecial));
                banco.AddParameter("endereco_eletronico", fornecedor.Email);
                banco.AddParameter("telefone", fornecedor.Telefone);
                banco.AddParameter("ente_federativo_responsavel", fornecedor.EnteFederativoResponsavel);
                banco.AddParameter("capital_social", ObterValor(fornecedor.CapitalSocial));
                //banco.AddParameter("ip_colaborador", fornecedor.UsuarioInclusao);
                banco.AddParameter("id_fornecedor", id_fornecedor);

                string sql;
                if (!fornecedor_existente)
                {
                    banco.AddParameter("cnpj", fornecedor.CnpjCpf);

                    sql =
                        @"INSERT INTO fornecedor_info (
							nome,
							data_de_abertura,
							nome_fantasia,
							id_fornecedor_atividade_principal,
							id_fornecedor_natureza_juridica,
							logradouro,
							numero,
							complemento,
							cep,
							bairro,
							municipio,
							estado,
							situacao_cadastral,
							data_da_situacao_cadastral,
							motivo_situacao_cadastral,
							situacao_especial,
							data_situacao_especial,
							endereco_eletronico,
							telefone,
							ente_federativo_responsavel,
							capital_social,
							obtido_em,
							id_fornecedor,
							cnpj
						) VALUES (
							@nome,
							@data_de_abertura,
							@nome_fantasia,
							@id_fornecedor_atividade_principal,
							@id_fornecedor_natureza_juridica,
							@logradouro,
							@numero,
							@complemento,
							@cep,
							@bairro,
							@municipio,
							@estado,
							@situacao_cadastral,
							@data_da_situacao_cadastral,
							@motivo_situacao_cadastral,
							@situacao_especial,
							@data_situacao_especial,
							@endereco_eletronico,
							@telefone,
							@ente_federativo_responsavel,
							@capital_social,
							NOW(),
							@id_fornecedor,
							@cnpj
						)
					"                    ;
                }
                else
                {
                    sql =
                        @"UPDATE fornecedor_info SET
							nome								= @nome,
							data_de_abertura					= @data_de_abertura,
							nome_fantasia						= @nome_fantasia,
							id_fornecedor_atividade_principal	= @id_fornecedor_atividade_principal,
							id_fornecedor_natureza_juridica		= @id_fornecedor_natureza_juridica,
							logradouro							= @logradouro,
							numero								= @numero,
							complemento							= @complemento,
							cep									= @cep,
							bairro								= @bairro,
							municipio							= @municipio,
							estado								= @estado,
							situacao_cadastral					= @situacao_cadastral,
							data_da_situacao_cadastral			= @data_da_situacao_cadastral,
							motivo_situacao_cadastral			= @motivo_situacao_cadastral,
							situacao_especial					= @situacao_especial,
							data_situacao_especial				= @data_situacao_especial,
							endereco_eletronico					= @endereco_eletronico,
							telefone							= @telefone,
							ente_federativo_responsavel			= @ente_federativo_responsavel,
							capital_social						= @capital_social,
							obtido_em							= NOW()
						WHERE id_fornecedor						= @id_fornecedor
					"                    ;
                }

                banco.ExecuteNonQuery(sql.ToString());

                banco.AddParameter("id_fornecedor", id_fornecedor);
                banco.ExecuteScalar("DELETE FROM fornecedor_atividade_secundaria WHERE id_fornecedor = @id_fornecedor");

                if (fornecedor.lstFornecedorQuadroSocietario != null)
                {
                    foreach (var atividade in fornecedor.AtividadeSecundaria)
                    {
                        if (string.IsNullOrEmpty(atividade) || atividade == "********")
                        {
                            continue;
                        }

                        object id_fornecedor_atividade;

                        try
                        {
                            banco.AddParameter("codigo", atividade.Split(' ')[0]);
                            id_fornecedor_atividade = banco.ExecuteScalar("select id from fornecedor_atividade where codigo=@codigo");
                        }
                        catch (Exception)
                        {
                            continue;
                        }

                        banco.AddParameter("id_fornecedor", id_fornecedor);
                        banco.AddParameter("id_fornecedor_atividade", id_fornecedor_atividade);

                        banco.ExecuteNonQuery(
                            @"INSERT fornecedor_atividade_secundaria (
								id_fornecedor, 
								id_fornecedor_atividade
							) VALUES (
								@id_fornecedor, 
								@id_fornecedor_atividade
							)"                            );
                    }
                }

                banco.AddParameter("id_fornecedor", id_fornecedor);
                banco.ExecuteScalar("DELETE FROM fornecedor_socio WHERE id_fornecedor = @id_fornecedor");

                if (fornecedor.lstFornecedorQuadroSocietario != null)
                {
                    foreach (var qas in fornecedor.lstFornecedorQuadroSocietario)
                    {
                        banco.AddParameter("id_fornecedor", id_fornecedor);
                        banco.AddParameter("nome", qas.Nome);

                        if (!string.IsNullOrEmpty(qas.Qualificacao))
                        {
                            banco.AddParameter("id_fornecedor_socio_qualificacao", Convert.ToInt32(qas.Qualificacao.Split('-')[0]));
                        }
                        else
                        {
                            banco.AddParameter("id_fornecedor_socio_qualificacao", DBNull.Value);
                        }

                        banco.AddParameter("nome_representante", qas.NomeRepresentanteLegal);

                        if (!string.IsNullOrEmpty(qas.QualificacaoRepresentanteLegal))
                        {
                            banco.AddParameter("id_fornecedor_socio_representante_qualificacao", Convert.ToInt32(qas.QualificacaoRepresentanteLegal.Split('-')[0]));
                        }
                        else
                        {
                            banco.AddParameter("id_fornecedor_socio_representante_qualificacao", DBNull.Value);
                        }

                        banco.ExecuteNonQuery(
                            @"INSERT fornecedor_socio (
								id_fornecedor, 
								nome, 
								id_fornecedor_socio_qualificacao, 
								nome_representante, 
								id_fornecedor_socio_representante_qualificacao
							) VALUES (
								@id_fornecedor, 
								@nome, 
								@id_fornecedor_socio_qualificacao, 
								@nome_representante, 
								@id_fornecedor_socio_representante_qualificacao
							)"                            );
                    }
                }

                banco.AddParameter("@id", id_fornecedor);
                banco.AddParameter("@controle", null);
                banco.AddParameter("@mensagem", null);

                banco.ExecuteNonQuery(@"update fornecedor set controle=@controle, mensagem=@mensagem where id=@id;");
            }

            return(id_fornecedor);
        }
        public static void CarregaSenadores()
        {
            //StringBuilder email = new StringBuilder();

            try
            {
                using (var banco = new Banco())
                {
                    banco.ExecuteNonQuery("UPDATE sf_senador SET ativo = 'N'");

                    using (var senado = new DataSet())
                    {
                        senado.ReadXml("http://legis.senado.gov.br/dadosabertos/senador/lista/atual");

                        using (var senadores = senado.Tables["IdentificacaoParlamentar"])
                        {
                            foreach (DataRow senador in senadores.Rows)
                            {
                                try
                                {
                                    banco.AddParameter("CodigoParlamentar", Convert.ToInt32(senador["CodigoParlamentar"]));
                                    banco.AddParameter("nome_parlamentar", Convert.ToString(senador["nome_parlamentar"]).ToUpper());
                                    banco.AddParameter("NomeCompletoParlamentar", Convert.ToString(senador["NomeCompletoParlamentar"]));
                                    banco.AddParameter("SexoParlamentar", Convert.ToString(senador["SexoParlamentar"])[0].ToString());
                                    banco.AddParameter("Url", Convert.ToString(senador["UrlPaginaParlamentar"]));
                                    banco.AddParameter("Foto", Convert.ToString(senador["UrlFotoParlamentar"]));
                                    banco.AddParameter("SiglaPartido", Convert.ToString(senador["SiglaPartidoParlamentar"]));
                                    banco.AddParameter("SiglaUf", Convert.ToString(senador["UfParlamentar"]));
                                    banco.AddParameter("EmailParlamentar", Convert.ToString(senador["EmailParlamentar"]));
                                    // Ao invés de gravar o fim do mandato grava o início
                                    //banco.AddParameter("MandatoAtual", Convert.ToDateTime(senador["MandatoAtual"]).AddYears(-9).ToString("yyyyMM"));
                                    banco.ExecuteNonQuery(
                                        @"INSERT INTO sf_senador (
											id, nome, nome_completo, sexo, url, foto, id_partido, id_estado, email, ativo
										) VALUES (
											@CodigoParlamentar, @nome_parlamentar, @NomeCompletoParlamentar, @SexoParlamentar, @Url, @Foto, 
											(SELECT id FROM partido where sigla like @SiglaPartido), (SELECT id FROM estado where sigla like @SiglaUf), 
											@EmailParlamentar, 'S'
										)"                                        );
                                }
                                catch
                                {
                                    banco.AddParameter("NomeCompletoParlamentar", Convert.ToString(senador["NomeCompletoParlamentar"]));
                                    banco.AddParameter("SexoParlamentar", Convert.ToString(senador["SexoParlamentar"])[0].ToString());
                                    banco.AddParameter("Url", Convert.ToString(senador["UrlPaginaParlamentar"]));
                                    banco.AddParameter("Foto", Convert.ToString(senador["UrlFotoParlamentar"]));
                                    banco.AddParameter("SiglaPartido", Convert.ToString(senador["SiglaPartidoParlamentar"]));
                                    banco.AddParameter("SiglaUf", Convert.ToString(senador["UfParlamentar"]));
                                    banco.AddParameter("EmailParlamentar", Convert.ToString(senador["EmailParlamentar"]));
                                    banco.AddParameter("CodigoParlamentar", Convert.ToInt32(senador["CodigoParlamentar"]));
                                    // Ao invés de gravar o fim do mandato grava o início
                                    //banco.AddParameter("MandatoAtual", Convert.ToDateTime(senador["MandatoAtual"]).AddYears(-9).ToString("yyyyMM"));
                                    banco.ExecuteNonQuery(
                                        @"UPDATE sf_senador SET 
											nome_completo = @NomeCompletoParlamentar
											, sexo = @SexoParlamentar
											, url = @Url
											, foto = @Foto
											, id_partido = (SELECT id FROM partido where sigla like @SiglaPartido)
											, id_estado = (SELECT id FROM estado where sigla like @SiglaUf)
											, email = @EmailParlamentar
											, ativo = 'S' 
										WHERE id = @CodigoParlamentar"                                        );
                                }
                            }
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }
        }
        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();
			        "            );
                }
            }
        }
Esempio n. 20
0
        private static string CarregaDadosCsv(string file, int ano)
        {
            var    sb             = new StringBuilder();
            string sResumoValores = string.Empty;

            int indice              = 0;
            int GABINETE            = indice++;
            int NOME_DEPUTADO       = indice++;
            int CPF_DEPUTADO        = indice++;
            int NOME_FORNECEDOR     = indice++;
            int CNPJ_CPF_FORNECEDOR = indice++;
            int DATA           = indice++;
            int DOCUMENTO      = indice++;
            int VALOR          = indice++;
            int CPF_FORNECEDOR = 0;
            int CLASSIFICACAO  = 0;

            if (ano == 2018 || ano == 2019)
            {
                indice              = 0;
                NOME_DEPUTADO       = indice++;
                CPF_DEPUTADO        = indice++;
                NOME_FORNECEDOR     = indice++;
                CNPJ_CPF_FORNECEDOR = indice++;
                CPF_FORNECEDOR      = indice++;
                DOCUMENTO           = indice++;
                DATA          = indice++;
                VALOR         = indice++;
                CLASSIFICACAO = indice++;
            }


            int linhaAtual = 0;

            using (var banco = new Banco())
            {
                //var lstHash = new Dictionary<string, long>();
                //using (var dReader = banco.ExecuteReader("select id, hash from sf_despesa where ano=" + ano))
                //{
                //    while (dReader.Read())
                //    {
                //        lstHash.Add(dReader["hash"].ToString(), Convert.ToInt64(dReader["id"]));
                //    }
                //}

                //using (var dReader = banco.ExecuteReader(string.Format("select sum(valor) as valor, count(1) as itens from cl_despesa where ano_mes between {0}01 and {0}12", 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;

                    using (var csv = new CsvReader(reader, System.Globalization.CultureInfo.CreateSpecificCulture("pt-BR")))
                    {
                        while (csv.Read())
                        {
                            //Id = csv.GetField<int>("Id")
                            //Name = csv.GetField("Name")

                            count++;

                            if (count == 1)
                            {
                                if (ano == 2013 || ano == 2014)
                                {
                                    if (
                                        (csv[GABINETE] != "Gabinete") ||
                                        (csv[NOME_DEPUTADO] != "Nome") ||
                                        (csv[CPF_DEPUTADO] != "CPF") ||
                                        (csv[NOME_FORNECEDOR] != "EMPRESA (OU PROFISSIONAL)") ||
                                        (csv[CNPJ_CPF_FORNECEDOR] != "CNPJ(ouCPF)") ||
                                        (csv[DATA] != "Data de Emissão") ||
                                        (csv[DOCUMENTO] != "NºDocumento") ||
                                        (csv[VALOR] != "Valor")
                                        )
                                    {
                                        throw new Exception("Mudança de integração detectada para o Câmara Legislativa do Distrito Federal");
                                    }
                                }
                                else if (ano == 2015)
                                {
                                    if (
                                        (csv[GABINETE] != "GAB") ||
                                        (csv[NOME_DEPUTADO] != "DEPUTADO") ||
                                        (csv[CPF_DEPUTADO] != "CPF") ||
                                        (csv[NOME_FORNECEDOR] != "LOCAL") ||
                                        (csv[CNPJ_CPF_FORNECEDOR] != "CNPJ") ||
                                        (csv[DATA] != "DATA") ||
                                        (csv[DOCUMENTO] != "NUMERO") ||
                                        (csv[VALOR] != "VALOR")
                                        )
                                    {
                                        throw new Exception("Mudança de integração detectada para o Câmara Legislativa do Distrito Federal");
                                    }
                                }
                                else if (ano == 2016 || ano == 2017)
                                {
                                    if (
                                        (csv[GABINETE] != "Gabinete") ||
                                        (csv[NOME_DEPUTADO] != "Nome") ||
                                        (csv[CPF_DEPUTADO] != "CPF") ||
                                        (csv[NOME_FORNECEDOR].ToUpper() != "EMPRESA (OU PROFISSIONAL)") ||
                                        (csv[CNPJ_CPF_FORNECEDOR] != "CNPJ (ou CPF)") ||
                                        (csv[DATA] != "Data de Emissão") ||
                                        (csv[DOCUMENTO] != "Nº Documento") ||
                                        (csv[VALOR].Trim() != "Valor")
                                        )
                                    {
                                        throw new Exception("Mudança de integração detectada para o Câmara Legislativa do Distrito Federal");
                                    }
                                }
                                else if (ano == 2018)
                                {
                                    if (
                                        (csv[NOME_DEPUTADO] != "Nome do(a) Deputado(a)") ||
                                        (csv[CPF_DEPUTADO] != "CPF do(a) Deputado(a)") ||
                                        (csv[NOME_FORNECEDOR] != "Nome do Estabelecimento") ||
                                        (csv[CNPJ_CPF_FORNECEDOR] != "CNPJ") ||
                                        (csv[CPF_FORNECEDOR] != "CPF") ||
                                        (csv[DOCUMENTO] != "No.  do Recibo ou NF") ||
                                        (csv[DATA] != "Data do Recibo") ||
                                        (csv[VALOR] != "Valor") ||
                                        (csv[CLASSIFICACAO] != "Classificação")
                                        )
                                    {
                                        throw new Exception("Mudança de integração detectada para o Câmara Legislativa do Distrito Federal");
                                    }
                                }
                                else if (ano == 2019)
                                {
                                    if (
                                        (csv[NOME_DEPUTADO] != "Nome do(a) Deputado(a)") ||
                                        (csv[CPF_DEPUTADO] != "CPF do(a) Deputado(a)") ||
                                        (csv[NOME_FORNECEDOR] != "Nome do Estabelecimento") ||
                                        (csv[CNPJ_CPF_FORNECEDOR] != "CNPJ") ||
                                        (csv[CPF_FORNECEDOR] != "CPF") ||
                                        (csv[DOCUMENTO] != "N°  do Recibo ou Nota Fiscal") ||
                                        (csv[DATA] != "Data do Recibo/NF") ||
                                        (csv[VALOR] != "Valor") ||
                                        (csv[CLASSIFICACAO] != "Classificação")
                                        )
                                    {
                                        throw new Exception("Mudança de integração detectada para o Câmara Legislativa do Distrito Federal");
                                    }
                                }

                                // Pular linha de titulo
                                continue;
                            }

                            if (string.IsNullOrEmpty(csv[NOME_DEPUTADO]))
                            {
                                continue;                                           //Linha vazia
                            }
                            banco.AddParameter("Nome", csv[NOME_DEPUTADO].Replace("Deputado", "").Replace("Deputada", ""));
                            banco.AddParameter("CPF", !string.IsNullOrEmpty(csv[CPF_DEPUTADO]) ? Utils.RemoveCaracteresNaoNumericos(csv[CPF_DEPUTADO]) : "");
                            banco.AddParameter("Empresa", csv[NOME_FORNECEDOR].Trim().Replace("NÃO INFORMADO", "").Replace("DOCUMENTO DANIFICADO", "").Replace("não consta documento", "").Trim());

                            string cnpj_cpf = "";
                            if (ano < 2018)
                            {
                                if (!string.IsNullOrEmpty(csv[CNPJ_CPF_FORNECEDOR]))
                                {
                                    cnpj_cpf = Utils.RemoveCaracteresNaoNumericos(csv[CNPJ_CPF_FORNECEDOR]);
                                }
                            }
                            else
                            {
                                if (!string.IsNullOrEmpty(csv[CNPJ_CPF_FORNECEDOR]))
                                {
                                    cnpj_cpf = Utils.RemoveCaracteresNaoNumericos(csv[CNPJ_CPF_FORNECEDOR]);
                                }
                                else if (!string.IsNullOrEmpty(csv[CNPJ_CPF_FORNECEDOR]))
                                {
                                    cnpj_cpf = Utils.RemoveCaracteresNaoNumericos(csv[CPF_FORNECEDOR]);
                                }
                            }
                            banco.AddParameter("CNPJ_CPF", cnpj_cpf);

                            DateTime data;
                            if (DateTime.TryParse(csv[DATA], out data))
                            {
                                banco.AddParameter("DataEmissao", data);
                            }
                            else
                            {
                                // Quando a data não estiver difinida colocamos no feriado;
                                banco.AddParameter("DataEmissao", new DateTime(ano, 1, 1));
                            }

                            banco.AddParameter("Documento", csv[DOCUMENTO]);

                            string valor = csv[VALOR];

                            // Valor 1.500.00 é na verdade 1.500,00
                            Regex myRegex = new Regex(@"\.(\d\d$)", RegexOptions.Singleline);
                            if (myRegex.IsMatch(valor))
                            {
                                valor = myRegex.Replace(valor, @",$1");
                            }

                            try
                            {
                                banco.AddParameter("Valor", !string.IsNullOrEmpty(valor) ? (object)Convert.ToDouble(valor) : 0);
                            }
                            catch (Exception)
                            {
                                if (valor.EndsWith("."))
                                {
                                    valor = valor.Substring(0, valor.Length - 1).Trim();
                                }

                                valor = valor.Replace(" ", "");

                                banco.AddParameter("Valor", !string.IsNullOrEmpty(valor) ? (object)Convert.ToDouble(valor) : 0);
                            }


                            //string hash = banco.ParametersHash();
                            //if (lstHash.Remove(hash))
                            //{
                            //    banco.ClearParameters();
                            //    continue;
                            //}

                            //banco.AddParameter("hash", hash);

                            if (ano < 2018)
                            {
                                banco.AddParameter("TipoDespesa", DBNull.Value);
                            }
                            else
                            {
                                banco.AddParameter("TipoDespesa", csv[CLASSIFICACAO]);
                            }

                            if (string.IsNullOrEmpty(cnpj_cpf))
                            {
                                banco.AddParameter("Observacao", csv[NOME_FORNECEDOR]);
                            }
                            else if (!Regex.IsMatch(cnpj_cpf, @"\d"))
                            {
                                banco.AddParameter("Observacao", cnpj_cpf + " - " + csv[NOME_FORNECEDOR]);
                            }
                            else
                            {
                                banco.AddParameter("Observacao", DBNull.Value);
                            }

                            banco.AddParameter("Ano", ano);

                            banco.ExecuteNonQuery(
                                @"INSERT INTO cl_despesa_temp (
								Nome, CPF, Empresa, CNPJ_CPF, DataEmissao, Documento, Valor, TipoDespesa, Observacao, Ano
							) VALUES (
								@Nome, @CPF, @Empresa, @CNPJ_CPF, @DataEmissao, @Documento, @Valor, @TipoDespesa, @Observacao, @Ano
							)"                            );
                        }
                    }


                    //             while (!reader.EndOfStream)
                    //             {
                    //                 count++;

                    //                 var linha = reader.ReadLine();
                    //                 if (string.IsNullOrEmpty(linha))
                    //                     continue;

                    //                 if (ano != 2016 && ano != 2018 && ano != 2019)
                    //                 {
                    //                     while (!linha.EndsWith(";"))
                    //                     {
                    //                         linha += reader.ReadLine();
                    //                     }
                    //                 }
                    //                 else
                    //                 {
                    //                     if (linha.Split(new[] { ";" }, StringSplitOptions.None).Length < 8)
                    //                     {
                    //                         linha += reader.ReadLine();
                    //                     }
                    //                 }

                    //                 if (string.IsNullOrEmpty(linha) || linha == ";;;;;;;;") continue;

                    //                 linha = linha.Replace("B ; M 10 PRODUÇÕES LTDA ME", "B & M 10 PRODUÇÕES LTDA ME");

                    //                 var valores = linha.Split(new[] { ";" }, StringSplitOptions.None).ToList();

                    //                 if (count == 1)
                    //                 {
                    //                     if (ano == 2013 || ano == 2014)
                    //                     {
                    //                         if (
                    //                             (valores[GABINETE] != "Gabinete") ||
                    //                             (valores[NOME_DEPUTADO] != "Nome") ||
                    //                             (valores[CPF_DEPUTADO] != "CPF") ||
                    //                             (valores[NOME_FORNECEDOR] != "EMPRESA (OU PROFISSIONAL)") ||
                    //                             (valores[CNPJ_CPF_FORNECEDOR] != "CNPJ(ouCPF)") ||
                    //                             (valores[DATA] != "Data de Emissão") ||
                    //                             (valores[DOCUMENTO] != "NºDocumento") ||
                    //                             (valores[VALOR] != "Valor")
                    //                         )
                    //                         {
                    //                             throw new Exception("Mudança de integração detectada para o Câmara Legislativa do Distrito Federal");
                    //                         }
                    //                     }
                    //                     else if (ano == 2015)
                    //                     {
                    //                         if (
                    //                             (valores[GABINETE] != "GAB") ||
                    //                             (valores[NOME_DEPUTADO] != "DEPUTADO") ||
                    //                             (valores[CPF_DEPUTADO] != "CPF") ||
                    //                             (valores[NOME_FORNECEDOR] != "LOCAL") ||
                    //                             (valores[CNPJ_CPF_FORNECEDOR] != "CNPJ") ||
                    //                             (valores[DATA] != "DATA") ||
                    //                             (valores[DOCUMENTO] != "NUMERO") ||
                    //                             (valores[VALOR] != "VALOR")
                    //                         )
                    //                         {
                    //                             throw new Exception("Mudança de integração detectada para o Câmara Legislativa do Distrito Federal");
                    //                         }
                    //                     }
                    //                     else if (ano == 2016 || ano == 2017)
                    //                     {
                    //                         if (
                    //                             (valores[GABINETE] != "Gabinete") ||
                    //                             (valores[NOME_DEPUTADO] != "Nome") ||
                    //                             (valores[CPF_DEPUTADO] != "CPF") ||
                    //                             (valores[NOME_FORNECEDOR].ToUpper() != "EMPRESA (OU PROFISSIONAL)") ||
                    //                             (valores[CNPJ_CPF_FORNECEDOR] != "CNPJ (ou CPF)") ||
                    //                             (valores[DATA] != "Data de Emissão") ||
                    //                             (valores[DOCUMENTO] != "Nº Documento") ||
                    //                             (valores[VALOR].Trim() != "Valor")
                    //                         )
                    //                         {
                    //                             throw new Exception("Mudança de integração detectada para o Câmara Legislativa do Distrito Federal");
                    //                         }
                    //                     }
                    //                     else if (ano == 2018)
                    //                     {
                    //                         if (
                    //                             (valores[NOME_DEPUTADO] != "Nome do(a) Deputado(a)") ||
                    //                             (valores[CPF_DEPUTADO] != "CPF do(a) Deputado(a)") ||
                    //                             (valores[NOME_FORNECEDOR] != "Nome do Estabelecimento") ||
                    //                             (valores[CNPJ_CPF_FORNECEDOR] != "CNPJ") ||
                    //                             (valores[CPF_FORNECEDOR] != "CPF") ||
                    //                             (valores[DOCUMENTO] != "No.  do Recibo ou NF") ||
                    //                             (valores[DATA] != "Data do Recibo") ||
                    //                             (valores[VALOR] != "Valor") ||
                    //                             (valores[CLASSIFICACAO] != "Classificação")
                    //                         )
                    //                         {
                    //                             throw new Exception("Mudança de integração detectada para o Câmara Legislativa do Distrito Federal");
                    //                         }
                    //                     }
                    //                     else if (ano == 2019)
                    //                     {
                    //                         if (
                    //                             (valores[NOME_DEPUTADO] != "Nome do(a) Deputado(a)") ||
                    //                             (valores[CPF_DEPUTADO] != "CPF do(a) Deputado(a)") ||
                    //                             (valores[NOME_FORNECEDOR] != "Nome do Estabelecimento") ||
                    //                             (valores[CNPJ_CPF_FORNECEDOR] != "CNPJ") ||
                    //                             (valores[CPF_FORNECEDOR] != "CPF") ||
                    //                             (valores[DOCUMENTO] != "N°  do Recibo ou Nota Fiscal") ||
                    //                             (valores[DATA] != "Data do Recibo/NF") ||
                    //                             (valores[VALOR] != "Valor") ||
                    //                             (valores[CLASSIFICACAO] != "Classificação")
                    //                         )
                    //                         {
                    //                             throw new Exception("Mudança de integração detectada para o Câmara Legislativa do Distrito Federal");
                    //                         }
                    //                     }

                    //                     // Pular linha de titulo
                    //                     continue;
                    //                 }

                    //                 for (int i = 0; i < valores.Count; i++)
                    //                 {
                    //                     valores[i] = valores[i].Trim();

                    //                     if (valores[i].StartsWith("\""))
                    //                     {
                    //                         valores[i] = valores[i].Substring(1, valores[i].Length - 2).Trim();
                    //                     }
                    //                 }

                    //                 banco.AddParameter("Nome", valores[NOME_DEPUTADO].Replace("Deputado", "").Replace("Deputada", ""));
                    //                 banco.AddParameter("CPF", !string.IsNullOrEmpty(valores[CPF_DEPUTADO]) ? Utils.RemoveCaracteresNaoNumericos(valores[CPF_DEPUTADO]) : "");
                    //                 banco.AddParameter("Empresa", valores[NOME_FORNECEDOR].Replace("DOCUMENTO DANIFICADO", "").Trim());

                    //                 string cnpj_cpf = "";
                    //                 if (ano < 2018)
                    //                 {
                    //                     if (!string.IsNullOrEmpty(valores[CNPJ_CPF_FORNECEDOR]))
                    //                     {
                    //                         cnpj_cpf = Utils.RemoveCaracteresNaoNumericos(valores[CNPJ_CPF_FORNECEDOR]);
                    //                     }
                    //                 }
                    //                 else
                    //                 {
                    //                     if (!string.IsNullOrEmpty(valores[CNPJ_CPF_FORNECEDOR]))
                    //                     {
                    //                         cnpj_cpf = Utils.RemoveCaracteresNaoNumericos(valores[CNPJ_CPF_FORNECEDOR]);
                    //                     }
                    //                     else if (!string.IsNullOrEmpty(valores[CNPJ_CPF_FORNECEDOR]))
                    //                     {
                    //                         cnpj_cpf = Utils.RemoveCaracteresNaoNumericos(valores[CPF_FORNECEDOR]);
                    //                     }
                    //                 }
                    //                 banco.AddParameter("CNPJ_CPF", cnpj_cpf);

                    //                 DateTime data;
                    //                 if (DateTime.TryParse(valores[DATA], out data))
                    //                 {
                    //                     banco.AddParameter("DataEmissao", data);
                    //                 }
                    //                 else
                    //                 {
                    //                     // Quando a data não estiver difinida colocamos no feriado;
                    //                     banco.AddParameter("DataEmissao", new DateTime(ano, 1, 1));
                    //                 }

                    //                 banco.AddParameter("Documento", valores[DOCUMENTO]);

                    //                 if (valores[VALOR].EndsWith(".00"))
                    //                 {
                    //                     // Valor 1.500.00 é na verdade 1.500,00
                    //                     valores[VALOR] = valores[VALOR].Substring(0, valores[VALOR].Length - 3).Trim();
                    //                 }

                    //                 try
                    //                 {
                    //                     banco.AddParameter("Valor", !string.IsNullOrEmpty(valores[VALOR]) ? (object)Convert.ToDouble(valores[VALOR]) : 0);
                    //                 }
                    //                 catch (Exception e)
                    //                 {
                    //                     if (valores[VALOR].EndsWith("."))
                    //                     {
                    //                         valores[VALOR] = valores[VALOR].Substring(0, valores[VALOR].Length - 1).Trim();
                    //                     }

                    //                     valores[VALOR] = valores[VALOR].Replace(" ", "");

                    //                     banco.AddParameter("Valor", !string.IsNullOrEmpty(valores[VALOR]) ? (object)Convert.ToDouble(valores[VALOR]) : 0);
                    //                 }


                    //                 //string hash = banco.ParametersHash();
                    //                 //if (lstHash.Remove(hash))
                    //                 //{
                    //                 //    banco.ClearParameters();
                    //                 //    continue;
                    //                 //}

                    //                 //banco.AddParameter("hash", hash);

                    //                 if (ano < 2018)
                    //                 {
                    //                     banco.AddParameter("TipoDespesa", DBNull.Value);
                    //                 }
                    //                 else
                    //                 {
                    //                     banco.AddParameter("TipoDespesa", valores[CLASSIFICACAO]);
                    //                 }

                    //                 if (string.IsNullOrEmpty(cnpj_cpf))
                    //                 {
                    //                     banco.AddParameter("Observacao", valores[NOME_FORNECEDOR]);
                    //                 }
                    //                 else if (!Regex.IsMatch(cnpj_cpf, @"\d"))
                    //                 {
                    //                     banco.AddParameter("Observacao", cnpj_cpf + " - " + valores[NOME_FORNECEDOR]);
                    //                 }
                    //                 else
                    //                 {
                    //                     banco.AddParameter("Observacao", DBNull.Value);
                    //                 }

                    //                 banco.ExecuteNonQuery(
                    //                     @"INSERT INTO cl_despesa_temp (
                    //	Nome, CPF, Empresa, CNPJ_CPF, DataEmissao, Documento, Valor, TipoDespesa, Observacao
                    //) VALUES (
                    //	@Nome, @CPF, @Empresa, @CNPJ_CPF, @DataEmissao, @Documento, @Valor, @TipoDespesa, @Observacao
                    //)");

                    //             }

                    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)
                //{
                //    string lstExcluir = lstHash.Aggregate("", (keyString, pair) => keyString + "," + pair.Value);
                //    banco.ExecuteNonQuery(string.Format("delete from sf_despesa where id IN({0})", lstExcluir.Substring(1)));

                //    Console.WriteLine("Registros para exluir: " + lstHash.Count);
                //    sb.AppendFormat("<p>{0} registros excluidos</p>", lstHash.Count);
                //}

                //sb.Append(ProcessarDespesasTemp(banco));
            }



            //if (ano == DateTime.Now.Year)
            //{
            //    //AtualizaCampeoesGastos();
            //    //AtualizaResumoMensal();
            //    AtualizaValorTotal();
            //}

            //using (var banco = new Banco())
            //{
            //    using (var dReader = banco.ExecuteReader(string.Format("select sum(valor) as valor, count(1) as itens from cl_despesa where ano_mes between {0}01 and {0}12", 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());
        }
        private static void InsereDespesaFinalParcial(Banco banco)
        {
            var dt = banco.GetTable(
                @"DROP TABLE IF EXISTS table_in_memory_d;
                CREATE TEMPORARY TABLE table_in_memory_d
                AS (
	                select id_sf_senador, mes, sum(valor) as total
	                from sf_despesa d
	                where ano = 2017
	                GROUP BY id_sf_senador, mes
                );

                DROP TABLE IF EXISTS table_in_memory_dt;
                CREATE TEMPORARY TABLE table_in_memory_dt
                AS (
	                select p.id as id_sf_senador, mes, sum(valor_reembolsado) as total
	                from sf_despesa_temp d
                    inner join sf_senador p on p.nome = d.senador
	                GROUP BY p.id, mes
                );

                select dt.id_sf_senador, dt.mes
                from table_in_memory_dt dt
                left join table_in_memory_d d on dt.id_sf_senador = d.id_sf_senador and dt.mes = d.mes
                where (d.id_sf_senador is null or d.total <> dt.total)
                order by d.id_sf_senador, d.mes;
			    "            , 3600);

            foreach (DataRow dr in dt.Rows)
            {
                banco.AddParameter("id_sf_senador", dr["id_sf_senador"]);
                banco.AddParameter("mes", dr["mes"]);
                banco.ExecuteNonQuery(@"DELETE FROM sf_despesa WHERE id_sf_senador=@id_sf_senador and mes=@mes");

                banco.AddParameter("id_sf_senador", dr["id_sf_senador"]);
                banco.AddParameter("mes", dr["mes"]);
                banco.ExecuteNonQuery(@"
				        INSERT INTO sf_despesa (
					        id_sf_senador,
					        id_sf_despesa_tipo,
					        id_fornecedor,
					        ano_mes,
					        ano,
					        mes,
					        documento,
					        data_documento,
					        detalhamento,
					        valor
				        )
				        SELECT 
					        d.id,
					        dt.id,
					        f.id,
					        concat(ano, LPAD(mes, 2, '0')),
					        d.ano,
					        d.mes,
					        d.documento,
					        d.`data`,
					        d.detalhamento,
					        d.valor_reembolsado
					    from (
						    select d.*, p.id					        
						    from sf_despesa_temp d
                            inner join sf_senador p on p.nome = d.senador
						    WHERE p.id=@id_sf_senador and mes=@mes
					    ) d
				        inner join sf_despesa_tipo dt on dt.descricao = d.tipo_despesa
				        inner join fornecedor f on f.cnpj_cpf = d.cnpj_cpf;
			        "            , 3600);
            }
        }
Esempio n. 22
0
        public async void AdicionarComentario(DenunciaComentarioDTO value, string userId, string userFullName)
        {
            string codigoDenuncia, situacaoDenuncia, cnpjCpf, razaoSocial;
            var    lstDestinatarios = new List <MailAddress>();

            using (var banco = new Banco())
            {
                banco.AddParameter("id", value.id_denuncia);
                using (var reader = banco.ExecuteReader(
                           @"select d.codigo, d.situacao, f.cnpj_cpf, f.nome as razao_social from denuncia d
                    inner join fornecedor f on f.id = d.id_fornecedor
                    where d.id=@id;"))
                {
                    if (reader.Read())
                    {
                        codigoDenuncia   = reader["codigo"].ToString();
                        situacaoDenuncia = reader["situacao"].ToString();
                        cnpjCpf          = reader["cnpj_cpf"].ToString();
                        razaoSocial      = reader["razao_social"].ToString();
                    }
                    else
                    {
                        throw new BusinessException("Não foi possivel localizar a denúncia para adicionar seu comentário!");
                    }
                }

                if (!string.IsNullOrEmpty(value.situacao) && situacaoDenuncia != value.situacao)
                {
                    using (var repository = new AuthRepository())
                    {
                        var bRevisor = repository.IsInRoleAsync(userId, "Revisor");
                        if (bRevisor.Result)
                        {
                            banco.AddParameter("situacao", value.situacao);
                            banco.AddParameter("id_user_auditoria", userId);
                            banco.AddParameter("id", value.id_denuncia);
                            banco.ExecuteNonQuery(
                                @"update denuncia set 
                                    situacao=@situacao, 
                                    id_user_auditoria=@id_user_auditoria, 
                                    data_auditoria=NOW() 
                                where id=@id");
                        }
                    }

                    var situacaoDescricao = "";
                    switch (value.situacao)
                    {
                    case "A":
                        situacaoDescricao = "Aguardando Revisão";
                        break;

                    case "I":
                        situacaoDescricao = "Pendente Informação";
                        break;

                    case "P":
                        situacaoDescricao = "Caso Duvidoso";
                        break;

                    case "D":
                        situacaoDescricao = "Caso Dossiê";
                        break;

                    case "R":
                        situacaoDescricao = "Caso Repetido";
                        break;

                    case "N":
                        situacaoDescricao = "Não Procede";
                        break;
                    }
                    value.texto += " [Situação alterada para " + situacaoDescricao + "]";
                }

                banco.AddParameter("id", Guid.NewGuid().ToString());
                banco.AddParameter("id_denuncia", value.id_denuncia);
                banco.AddParameter("id_user", userId);
                banco.AddParameter("texto", value.texto);
                banco.ExecuteNonQuery(
                    @"INSERT INTO denuncia_mensagem (id, id_denuncia, id_user, data, texto) 
                        VALUES (@id, @id_denuncia, @id_user, NOW(), @texto);");


                banco.AddParameter("id", value.id_denuncia);
                banco.AddParameter("id_user", userId);
                using (var reader = banco.ExecuteReader(
                           @"SELECT u.Email, u.Fullname FROM (
	                    SELECT id_user_denuncia as id_user 
	                    FROM denuncia
	                    WHERE id=@id
	                    union
	                    SELECT id_user_auditoria FROM denuncia
	                    WHERE id=@id
	                    union
	                    SELECT id_user FROM denuncia_mensagem
	                    WHERE id_denuncia=@id
                    ) d
                    inner join users u on u.id = d.id_user
                    where u.id <> @id_user;"))
                {
                    while (reader.Read())
                    {
                        lstDestinatarios.Add(new MailAddress(reader["Email"].ToString(), reader["Fullname"].ToString()));
                    }
                }
            }

            if (lstDestinatarios.Count > 0)
            {
                StringBuilder corpo = new StringBuilder();

                corpo.Append(@"<html><head><title>O.P.S.</title></head><body><table width=""100%""><tr><td><center><h3>O.P.S. - Operação Política Supervisionada</h3></center></td></tr><tr><td><i>Um novo comentário foi adicionado a sua denúncia.</i></td></tr><tr><td><table><tr><td valign=""top""><b>Denúncia:</b></td><td>");
                corpo.AppendFormat(@"<a href=""http://www.ops.net.br/denuncia/{0}"">{1}</a></td></tr>", value.id_denuncia, codigoDenuncia);
                corpo.AppendFormat(@"<tr><td valign=""top""><b>Fornecedor:</b></td><td>{0} - {1}</td></tr>", cnpjCpf, razaoSocial);
                corpo.AppendFormat(@"<tr><td valign=""top""><b>Usuário:</b></td><td>{0}</td></tr>", userFullName);
                corpo.AppendFormat(@"<tr><td valign=""top""><b>Texto:</b></td><td>{0}</td></tr></table></td></tr></table></body></html>", value.texto);

                foreach (MailAddress destinatario in lstDestinatarios)
                {
                    await Utils.SendMailAsync(destinatario, "[O.P.S.] Novo Comentário", corpo.ToString());
                }
            }
        }
        public string Salvar(Auditoria auditoria)
        {
            int?userId;

            try
            {
                var identity = (ClaimsIdentity)User.Identity;
                userId = Convert.ToInt32(identity.FindFirst("UserId").Value);
            }
            catch (Exception)
            {
                userId = null;
            }

            using (var banco = new Banco())
            {
                int id_mcf_auditoria;
                banco.BeginTransaction();

                if (!string.IsNullOrEmpty(auditoria.codigo))
                {
                    banco.AddParameter("codigo", auditoria.codigo);
                    var id = banco.ExecuteScalar(@"select id from mcf_auditoria where codigo = @codigo");

                    if (Convert.IsDBNull(id))
                    {
                        auditoria.codigo = null;
                        return(Salvar(auditoria));
                    }
                    id_mcf_auditoria = Convert.ToInt32(id);

                    banco.AddParameter("codigo", auditoria.codigo);
                    banco.AddParameter("id_user", userId);
                    banco.AddParameter("id_estado", auditoria.estado);
                    banco.AddParameter("cidade", auditoria.cidade);
                    banco.AddParameter("link_portal", auditoria.link_portal);
                    banco.AddParameter("id", id_mcf_auditoria);

                    banco.ExecuteNonQuery(
                        @"UPDATE mcf_auditoria SET 
							codigo = @codigo, id_user = @id_user, id_estado = @id_estado, cidade = @cidade, link_portal = @link_portal 
						WHERE id = @id;"                        );

                    banco.AddParameter("id_mcf_auditoria", id_mcf_auditoria);
                    banco.ExecuteNonQuery(@"delete from mcf_auditoria_item where id_mcf_auditoria = @id_mcf_auditoria");
                }
                else
                {
                    auditoria.codigo = Guid.NewGuid().ToString();

                    banco.AddParameter("codigo", auditoria.codigo);
                    banco.AddParameter("id_user", userId);
                    banco.AddParameter("id_estado", auditoria.estado);
                    banco.AddParameter("cidade", auditoria.cidade);
                    banco.AddParameter("link_portal", auditoria.link_portal);

                    var id = banco.ExecuteScalar(
                        @"INSERT INTO mcf_auditoria (
						codigo, id_user, data_criacao, data_geracao_denuncia, id_estado, cidade, link_portal
					) VALUES (
						@codigo, @id_user, NOW(), NULL, @id_estado, @cidade, @link_portal
					);
					SELECT LAST_INSERT_ID();"                    );

                    id_mcf_auditoria = Convert.ToInt32(id);
                }

                foreach (var grupo in auditoria.grupos)
                {
                    foreach (var item in grupo.itens)
                    {
                        banco.AddParameter("id_mcf_auditoria", id_mcf_auditoria);
                        banco.AddParameter("id_mcf_id_transparencia_item", item.id);
                        banco.AddParameter("id_mcf_id_transparencia_item_situacao", item.situacao);
                        banco.AddParameter("indicio_de_prova", item.indicio_de_prova);

                        banco.ExecuteScalar(
                            @"INSERT INTO mcf_auditoria_item (
								id_mcf_auditoria, id_mcf_id_transparencia_item, id_mcf_id_transparencia_item_situacao, indicio_de_prova
							) VALUES (
								@id_mcf_auditoria, @id_mcf_id_transparencia_item, @id_mcf_id_transparencia_item_situacao, @indicio_de_prova
							);"                            );
                    }
                }

                foreach (var signatario in auditoria.signatarios)
                {
                    banco.AddParameter("nome", signatario.nome_completo);
                    banco.AddParameter("cpf", signatario.cpf);
                    banco.AddParameter("rg", signatario.rg);
                    banco.AddParameter("nacionalidade", signatario.nacionalidade);
                    banco.AddParameter("estado_civil", signatario.estado_civil);
                    banco.AddParameter("profissao", signatario.profissao);
                    banco.AddParameter("cep", signatario.cep);
                    banco.AddParameter("endereco", signatario.endereco);
                    banco.AddParameter("bairro", signatario.bairro);
                    banco.AddParameter("cidade", signatario.cidade);
                    banco.AddParameter("id_estado", signatario.estado);
                    banco.AddParameter("email", signatario.email);

                    var id_mcf_signatario = banco.ExecuteScalar(
                        @"INSERT INTO mcf_signatario (
								nome, cpf, rg, nacionalidade, estado_civil, profissao, cep, endereco, bairro, cidade, id_estado, email
							) VALUES (
								@nome, @cpf, @rg, @nacionalidade, @estado_civil, @profissao, @cep, @endereco, @bairro, @cidade, @id_estado, @email
							);
							SELECT LAST_INSERT_ID();"                            );

                    banco.AddParameter("id_mcf_auditoria", id_mcf_auditoria);
                    banco.AddParameter("id_mcf_signatario", Convert.ToInt32(id_mcf_signatario));

                    banco.ExecuteScalar(
                        @"INSERT INTO mcf_auditoria_signatario (
								id_mcf_auditoria, id_mcf_signatario
							) VALUES (
								@id_mcf_auditoria, @id_mcf_signatario
							);"                            );
                }

                banco.CommitTransaction();
            }

            return(auditoria.codigo);
        }
Esempio n. 24
0
        public dynamic Consultar(FiltroDenunciaDTO filtro, string userId)
        {
            using (var banco = new Banco())
            {
                var strSql = new StringBuilder();
                strSql.AppendLine(@"
					SELECT SQL_CALC_FOUND_ROWS
	                    d.id as id_denuncia,
	                    d.codigo,
                        f.cnpj_cpf,
                        f.nome as nome_fornecedor,
                        ud.FullName as nome_usuario_denuncia,
                        d.data_denuncia,
                        case d.situacao 
							when 'A' then 'Aguardando Revisão'
                            when 'I' then 'Pendente Informação'
                            when 'P' then 'Caso Duvidoso'
                            when 'D' then 'Caso Dossiê'
                            when 'R' then 'Caso Repetido'
                            when 'N' then 'Não Procede'
						end as situacao,
                        d.data_auditoria,
                        ua.FullName as nome_usuario_auditoria
                    FROM denuncia d
                    inner join fornecedor f on f.id = d.id_fornecedor
                    inner join users ud on ud.id = d.id_user_denuncia
                    inner join users ua on ua.id = d.id_user_auditoria
                    WHERE (1=1)
				"                );

                using (var repository = new AuthRepository())
                {
                    var bRevisor = repository.IsInRoleAsync(userId, "Revisor");
                    if (!bRevisor.Result)
                    {
                        banco.AddParameter("id_user_denuncia", userId);
                        strSql.AppendFormat(" AND d.id_user_denuncia like @id_user_denuncia ");
                    }
                }

                var lstSituacoes = new List <string>();
                if (filtro.AguardandoRevisao)
                {
                    lstSituacoes.Add("'A'");
                }
                if (filtro.PendenteInformacao)
                {
                    lstSituacoes.Add("'I'");
                }
                if (filtro.Duvidoso)
                {
                    lstSituacoes.Add("'P'");
                }
                if (filtro.Dossie)
                {
                    lstSituacoes.Add("'D'");
                }
                if (filtro.Repetido)
                {
                    lstSituacoes.Add("'R'");
                }
                if (filtro.NaoProcede)
                {
                    lstSituacoes.Add("'N'");
                }

                if (lstSituacoes.Count > 0)
                {
                    strSql.AppendFormat(" AND d.situacao in({0}) ", string.Join(",", lstSituacoes));
                }

                strSql.AppendFormat("ORDER BY {0} ",
                                    string.IsNullOrEmpty(filtro.sorting) ? "id_denuncia ASC" : Utils.MySqlEscape(filtro.sorting));
                strSql.AppendFormat("LIMIT {0},{1}; ", (filtro.page - 1) * filtro.count, filtro.count);

                strSql.AppendLine("SELECT FOUND_ROWS(); ");

                var lstRetorno = new List <dynamic>();
                using (var reader = banco.ExecuteReader(strSql.ToString()))
                {
                    while (reader.Read())
                    {
                        lstRetorno.Add(new
                        {
                            id_denuncia            = reader["id_denuncia"],
                            codigo                 = reader["codigo"],
                            cnpj_cpf               = reader["cnpj_cpf"].ToString(),
                            nome_fornecedor        = reader["nome_fornecedor"].ToString(),
                            nome_usuario_denuncia  = reader["nome_usuario_denuncia"].ToString(),
                            data_denuncia          = Utils.FormataDataHora(reader["data_denuncia"]),
                            situacao               = reader["situacao"].ToString(),
                            data_auditoria         = Utils.FormataDataHora(reader["data_auditoria"]),
                            nome_usuario_auditoria = reader["nome_usuario_auditoria"].ToString()
                        });
                    }

                    reader.NextResult();
                    reader.Read();

                    return(new
                    {
                        total_count = reader[0],
                        results = lstRetorno
                    });
                }
            }
        }
Esempio n. 25
0
        public DenunciaModel Consultar(string value)
        {
            string strSqlDenuncia = @"SELECT 
	                        d.id as id_denuncia,
                            d.codigo,
                            d.id_fornecedor,
                            f.cnpj_cpf,
                            f.nome as nome_fornecedor,
                            ud.FullName as nome_usuario_denuncia,
                            d.data_denuncia,
                            d.texto,
                            d.anexo,
                            d.situacao,
                            case d.situacao 
							    when 'A' then 'Aguardando Revisão'
                                when 'I' then 'Pendente Informação'
                                when 'P' then 'Caso Duvidoso'
                                when 'D' then 'Caso Dossiê'
                                when 'R' then 'Caso Repetido'
                                when 'N' then 'Não Procede'
						    end as situacao_descricao,
                            d.data_auditoria,
                            ua.FullName as nome_usuario_auditoria
                        FROM denuncia d
                        inner join fornecedor f on f.id = d.id_fornecedor
                        inner join users ud on ud.id = d.id_user_denuncia
                        inner join users ua on ua.id = d.id_user_auditoria
                        where d.id = @id;";

            string strSqlDenunciaAnexo = @"SELECT 
	                        da.id,
                            ud.FullName as nome_usuario,
                            da.data,
                            da.nome_arquivo
                        FROM denuncia_anexo da
                        inner join users ud on ud.id = da.id_user
                        where id_denuncia = @id;";

            string strSqlDenunciaMensagem = @"SELECT dm.id,
                            ud.FullName as nome_usuario,
                            dm.data,
                            dm.texto
                        FROM denuncia_mensagem dm
                        inner join users ud on ud.id = dm.id_user
                        where id_denuncia = @id;";

            //TODO: Quem possui o link pode interragir na denuncia?
            //using (var repository = new AuthRepository())
            //{
            //    var bRevisor = repository.IsInRoleAsync(userId, "Revisor");
            //    if (!bRevisor.Result)
            //    {
            //        banco.AddParameter("id_user_denuncia", userId);
            //        strSql.AppendFormat(" AND d.id_user_denuncia like @id_user_denuncia ");
            //    }
            //}

            using (var banco = new Banco())
            {
                DenunciaModel denuncia;

                banco.AddParameter("id", value);
                using (var reader = banco.ExecuteReader(strSqlDenuncia))
                {
                    if (reader.Read())
                    {
                        denuncia = new DenunciaModel()
                        {
                            id_denuncia           = reader["id_denuncia"].ToString(),
                            codigo                = Convert.ToInt32(reader["codigo"]),
                            cnpj_cpf              = reader["cnpj_cpf"].ToString(),
                            id_fornecedor         = Convert.ToInt32(reader["id_fornecedor"]),
                            nome_fornecedor       = reader["nome_fornecedor"].ToString(),
                            nome_usuario_denuncia = reader["nome_usuario_denuncia"].ToString(),
                            data_denuncia         = Utils.FormataDataHora(reader["data_denuncia"]),
                            texto                  = reader["texto"].ToString(),
                            anexo                  = reader["anexo"].ToString(),
                            situacao               = reader["situacao"].ToString(),
                            situacao_descricao     = reader["situacao_descricao"].ToString(),
                            data_auditoria         = Utils.FormataDataHora(reader["data_auditoria"]),
                            nome_usuario_auditoria = reader["nome_usuario_auditoria"].ToString()
                        };
                    }
                    else
                    {
                        return(null);
                    }
                }

                banco.AddParameter("id", value);
                using (var reader = banco.ExecuteReader(strSqlDenunciaAnexo))
                {
                    if (reader.HasRows)
                    {
                        denuncia.anexos = new List <DenunciaAnexoModel>();

                        while (reader.Read())
                        {
                            denuncia.anexos.Add(new DenunciaAnexoModel()
                            {
                                nome_usuario = reader["nome_usuario"].ToString(),
                                data         = Utils.FormataDataHora(reader["data"]),
                                nome_arquivo = reader["nome_arquivo"].ToString()
                            });
                        }
                    }
                }

                banco.AddParameter("id", value);
                using (var reader = banco.ExecuteReader(strSqlDenunciaMensagem))
                {
                    if (reader.HasRows)
                    {
                        denuncia.mensagens = new List <DenunciaMensagemModel>();

                        while (reader.Read())
                        {
                            denuncia.mensagens.Add(new DenunciaMensagemModel()
                            {
                                nome_usuario = reader["nome_usuario"].ToString(),
                                data         = Utils.FormataDataHora(reader["data"]),
                                texto        = reader["texto"].ToString()
                            });
                        }
                    }
                }

                return(denuncia);
            }
        }
        public static string ConsultarReceitaWS()
        {
            var sb = new StringBuilder();
            var strInfoAdicional    = new StringBuilder();
            int RateLimit_Remaining = -1;
            int totalImportados     = 0;

            DataTable dtFornecedores;
            DataTable dtFornecedoresAtividade;
            DataTable dtFornecedoresNatJu;

            using (var banco = new Banco())
            {
                dtFornecedores = banco.GetTable(
                    @"select cnpj_cpf, f.id, fi.id_fornecedor, f.nome
                    from fornecedor f
                    left join fornecedor_info fi on f.id = fi.id_fornecedor
                    where char_length(f.cnpj_cpf) = 14
                    and f.cnpj_cpf <> '00000000000000'
                    -- and obtido_em < '2018-01-01'
                    and fi.id_fornecedor is null
                    -- and ip_colaborador not like '1805%'
                    -- and fi.id_fornecedor is null
                    -- and ip_colaborador is null -- not in ('170509', '170510', '170511', '170512')
                    -- and controle is null
                    -- and controle <> 0
					-- and (f.mensagem is null or f.mensagem <> 'Uma tarefa foi cancelada.')
					-- and controle <> 5
					and (controle is null or controle NOT IN (2, 3, 5))
                    order by f.id desc");

                if (dtFornecedores.Rows.Count == 0)
                {
                    Console.WriteLine("Não há fornecedores para consultar");
                    return("<p>Não há fornecedores para consultar</p>");
                }

                dtFornecedoresAtividade = banco.GetTable("SELECT * FROM fornecedor_atividade;");
                dtFornecedoresNatJu     = banco.GetTable("SELECT * FROM fornecedor_natureza_juridica;");
            }

            Console.WriteLine("Consultando CNPJ's Local: {0} itens.", dtFornecedores.Rows.Count);
            //var watch = System.Diagnostics.Stopwatch.StartNew();

            int i = 0;

            foreach (DataRow item in dtFornecedores.Rows)
            {
                // the code that you want to measure comes here
                //watch.Stop();
                //Console.WriteLine(watch.ElapsedMilliseconds);
                //watch.Restart();

                i++;
                if (!validarCNPJ(item["cnpj_cpf"].ToString()))
                {
                    InserirControle(3, item["cnpj_cpf"].ToString(), "CNPJ Invalido");
                    Console.WriteLine("CNPJ Invalido: " + item["cnpj_cpf"] + " - " + i);

                    strInfoAdicional.Append("<p>Empresa invalida importada:" + item["id"].ToString() + " - " + item["cnpj_cpf"].ToString() + " - " + item["nome"].ToString() + "; Motivo: CNPJ Invalido</p>");
                    continue;
                }

                Console.WriteLine("Consultando CNPJ: " + item["cnpj_cpf"] + " - " + i);
                FornecedorInfo receita = null;

                try
                {
                    using (HttpClient client = new HttpClient())
                    {
                        //--------------------------------
                        string uriString;
                        HttpResponseMessage response = null;


                        uriString          = string.Format("https://www.receitaws.com.br/v1/cnpj/{0}", item["cnpj_cpf"].ToString());
                        client.BaseAddress = new Uri(uriString);

                        if (RateLimit_Remaining > -1 && RateLimit_Remaining <= 1)
                        {
                            Console.WriteLine("Rate limit atingido!");
                            System.Threading.Thread.Sleep(60000);
                        }


                        //Setar o Timeout do client quando é API BASICA
                        client.Timeout = TimeSpan.FromMilliseconds(1000);
                        response       = client.GetAsync(string.Empty).Result;

                        //var rateLimit = response.Headers.FirstOrDefault(x => x.Key == "X-RateLimit-Limit");
                        //var retryAfter = response.Headers.FirstOrDefault(x => x.Key == "RetryAfter"); // A API do ReceitaWS infelizmente não retorna um valor de retryAfter, então temos que usar um sleep num valor padrão.
                        var rateLimit_Remaining = response.Headers.FirstOrDefault(x => x.Key == "X-RateLimit-Remaining");


                        if (rateLimit_Remaining.Value != null)
                        {
                            int temp;
                            int.TryParse(rateLimit_Remaining.Value.First(), out temp);
                            RateLimit_Remaining = temp;
                        }


                        if (response.IsSuccessStatusCode)
                        {
                            var responseContent = response.Content;

                            string responseString = responseContent.ReadAsStringAsync().Result;

                            receita = (FornecedorInfo)JsonConvert.DeserializeObject(responseString, typeof(FornecedorInfo));
                        }
                        else
                        {
                            InserirControle(1, item["cnpj_cpf"].ToString(), response.RequestMessage.ToString());
                            continue;
                        }
                    }
                }
                catch (Exception ex)
                {
                    //if (receita == null)
                    //{
                    //    receita = new ReceitaWSData();
                    //    receita.status = ReceitaWSData.STATUS_ERROR;
                    //    receita.ultima_atualizacao = DateTime.Now.ToString(DateMask_UltimaAtualizacao);

                    //    if (ex is AggregateException)
                    //    {
                    //        receita.message = "API Básica -- Gateway Time-out -- Exception: " + ex.InnerException.Message;
                    //        receita.ControleProcessamento = ReceitaWSData.ControleProcessamentoReceitaWS.Ignorar;
                    //    }
                    //    else
                    //    {
                    //        receita.message = ex.Message;
                    //    }
                    //}
                    InserirControle(1, item["cnpj_cpf"].ToString(), ex.GetBaseException().Message);
                    continue;
                }

                string strSql2;
                using (var banco = new Banco())
                {
                    //if (receita?.status == null)
                    //{
                    //    Thread.Sleep(60000); //1 MINUTO
                    //    continue;
                    //}

                    if (receita.status == "OK")
                    {
                        banco.BeginTransaction();

                        try
                        {
                            if (item["id_fornecedor"] != DBNull.Value)
                            {
                                banco.AddParameter("@id_fornecedor", item["id_fornecedor"]);

                                banco.ExecuteNonQuery(@"
                                delete from fornecedor_info where id_fornecedor=@id_fornecedor;
                                delete from fornecedor_atividade_secundaria where id_fornecedor=@id_fornecedor;
                                delete from fornecedor_socio where id_fornecedor=@id_fornecedor;
                            ");
                            }

                            var strSql =
                                @"insert into fornecedor_info(
							    id_fornecedor,
							    cnpj,
								tipo,
							    nome,
							    data_de_abertura,
							    nome_fantasia,
							    id_fornecedor_atividade_principal,
							    id_fornecedor_natureza_juridica,
							    logradouro,
							    numero,
							    complemento,
							    cep,
							    bairro,
							    municipio,
							    estado,
							    endereco_eletronico,
							    telefone,
							    ente_federativo_responsavel,
							    situacao_cadastral,
							    data_da_situacao_cadastral,
							    motivo_situacao_cadastral,
							    situacao_especial,
							    data_situacao_especial,
							    capital_social,
								obtido_em,
                                ip_colaborador
						    ) values (
							    @id_fornecedor,
							    @cnpj,
								@tipo,
							    @nome,
							    @data_de_abertura,
							    @nome_fantasia,
							    @id_fornecedor_atividade_principal,
							    @id_fornecedor_natureza_juridica,
							    @logradouro,
							    @numero,
							    @complemento,
							    @cep,
							    @bairro,
							    @municipio,
							    @estado,
							    @endereco_eletronico,
							    @telefone,
							    @ente_federativo_responsavel,
							    @situacao_cadastral,
							    @data_da_situacao_cadastral,
							    @motivo_situacao_cadastral,
							    @situacao_especial,
							    @data_situacao_especial,
							    @capital_social,
								@obtido_em,
                                @ip_colaborador
						    )"                        ;

                            banco.AddParameter("@id_fornecedor", item["id"]);
                            banco.AddParameter("@cnpj", item["cnpj_cpf"]);
                            banco.AddParameter("@tipo", receita.tipo);
                            banco.AddParameter("@nome", receita.nome);
                            banco.AddParameter("@data_de_abertura", ParseDate(receita.abertura));
                            banco.AddParameter("@nome_fantasia", receita.fantasia);

                            if (receita.atividade_principal != null && receita.atividade_principal.Count > 0)
                            {
                                var drAt = LocalizaInsereAtividade(dtFornecedoresAtividade, receita.atividade_principal[0]);
                                banco.AddParameter("@id_fornecedor_atividade_principal", drAt["id"]);
                            }
                            else
                            {
                                banco.AddParameter("@id_fornecedor_atividade_principal", DBNull.Value);
                            }

                            if (receita.atividade_principal != null)
                            {
                                var drNj =
                                    dtFornecedoresNatJu.Select("codigo='" + receita.natureza_juridica.Split(' ')[0] + "'");
                                banco.AddParameter("@id_fornecedor_natureza_juridica",
                                                   drNj.Length > 0 ? drNj[0]["id"] : DBNull.Value);
                            }
                            else
                            {
                                banco.AddParameter("@id_fornecedor_natureza_juridica", DBNull.Value);
                            }

                            banco.AddParameter("@logradouro", receita.logradouro);
                            banco.AddParameter("@numero", receita.numero);
                            banco.AddParameter("@complemento", receita.complemento);
                            banco.AddParameter("@cep", receita.cep);
                            banco.AddParameter("@bairro", receita.bairro);
                            banco.AddParameter("@municipio", receita.municipio);
                            banco.AddParameter("@estado", receita.uf);
                            banco.AddParameter("@endereco_eletronico", receita.email);
                            banco.AddParameter("@telefone", receita.telefone);
                            banco.AddParameter("@ente_federativo_responsavel", receita.efr);
                            banco.AddParameter("@situacao_cadastral", receita.situacao);
                            banco.AddParameter("@data_da_situacao_cadastral", ParseDate(receita.data_situacao));
                            banco.AddParameter("@motivo_situacao_cadastral", receita.motivo_situacao);
                            banco.AddParameter("@situacao_especial", receita.situacao_especial);
                            banco.AddParameter("@data_situacao_especial", ParseDate(receita.data_situacao_especial));
                            banco.AddParameter("@capital_social", ObterValor(receita.capital_social));
                            banco.AddParameter("@obtido_em", ParseDate(receita.ultima_atualizacao));
                            banco.AddParameter("@ip_colaborador", DateTime.Now.ToString("yyMMdd"));

                            banco.ExecuteNonQuery(strSql);


                            banco.AddParameter("@id", item["id"]);
                            banco.AddParameter("@nome", receita.nome);
                            banco.ExecuteNonQuery(@"update fornecedor set nome=@nome where id=@id");


                            strSql2 = @"insert into fornecedor_atividade_secundaria values (@id_fornecedor_info, @id_fornecedor_atividade)";
                            foreach (var atividadesSecundaria in receita.atividades_secundarias)
                            {
                                banco.ClearParameters();

                                try
                                {
                                    var drAt = LocalizaInsereAtividade(dtFornecedoresAtividade, atividadesSecundaria);
                                    banco.AddParameter("@id_fornecedor_info", item["id"]);
                                    banco.AddParameter("@id_fornecedor_atividade", drAt["id"]);

                                    banco.ExecuteNonQuery(strSql2);
                                }
                                catch (MySqlException ex)
                                {
                                    if (!ex.Message.Contains("Duplicate entry"))
                                    {
                                        throw;
                                    }
                                }
                            }

                            strSql2 =
                                @"insert into fornecedor_socio 
                                (id_fornecedor, nome, pais_origem, id_fornecedor_socio_qualificacao, nome_representante, id_fornecedor_socio_representante_qualificacao) 
                            values 
                                (@id_fornecedor, @nome, @pais_origem, @id_fornecedor_socio_qualificacao, @nome_representante, @id_fornecedor_socio_representante_qualificacao)";

                            foreach (var qsa in receita.qsa)
                            {
                                banco.ClearParameters();

                                banco.AddParameter("@id_fornecedor", item["id"]);
                                banco.AddParameter("@nome", qsa.nome);
                                banco.AddParameter("@pais_origem", qsa.pais_origem);
                                banco.AddParameter("@id_fornecedor_socio_qualificacao", qsa.qual.Split('-')[0]);

                                banco.AddParameter("@nome_representante", qsa.nome_rep_legal);
                                banco.AddParameter("@id_fornecedor_socio_representante_qualificacao",
                                                   !string.IsNullOrEmpty(qsa.qual_rep_legal) && qsa.qual_rep_legal.Contains("-") ? (object)qsa.qual_rep_legal.Split('-')[0] : DBNull.Value);

                                banco.ExecuteNonQuery(strSql2);
                            }

                            totalImportados++;

                            if (receita.situacao != "ATIVA")
                            {
                                strInfoAdicional.Append("<p>Empresa inativa importada:" + item["id"].ToString() + " - " + receita.cnpj + " - " + receita.nome + "</p>");
                            }

                            banco.CommitTransaction();

                            InserirControle(0, item["cnpj_cpf"].ToString(), "");
                            Console.WriteLine("Atualizando CNPJ: " + item["cnpj_cpf"] + " - " + i);
                        }
                        catch (Exception)
                        {
                            banco.RollBackTransaction();
                        }
                    }
                    else
                    {
                        InserirControle(2, item["cnpj_cpf"].ToString(), receita.message);

                        strInfoAdicional.Append("<p>Empresa invalida importada:" + item["id"].ToString() + " - " + receita.cnpj + " - " + item["nome"].ToString() + "; Motivo: " + receita.message + "</p>");
                    }
                }
            }

            using (var banco = new Banco())
            {
                banco.ExecuteNonQuery(@"
					update fornecedor_info set nome_fantasia=null where nome_fantasia = '' or nome_fantasia = '********';
					update fornecedor_info set logradouro=null where logradouro = '' or logradouro = '********';
					update fornecedor_info set numero=null where numero = '' or numero = '********';
					update fornecedor_info set complemento=null where complemento = '' or complemento = '********';
					update fornecedor_info set cep=null where cep = '' or cep = '********';
					update fornecedor_info set bairro=null where bairro = '' or bairro = '********';
					update fornecedor_info set municipio=null where municipio = '' or municipio = '********';
					update fornecedor_info set estado=null where estado = '' or estado = '**';
					update fornecedor_info set endereco_eletronico=null where endereco_eletronico = '' or endereco_eletronico = '********';
					update fornecedor_info set telefone=null where telefone = '' or telefone = '********';
					update fornecedor_info set ente_federativo_responsavel=null where ente_federativo_responsavel = '' or ente_federativo_responsavel = '********';
					update fornecedor_info set motivo_situacao_cadastral=null where motivo_situacao_cadastral = '' or motivo_situacao_cadastral = '********';
					update fornecedor_info set situacao_especial=null where situacao_especial = '' or situacao_especial = '********';
				"                );
            }

            return(string.Format("<p>{0} de {1} fornecedores novos importados</p>", totalImportados, dtFornecedores.Rows.Count) + strInfoAdicional.ToString());
        }
        public HttpResponseMessage GerarDenuncia(string codigo)
        {
            var auditoria = Consultar(codigo);

            // Store a global reference to the loaded document.
            var g_document = DocX.Load(HostingEnvironment.MapPath("~/Content/template/template-cidadao-fiscal.docx"));

            // Replace text in this document.
            g_document.ReplaceText("#CIDADE_AUDITADA#", auditoria.cidade);
            g_document.ReplaceText("#DATA_EXTENSO#", DateTime.Now.ToString(@"dd \de MMMM \de yyyy", new CultureInfo("pt-BR")));

            var auditor = auditoria.signatarios[0];

            string nacionalidade = "";

            switch (auditor.nacionalidade)
            {
            case "1": nacionalidade = "Brasileiro(a)"; break;
            }

            string estado_civil = "";

            switch (auditor.estado_civil)
            {
            case "1": estado_civil = "Solteiro(a)"; break;

            case "2": estado_civil = "Casado(a)"; break;

            case "3": estado_civil = "Divorciado(a)"; break;

            case "4": estado_civil = "Viúvo(a)"; break;

            case "5": estado_civil = "Separado(a)"; break;
            }

            string estado;

            using (var banco = new Banco())
            {
                banco.AddParameter("id", auditor.estado);
                estado = banco.ExecuteScalar(@"select nome from estado where id = @id").ToString();
            }

            g_document.ReplaceText("#DADOS_DO_AUDITOR#",
                                   string.Concat(nacionalidade, ", ",
                                                 estado_civil, ", ",
                                                 auditor.profissao, ", ",
                                                 "portador da carteira de identidade nº ", auditor.rg, ", ",
                                                 "inscrito no CPF nº ", auditor.cpf, ", ",
                                                 "residente e domiciliado na ", auditor.endereco, ", ",
                                                 "CEP ", auditor.cep, ", ",
                                                 "Bairro ", auditor.bairro, ", ",
                                                 "Cidade de ", auditor.cidade, ", ",
                                                 estado));

            g_document.ReplaceText("#CIDADE_AUDITOR#", auditor.cidade);
            g_document.ReplaceText("#NOME_AUDITOR#", auditor.nome_completo);
            g_document.ReplaceText("#CPF_AUDITOR#", auditor.cpf);

            var t = g_document.Tables[0];

            var title_formatting = new Formatting
            {
                Bold       = true,
                Size       = 12,
                FontFamily = new FontFamily("Cambria")
            };

            var item_title_formatting = new Formatting
            {
                Bold       = true,
                Size       = 12,
                FontFamily = new FontFamily("Cambria")
            };

            var item_text_formatting = new Formatting
            {
                Size       = 12,
                FontFamily = new FontFamily("Cambria")
            };

            var grupos = auditoria.grupos.FindAll(o => o.itens.Any(i => i.situacao == "2" || i.situacao == "3"));

            var table = t.InsertTableAfterSelf(grupos.Count, 1);

            table.Design  = TableDesign.TableNormal;
            table.AutoFit = AutoFit.Window;

            for (var g = 0; g < grupos.Count; g++)
            {
                var itens = grupos[g].itens.FindAll(i => i.situacao == "2" || i.situacao == "3");
                var cell  = table.Rows[g].Cells[0];

                var cellParagraphGrupo = cell.Paragraphs[0];
                cellParagraphGrupo.InsertText($"{g + 1:00}. {grupos[g].nome.ToUpper()}", false, title_formatting);
                cellParagraphGrupo.SetLineSpacing(LineSpacingType.Before, 1);
                cellParagraphGrupo.SetLineSpacing(LineSpacingType.After, 1);

                foreach (var item in itens)
                {
                    var tbItens = cell.InsertTable(3, 1);
                    tbItens.AutoFit = AutoFit.Window;
                    tbItens.Design  = TableDesign.TableGrid;

                    var situacao = string.Empty;
                    switch (item.situacao)
                    {
                    case "2":
                        situacao = "Atende parcialmente";
                        break;

                    case "3":
                        situacao = "Informação não encontrada";
                        break;
                    }

                    var cellParagraphItemIa = tbItens.Rows[0].Cells[0].Paragraphs[0];
                    cellParagraphItemIa.SetLineSpacing(LineSpacingType.After, 0);
                    cellParagraphItemIa.InsertText(situacao + ": ", false, item_title_formatting);
                    cellParagraphItemIa.InsertText(item.informacao_auditada, false, item_text_formatting);

                    var cellParagraphItemIp = tbItens.Rows[1].Cells[0].Paragraphs[0];
                    cellParagraphItemIp.SetLineSpacing(LineSpacingType.After, 0);
                    cellParagraphItemIp.InsertText("Indício de Prova: ", false, item_title_formatting);
                    cellParagraphItemIp.InsertText(item.indicio_de_prova, false, item_text_formatting);

                    var cellParagraphItemDl = tbItens.Rows[2].Cells[0].Paragraphs[0];
                    cellParagraphItemDl.SetLineSpacing(LineSpacingType.After, 0);
                    cellParagraphItemDl.InsertText("Dispositivo Legal: ", false, item_title_formatting);
                    cellParagraphItemDl.InsertText(!string.IsNullOrEmpty(item.dispositivo_legal) ? item.dispositivo_legal : "N/A",
                                                   false, item_text_formatting);
                }
            }

            foreach (var p in t.Paragraphs)
            {
                p.SetLineSpacing(LineSpacingType.Before, 0);
                p.SetLineSpacing(LineSpacingType.After, 0);
            }

            t.Remove();

            var stream = new MemoryStream();

            g_document.SaveAs(stream);
            g_document.Dispose();

            // processing the stream.
            var result = new HttpResponseMessage(HttpStatusCode.OK)
            {
                Content = new ByteArrayContent(stream.ToArray())
            };

            result.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment")
            {
                FileName = $"Cidadão Fiscal - {auditoria.cidade}.docx"
            };
            result.Content.Headers.ContentType = new MediaTypeHeaderValue("application/octet-stream");

            return(result);
        }
        public Auditoria Consultar(string codigo)
        {
            using (var banco = new Banco())
            {
                var id               = 0;
                var auditoria        = new Auditoria();
                var lstAuditoriaItem = new List <AuditoriaItem>();

                banco.AddParameter("codigo", codigo);
                using (var reader = banco.ExecuteReader(
                           @"SELECT 
							id
							, codigo
							, cidade
							, id_estado
							, link_portal
						FROM mcf_auditoria
						where codigo = @codigo"
                           )
                       )
                {
                    if (reader.Read())
                    {
                        id = Convert.ToInt32(reader["id"]);

                        auditoria.grupos      = new List <AuditoriaGrupo>();
                        auditoria.signatarios = new List <AuditoriaSignatario>();

                        auditoria.codigo      = reader["codigo"].ToString();
                        auditoria.estado      = reader["id_estado"].ToString();
                        auditoria.cidade      = reader["cidade"].ToString();
                        auditoria.link_portal = reader["link_portal"].ToString();
                    }
                    else
                    {
                        throw new BusinessException("Auditoria não localizada!");
                    }
                }

                banco.AddParameter("id", id);
                using (var reader = banco.ExecuteReader(
                           @"SELECT 
							id
							, nome 
						FROM mcf_tranparencia_grupo;
					
						SELECT 
							ti.id
							, ti.id_mcf_transparencia_grupo
							, ti.informacao_auditada
							, ti.dispositivo_legal 
							, ai.id_mcf_id_transparencia_item_situacao
							, ai.indicio_de_prova
						FROM mcf_tranparencia_item ti
						left join mcf_auditoria_item ai on ai.id_mcf_id_transparencia_item = ti.id
						where ai.id_mcf_auditoria = @id
						order by id_mcf_transparencia_grupo, id;
						
						SELECT
							sg.id
							, sg.nome
							, sg.cpf
							, sg.rg
							, sg.nacionalidade
							, sg.estado_civil
							, sg.profissao
							, sg.cep
							, sg.endereco
							, sg.bairro
							, sg.cidade
							, sg.id_estado
							, sg.email
						FROM mcf_signatario sg
						inner join mcf_auditoria_signatario asg on asg.id_mcf_signatario = sg.id
						where asg.id_mcf_auditoria = @id;"
                           )
                       )
                {
                    while (reader.Read())
                    {
                        auditoria.grupos.Add(new AuditoriaGrupo
                        {
                            id    = Convert.ToInt32(reader["id"]),
                            nome  = reader["nome"].ToString(),
                            itens = new List <AuditoriaItem>()
                        });
                    }

                    reader.NextResult();

                    while (reader.Read())
                    {
                        lstAuditoriaItem.Add(new AuditoriaItem
                        {
                            id                  = Convert.ToInt32(reader["id"]),
                            id_grupo            = Convert.ToInt32(reader["id_mcf_transparencia_grupo"]),
                            informacao_auditada = reader["informacao_auditada"].ToString(),
                            dispositivo_legal   = reader["dispositivo_legal"].ToString(),
                            situacao            = reader["id_mcf_id_transparencia_item_situacao"].ToString(),
                            indicio_de_prova    = reader["indicio_de_prova"].ToString()
                        });
                    }

                    reader.NextResult();

                    while (reader.Read())
                    {
                        auditoria.signatarios.Add(new AuditoriaSignatario
                        {
                            //id = Convert.ToInt32(reader["id"]),
                            nome_completo = reader["nome"].ToString(),
                            cpf           = reader["cpf"].ToString(),
                            rg            = reader["rg"].ToString(),
                            nacionalidade = reader["nacionalidade"].ToString(),
                            estado_civil  = reader["estado_civil"].ToString(),
                            profissao     = reader["profissao"].ToString(),
                            cep           = reader["cep"].ToString(),
                            endereco      = reader["endereco"].ToString(),
                            bairro        = reader["bairro"].ToString(),
                            cidade        = reader["cidade"].ToString(),
                            estado        = reader["id_estado"].ToString(),
                            email         = reader["email"].ToString()
                        });
                    }
                }

                foreach (var grupo in auditoria.grupos)
                {
                    var itens = lstAuditoriaItem.FindAll(o => o.id_grupo == grupo.id);

                    grupo.itens.AddRange(itens);
                }

                return(auditoria);
            }
        }
        public dynamic GastosMensaisPorAno(int id)
        {
            using (Banco banco = new Banco())
            {
                var strSql = new StringBuilder();
                strSql.AppendLine(@"
					SELECT d.ano, d.mes, SUM(d.valor) AS valor_total
					FROM sf_despesa d
					WHERE d.id_sf_senador = @id
					group by d.ano, d.mes
					order by d.ano, d.mes
				"                );
                banco.AddParameter("@id", id);

                using (MySqlDataReader reader = banco.ExecuteReader(strSql.ToString()))
                {
                    List <dynamic> lstRetorno        = new List <dynamic>();
                    var            lstValoresMensais = new decimal?[12];
                    string         anoControle       = string.Empty;
                    bool           existeGastoNoAno  = false;

                    while (reader.Read())
                    {
                        if (reader["ano"].ToString() != anoControle)
                        {
                            if (existeGastoNoAno)
                            {
                                lstRetorno.Add(new
                                {
                                    name = anoControle.ToString(),
                                    data = lstValoresMensais
                                });

                                lstValoresMensais = new decimal?[12];
                                existeGastoNoAno  = false;
                            }

                            anoControle = reader["ano"].ToString();
                        }

                        if (Convert.ToDecimal(reader["valor_total"]) > 0)
                        {
                            lstValoresMensais[Convert.ToInt32(reader["mes"]) - 1] = Convert.ToDecimal(reader["valor_total"]);
                            existeGastoNoAno = true;
                        }
                    }

                    if (existeGastoNoAno)
                    {
                        lstRetorno.Add(new
                        {
                            name = anoControle.ToString(),
                            data = lstValoresMensais
                        });
                    }

                    return(lstRetorno);
                    // Ex: [{"$id":"1","name":"2015","data":[null,18404.57,25607.82,29331.99,36839.82,24001.68,40811.97,33641.20,57391.30,60477.07,90448.58,13285.14]}]
                }
            }
        }
Esempio n. 30
0
    public static void ConsultarCNPJ(string CNPJ)
    {
        bool   bResolverCapchaAutomatico = false;
        Random aleatorio = new Random();

        mutex.WaitOne();
        try
        {
            string texto;
            Bitmap captcha, limpo;
            int    id = 0, i = 0;
            do
            {
                erros[linguagem]++;
                if (linguagem < linguagens.Length - 1)
                {
                    linguagem++;
                }
                else
                {
                    linguagem = 0;
                }

                if (bResolverCapchaAutomatico)
                {
                    sw.Stop();
                    if (sw.Elapsed.TotalSeconds < 4)
                    {
                        System.Threading.Thread.Sleep(aleatorio.Next(3000, 5000));
                    }
                }

                captcha = PegarCaptchaCNPJ();

                if (bResolverCapchaAutomatico)
                {
                    System.Threading.Thread.Sleep(aleatorio.Next(5000, 7000));
                    sw.Reset();
                    sw.Start();
                }

                limpo = Captcha.Limpar(captcha);
                texto = Captcha.OCR(limpo, linguagens[linguagem]);

                try
                {
                    Console.WriteLine("Captcha: {0}", texto);

                    if (!bResolverCapchaAutomatico)
                    {
                        Console.WriteLine("Digite o Captcha:");
                        string temp = Console.ReadLine();
                        if (!string.IsNullOrEmpty(temp))
                        {
                            texto = temp;
                        }
                    }

                    var oFormatarDados = new FormatarDados();
                    id = oFormatarDados.ObterDados(_cookies, CNPJ, texto, true);

                    Console.WriteLine("Fornecedor atualizado: {0}", id);
                    break;
                }
                catch (Exception ex)
                {
                    if (ex.Message == "O número do CNPJ não foi localizado na Receita Federal")
                    {
                        using (Banco banco = new Banco())
                        {
                            banco.AddParameter("@cnpj_cpf", CNPJ);
                            banco.AddParameter("@controle", 5);
                            banco.AddParameter("@mensagem", ex.Message);

                            banco.ExecuteNonQuery(@"update fornecedor set controle=@controle, mensagem=@mensagem where cnpj_cpf=@cnpj_cpf;");
                        }

                        break;
                    }
                    else
                    {
                        if (i++ == 5)
                        {
                            break;
                        }
                    }

                    Console.WriteLine(ex.Message);

                    tentativas[linguagem] = (contagem[linguagem] * tentativas[linguagem] + erros[linguagem] + 1) / (contagem[linguagem] + 1);
                    contagem[linguagem]++;
                    erros[linguagem] = -1;

                    //limpo.Save(tempPath + "c.limpo.png");
                    //limpo.Dispose();

                    if (ex.Message.Contains("tempo limite"))
                    {
                        System.Threading.Thread.Sleep(3600000);
                    }
                }
            } while (id == 0);

            /*for (int l = 0; l < Receita.linguagens.Length; l++) {
             * System.Web.HttpContext.Current.Response.Write(linguagens[l] + ": " + (tentativas[l] < erros[l] ? (contagem[l] * tentativas[l] + erros[l] + 1) / (contagem[l] + 1) : tentativas[l]) + "<br />");
             * }*/
            mutex.ReleaseMutex();

            /*using (StreamWriter sw = File.AppendText(System.Web.HttpContext.Current.Server.MapPath("/log.txt"))) {
             * sw.WriteLine(DateTime.Now + ": " + retorno);
             * }*/
        }
        catch (Exception e)
        {
            erros[linguagem]--;
            mutex.ReleaseMutex();
            if (e is System.NullReferenceException)
            {
                /*using (StreamWriter sw = File.AppendText(System.Web.HttpContext.Current.Server.MapPath("/log.txt"))) {
                 * sw.WriteLine(DateTime.Now + ": Imagem invalida");
                 * }*/
                throw new BusinessException("Imagem invalida");
            }
            else
            {
                if ((e.GetBaseException() is System.IO.IOException) || (e.GetBaseException() is System.Net.Sockets.SocketException))
                {
                    //System.Threading.Thread.Sleep(aleatorio.Next(50000, 500000));

                    /*using (StreamWriter sw = File.AppendText(System.Web.HttpContext.Current.Server.MapPath("/log.txt"))) {
                     * sw.WriteLine(DateTime.Now + ": IP bloqueado");
                     * }*/
                    throw new BusinessException("IP bloqueado");
                }
                else
                {
                    /*using (StreamWriter sw = File.AppendText(System.Web.HttpContext.Current.Server.MapPath("/log.txt"))) {
                     * sw.WriteLine(DateTime.Now + ": " + e.ToString());
                     * }*/
                    throw;
                }
            }
        }
    }