From fda37c4873787795a056f81f6344ad63e660e328 Mon Sep 17 00:00:00 2001 From: Steven Floyd <4810021+stfloyd@users.noreply.github.com> Date: Thu, 5 Jun 2025 14:39:55 -0500 Subject: [PATCH 1/3] Changes for Mike --- .../Utilities/ElexioCommunityApi.cs | 63 +++++++++++-------- 1 file changed, 37 insertions(+), 26 deletions(-) diff --git a/Slingshot.ElexioCommunity/Slingshot.ElexioCommunity/Utilities/ElexioCommunityApi.cs b/Slingshot.ElexioCommunity/Slingshot.ElexioCommunity/Utilities/ElexioCommunityApi.cs index 65db469..f445377 100644 --- a/Slingshot.ElexioCommunity/Slingshot.ElexioCommunity/Utilities/ElexioCommunityApi.cs +++ b/Slingshot.ElexioCommunity/Slingshot.ElexioCommunity/Utilities/ElexioCommunityApi.cs @@ -215,46 +215,57 @@ public static void ExportIndividuals( string filename ) try { - _request = new RestRequest( API_INDIVIDUALS, Method.GET ); - _request.AddQueryParameter( "session_id", SessionId ); - var response = _client.Execute( _request ); - ApiCounter++; + int limit = 1000; + int offset = 0; + int itemCount = int.MaxValue; // will update after first request - dynamic data = JsonConvert.DeserializeObject( response.Content ); + do + { + _request = new RestRequest( API_INDIVIDUALS, Method.GET ); + _request.AddQueryParameter( "session_id", SessionId ); + _request.AddQueryParameter( "limit", limit.ToString() ); + _request.AddQueryParameter( "offset", offset.ToString() ); - var records = data.data; + var response = _client.Execute( _request ); + ApiCounter++; - if ( records != null ) - { - foreach ( var letterGroup in records ) + dynamic data = JsonConvert.DeserializeObject( response.Content ); + + itemCount = data.itemCount ?? 0; + var records = data.data; + + if ( records != null ) { - foreach ( var person in letterGroup.Value ) + foreach ( var letterGroup in records ) { - Person importPerson = ElexioCommunityPerson.Translate( person ); - _uids.Add( importPerson.Id ); - - if ( importPerson != null ) + foreach ( var person in letterGroup.Value ) { - ImportPackage.WriteToPackage( importPerson ); - - string hasPicture = person.hasPicture; - if ( hasPicture.AsBoolean() ) + Person importPerson = ElexioCommunityPerson.Translate( person ); + if ( importPerson != null ) { - // save person image - _request = new RestRequest( "upload/" + Hostname + "/profilePictures/" + importPerson.Id + "_orig.jpg", Method.GET ); + _uids.Add( importPerson.Id ); + ImportPackage.WriteToPackage( importPerson ); - var image = _client.DownloadData( _request ); - ApiCounter++; + string hasPicture = person.hasPicture; + if ( hasPicture.AsBoolean() ) + { + var imageRequest = new RestRequest( "upload/" + Hostname + "/profilePictures/" + importPerson.Id + "_orig.jpg", Method.GET ); + var image = _client.DownloadData( imageRequest ); + ApiCounter++; - var test = System.Text.Encoding.UTF8.GetString( image ); + var test = System.Text.Encoding.UTF8.GetString( image ); - var path = Path.Combine( ImportPackage.ImageDirectory, "Person_" + importPerson.Id + ".jpg" ); - File.WriteAllBytes( path, image ); + var path = Path.Combine( ImportPackage.ImageDirectory, "Person_" + importPerson.Id + ".jpg" ); + File.WriteAllBytes( path, image ); + } } } } } - } + + offset += limit; + + } while (offset < itemCount); } catch ( Exception ex ) { From 090df0978162f52d424ec62abc69c64bb1b5db79 Mon Sep 17 00:00:00 2001 From: Michael Roth Date: Thu, 5 Jun 2025 15:09:35 -0500 Subject: [PATCH 2/3] FIxed the totalcounts variable to grab the correct count --- .../Slingshot.ElexioCommunity/Utilities/ElexioCommunityApi.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Slingshot.ElexioCommunity/Slingshot.ElexioCommunity/Utilities/ElexioCommunityApi.cs b/Slingshot.ElexioCommunity/Slingshot.ElexioCommunity/Utilities/ElexioCommunityApi.cs index f445377..fe8162f 100644 --- a/Slingshot.ElexioCommunity/Slingshot.ElexioCommunity/Utilities/ElexioCommunityApi.cs +++ b/Slingshot.ElexioCommunity/Slingshot.ElexioCommunity/Utilities/ElexioCommunityApi.cs @@ -231,7 +231,7 @@ public static void ExportIndividuals( string filename ) dynamic data = JsonConvert.DeserializeObject( response.Content ); - itemCount = data.itemCount ?? 0; + itemCount = data.totalCount ?? 0; var records = data.data; if ( records != null ) From 00a82327fb0e140ccd5da957b03eb962cef2706b Mon Sep 17 00:00:00 2001 From: Steven Floyd Date: Fri, 6 Jun 2025 07:28:46 -0500 Subject: [PATCH 3/3] Fix typo in itemCount not referencing the total count from the request --- .../Slingshot.ElexioCommunity/Utilities/ElexioCommunityApi.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Slingshot.ElexioCommunity/Slingshot.ElexioCommunity/Utilities/ElexioCommunityApi.cs b/Slingshot.ElexioCommunity/Slingshot.ElexioCommunity/Utilities/ElexioCommunityApi.cs index f445377..fe8162f 100644 --- a/Slingshot.ElexioCommunity/Slingshot.ElexioCommunity/Utilities/ElexioCommunityApi.cs +++ b/Slingshot.ElexioCommunity/Slingshot.ElexioCommunity/Utilities/ElexioCommunityApi.cs @@ -231,7 +231,7 @@ public static void ExportIndividuals( string filename ) dynamic data = JsonConvert.DeserializeObject( response.Content ); - itemCount = data.itemCount ?? 0; + itemCount = data.totalCount ?? 0; var records = data.data; if ( records != null )