Skip to content

Instantly share code, notes, and snippets.

@nicocrm
Created April 5, 2012 16:41
Show Gist options
  • Save nicocrm/2312427 to your computer and use it in GitHub Desktop.
Save nicocrm/2312427 to your computer and use it in GitHub Desktop.
GetCampaignResponsesPaged
public class CampaignResponse
{
public String Id { get; set; }
public String ContactId { get; set; }
}
public List<CampaignResponse> GetCampaignResponses(String campaignId)
{
List<CampaignResponse> result = new List<CampaignResponse>();
GetCampaignResponsesPaged(campaignId, result, 1);
return result;
}
private void GetCampaignResponsesPaged(String campaignId, List<CampaignResponse> responses, int startIndex)
{
SDataResourceCollectionRequest src = new SDataResourceCollectionRequest(_ws);
src.ResourceKind = "targetresponses";
src.QueryValues.Add("where", "Campaign.Id eq '" + campaignId + "' and Contact.Id ne ''");
src.QueryValues.Add("startIndex", startIndex.ToString());
src.QueryValues.Add("orderby", "Id"); // Don't forget this part!!
AtomFeed feed = src.Read();
foreach (AtomEntry entry in feed.Entries)
{
SDataPayload payload = entry.GetSDataPayload();
responses.Add(new CampaignResponse { Id = payload.Key, ContactId = ((SDataPayload)payload.Values["Contact"]).Key });
}
// recursive step
if (startIndex + (int)feed.GetOpenSearchItemsPerPage() <= (int)feed.GetOpenSearchTotalResults())
GetCampaignResponsesPaged(campaignId, responses, startIndex + (int)feed.GetOpenSearchItemsPerPage());
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment