Managing on-line marketing activities (API)

Using namespaces
using System;
using System.Data;

using CMS.OnlineMarketing;
using CMS.WebAnalytics;
using CMS.DataEngine;
using CMS.Helpers;
using CMS.SiteProvider;
using CMS.Base;

Kentico EMS required

Features described on this page require the Kentico EMS license.

Logging activities
private bool CreateActivity()
{
	// Gets a dataset of contacts
	string where = "ContactLastName LIKE N'My New Contact%'";
	var contacts = ContactInfoProvider.GetContacts().Where(where).TopN(1);
    
	if (!DataHelper.DataSourceIsEmpty(contacts))
	{
		// Gets the contact from the dataset
		ContactInfo contact = contacts.First();

		// Gets the activity type
		ActivityTypeInfo activityType = ActivityTypeInfoProvider.GetActivityTypes().First();

		// Creates a new activity object
		ActivityInfo newActivity = new ActivityInfo()
										{
											ActivityType = activityType.ActivityTypeName,
											ActivityTitle = "My new activity",
											ActivitySiteID = SiteContext.CurrentSiteID,
											ActivityOriginalContactID = contact.ContactID,
											ActivityActiveContactID = contact.ContactID
										};
		// Saves the activity
		ActivityInfoProvider.SetActivityInfo(newActivity);

		return true;
	}

	return false;
}
Updating logged activities
private bool GetAndUpdateActivity()
{
	// Gets a dataset of contacts
	string where = "ContactLastName LIKE N'My New Contact%'";
	var contacts = ContactInfoProvider.GetContacts().Where(where).TopN(1);	

	if (!DataHelper.DataSourceIsEmpty(contacts))
	{
		// Gets the contact from the dataset
		ContactInfo contact = contacts.First<ContactInfo>();

		// Gets all activities associated with the contact
		var updateActivities = ActivityInfoProvider.GetActivities().WhereEquals("ActivityActiveContactID", contact.ContactID);		
		
		if (updateActivities.Any())
		{
			// Gets the first activity
			ActivityInfo activity = updateActivities.First();

			// Updates the activity
			activity.ActivityTitle = activity.ActivityTitle.ToLowerCSafe();

			// Saves the activity
			ActivityInfoProvider.SetActivityInfo(activity);

			return true;
		}
	}
	
	return false;
}
Updating multiple activities
private bool GetAndBulkUpdateActivities()
{
	// Gets a dataset of contacts
	string where = "ContactLastName LIKE N'My New Contact%'";
	var contacts = ContactInfoProvider.GetContacts().Where(where).TopN(1);	

	if (!DataHelper.DataSourceIsEmpty(contacts))
	{
		// Gets the contact from the dataset
		ContactInfo contact = contacts.First<ContactInfo>();

		// Gets all activities associated with the contact
		var updateActivities = ActivityInfoProvider.GetActivities().WhereEquals("ActivityActiveContactID", contact.ContactID);

		if (updateActivities.Any())
		{
			foreach (ActivityInfo activity in updateActivities)
			{
				// Updates the activity content
				activity.ActivityTitle = activity.ActivityTitle.ToUpper();

				// Saves the activity
				ActivityInfoProvider.SetActivityInfo(activity);
			}

			return true;
		}
	}

	return false;
}
Deleting logged activities
private bool DeleteActivity()
{
	// Gets a dataset of contacts
	string where = "ContactLastName LIKE N'My New Contact%'";
	var contacts = ContactInfoProvider.GetContacts().Where(where).TopN(1);

	if (!DataHelper.DataSourceIsEmpty(contacts))
	{
		// Gets the contact from the dataset
		ContactInfo contact = contacts.First<ContactInfo>();

		// Gets all activities associated with the contact
		var activities = ActivityInfoProvider.GetActivities().WhereEquals("ActivityOriginalContactID", contact.ContactID);	

		if (activities.Any())
		{
			foreach (ActivityInfo activity in activities)
			{
				// Deletes the contact's activities
				ActivityInfoProvider.DeleteActivityInfo(activity);
			}

			return true;
		}
	}

	return false;
}