From f8963096eff3aacc60a2721e85b958664a0c1826 Mon Sep 17 00:00:00 2001 From: giuliano Date: Tue, 14 Nov 2023 18:26:07 -0300 Subject: [PATCH] =?UTF-8?q?20231114=20-=20Perto=20da=20conclus=C3=A3o?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Program.cs | 86 ++++++++++++++++++++++++++++++++++++++++++++---------- data.cs | 2 +- 2 files changed, 72 insertions(+), 16 deletions(-) diff --git a/Program.cs b/Program.cs index 0b16b19..c16abbf 100644 --- a/Program.cs +++ b/Program.cs @@ -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(strJson); + var jsonData = JsonConvert.DeserializeObject>(strJson); + + List jsonList = convertJson(jsonData); // Consulte os dados da tabela no banco de dados Access List databaseData = GetDataFromDatabase(ConnSourcePath); // Compare os dados e encontre os registros ausentes no JSON - List recordsMissingInJson = CompareData(databaseData, jsonData); + List 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 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 CompareData(List databaseData, Pipefy.RootObject jsonData) + static List convertJson(List jsonData) { - if (jsonData == null) + List data = new List(); + + for (int i = 0;i CompareData(List databaseData, List jsonList) + { + if (jsonList == null) { return databaseData; } List recordsMissingInJson = new List(); + 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; } diff --git a/data.cs b/data.cs index f7c74aa..101d2d9 100644 --- a/data.cs +++ b/data.cs @@ -8,7 +8,7 @@ namespace Pipefy { public class RootObject { - public data[] Property1 { get; set; } + public Node node { get; set; } } public class data