20231114 - Perto da conclusão

This commit is contained in:
giuliano 2023-11-14 18:26:07 -03:00
parent 97b8b1c3a6
commit f8963096ef
2 changed files with 72 additions and 16 deletions

View File

@ -13,6 +13,7 @@ class Program
{
static async Task Main(string[] args)
{
Console.Clear();
// URL da API que você deseja chamar
string apiUrl = "https://api.pipefy.com/graphql";
string PipefyToken = "eyJhbGciOiJIUzUxMiJ9.eyJpc3MiOiJQaXBlZnkiLCJpYXQiOjE2OTg4NTYyMjcsImp0aSI6IjM2N2Y4M2NhLWZjODYtNGRhOC04ODEyLTkzODRkZGZkODc0MiIsInN1YiI6MzAyNTM0MzY2LCJ1c2VyIjp7ImlkIjozMDI1MzQzNjYsImVtYWlsIjoiYmFjazVAZW5lcmdpYXNtYXJ0LmNvbS5iciIsImFwcGxpY2F0aW9uIjozMDAyODkyNDgsInNjb3BlcyI6W119LCJpbnRlcmZhY2VfdXVpZCI6bnVsbH0.o13j9c_y3G3HX35qhX4PmkkibGsmlHsk5dL_Bxsr1CKV5Jlgj218kJdEmriS7aHiw0-P7sfs-bu4YcElfuyiqg";
@ -22,7 +23,7 @@ class Program
string? cursor = "null";
string query = $"{{\"query\":\"query GetRecords($cursor: String){{ table_records(table_id: \\\"{PipefyTokenTableID}\\\",first:50,after:$cursor){{ pageInfo{{ hasNextPage endCursor }} edges{{ node{{ record_fields{{ field {{ id }} value array_value }} }} }} }}}}\",\"variables\":{{\"cursor\":{cursor}}}}}";
Console.WriteLine(query);
//Console.WriteLine(query);
bool hasNextPage = true;
bool hasSucceeded = true;
JArray allRecords = new JArray();
@ -45,9 +46,12 @@ class Program
var responseContent = await response.Content.ReadAsStringAsync();
var responseData = JObject.Parse(responseContent);
Console.Clear();
var records = responseData["data"]["table_records"]["edges"];
foreach (var record in records)
{
//Console.WriteLine(record);
allRecords.Add(record);
}
@ -63,26 +67,32 @@ class Program
break;
}
}
Console.Clear();
if (hasSucceeded)
{
string strJson = JsonConvert.SerializeObject(allRecords);
// Desserialize o JSON em objetos C#
var jsonData = JsonConvert.DeserializeObject<Pipefy.RootObject>(strJson);
var jsonData = JsonConvert.DeserializeObject<List<Pipefy.RootObject>>(strJson);
List<ClasseEmpresas> jsonList = convertJson(jsonData);
// Consulte os dados da tabela no banco de dados Access
List<ClasseEmpresas> databaseData = GetDataFromDatabase(ConnSourcePath);
// Compare os dados e encontre os registros ausentes no JSON
List<ClasseEmpresas> recordsMissingInJson = CompareData(databaseData, jsonData);
List<ClasseEmpresas> recordsMissingInJson = CompareData(databaseData, jsonList);
if (recordsMissingInJson.Count == 0) { Console.WriteLine("Sem registros");}
// Faça algo com os registros ausentes
foreach (var record in recordsMissingInJson)
{
Console.WriteLine($"Registro ausente no JSON - ID: {record.c_odigo_smart}, Nome: {record.nome_da_empresa}");
Console.WriteLine($"Registro ausente no JSON - ID: {record.c_digo_smart}, Nome: {record.nome_da_empresa}");
}
}
}
static List<ClasseEmpresas> GetDataFromDatabase(string ConnSourcePath)
{
string connectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + ConnSourcePath;
@ -102,7 +112,7 @@ class Program
{
ClasseEmpresas record = new ClasseEmpresas
{
c_odigo_smart = (int)reader["Código Smart"],
c_digo_smart = (string)reader["Código Smart"].ToString(),
nome_da_empresa = (string)reader["Nome da empresa"],
modalidade = (string)reader["modalidade"],
gestores = (string)reader["gestores"],
@ -117,23 +127,69 @@ class Program
return data;
}
static List<ClasseEmpresas> CompareData(List<ClasseEmpresas> databaseData, Pipefy.RootObject jsonData)
static List<ClasseEmpresas> convertJson(List<Pipefy.RootObject> jsonData)
{
if (jsonData == null)
List<ClasseEmpresas> data = new List<ClasseEmpresas>();
for (int i = 0;i<jsonData.Count;i++)
{
ClasseEmpresas record = new ClasseEmpresas();
for (int j = 0;j < jsonData[i].node.record_fields.Length;j++)
{
switch (jsonData[i].node.record_fields[j].field.id)
{
case "nome_da_empresa":
record.nome_da_empresa = jsonData[i].node.record_fields[j].value;
break;
case "c_digo_smart":
record.c_digo_smart = jsonData[i].node.record_fields[j].value.Replace(".0","");
break;
case "modalidade":
record.modalidade = jsonData[i].node.record_fields[j].value;
break;
case "gestores":
record.gestores = jsonData[i].node.record_fields[j].value;
break;
}
}
// Adicione outras propriedades conforme necessário
data.Add(record);
}
return data;
}
static List<ClasseEmpresas> CompareData(List<ClasseEmpresas> databaseData, List<ClasseEmpresas> jsonList)
{
if (jsonList == null)
{
return databaseData;
}
List<ClasseEmpresas> recordsMissingInJson = new List<ClasseEmpresas>();
var exists = false;
foreach (var record in databaseData)
{
//if (jsonData.node.Any(item => item.recordFields[0].value.ToString() == record.c_odigo_smart.ToString()))
//{
// continue;
//}
recordsMissingInJson.Add(record);
exists = false;
for (var j = 0; j < jsonList.Count; j++) {
//Console.WriteLine(jsonList[j].c_digo_smart.ToString().Replace(".0", "") + " - " + record.c_digo_smart.ToString() + " - " + (jsonList[j].c_digo_smart.ToString().Replace(".0", "") == record.c_digo_smart.ToString()));
if (jsonList[j].c_digo_smart.ToString().Replace(".0", "") == record.c_digo_smart.ToString())
{
exists = true;
break;
}
}
Console.Clear();
if (exists == false) { recordsMissingInJson.Add(record); }
}
return recordsMissingInJson;
@ -144,7 +200,7 @@ class Program
class ClasseEmpresas
{
public int c_odigo_smart { get; set; }
public string c_digo_smart { get; set; }
public string nome_da_empresa { get; set; }
public string modalidade { get; set; }
public string gestores { get; set; }

View File

@ -8,7 +8,7 @@ namespace Pipefy
{
public class RootObject
{
public data[] Property1 { get; set; }
public Node node { get; set; }
}
public class data