public static int IndexContentPage(IContent content)
{
// Does this type have any CategoryAssignment properties?
if (!HasCategoryAssignments(content))
{
return 0;
}
var baseType = content.GetType().BaseType;
var contentRef = content.ContentLink.ToReferenceWithoutVersion();
var categoryRepo = ServiceLocator.Current.GetInstance<ICategoryRepository>();
categoryRepo.DeleteAssignmentsByContent(contentRef);
var assignmentsAdded = 0;
foreach (var propertyName in CategoryAssignmentProperties[baseType])
{
var propertyData = content.Property[propertyName].Value;
if(propertyData == null)
{
continue;
}
foreach (var value in (IEnumerable<ContentReference>)propertyData)
{
assignmentsAdded++;
categoryRepo.AddAssignment(contentRef, value, propertyName);
}
}
return assignmentsAdded;
}