/// <summary> /// Gets all student organizations from the Engage API. /// </summary> /// <param name="engageApi">The engage API object.</param> /// <returns> /// A list of organizations. /// </returns> private static IEnumerable <Organization> GetOrganizations(IEngageApi engageApi) { var result = new List <Organization>(); var currentPage = 1; int totalPages = 0; do { var data = GetOrganizationAPIData(engageApi, currentPage); if (data != null) { totalPages = data.TotalPages; // LogInfoMessage($"Getting organization data - page {currentPage} of {totalPages}."); if (data != null && data.Items != null && data.Items.Count > 0) { result.AddRange(data.Items); } currentPage++; } } while (currentPage <= totalPages); return(result.AsEnumerable()); }
/// <summary> /// Gets the organization API data. /// </summary> /// <param name="engageApi">The engage API.</param> /// <param name="currentPage">The current page.</param> /// <returns></returns> private static EngageObject <Organization> GetOrganizationAPIData(IEngageApi engageApi, int currentPage, int errorCount = 0) { try { return(engageApi.GetOrganizations(0, string.Empty, false, string.Empty, string.Empty, string.Empty, null, null, currentPage, API_PAGING_COUNT)); } catch (Exception ex) { if (errorCount <= 0) { SleepAPIRequests(); return(GetOrganizationAPIData(engageApi, currentPage, 1)); } else { // LOG THE ERROR return(null); } } }