|
using System; |
|
using System.Collections.Generic; |
|
using System.Linq; |
|
using System.Web; |
|
using System.Web.Script.Serialization; |
|
using Telerik.Sitefinity.Data.Metadata; |
|
using Telerik.Sitefinity.Ecommerce.Catalog.Model; |
|
using Telerik.Sitefinity.Metadata.Model; |
|
using Telerik.Sitefinity.Model; |
|
using Telerik.Sitefinity.ModuleEditor.Web.Services.Model; |
|
using Telerik.Sitefinity.Modules.Ecommerce.Common; |
|
using Telerik.Sitefinity.Utilities.TypeConverters; |
|
using Telerik.Sitefinity.Web.UI.Fields; |
|
using Telerik.Sitefinity.Web.UI.Fields.Enums; |
|
|
|
namespace SitefinityWebApp |
|
{ |
|
public class CreateYesNoFieldOfProducts |
|
{ |
|
public static void CreateYesNoField(Guid productTypeId, string fieldName, string fieldLabel, string question) |
|
{ |
|
EcommerceManager ecommerceManager = EcommerceManager.GetManager(); |
|
|
|
ProductType productType = ecommerceManager.GetProductType(productTypeId); |
|
if (productType == null) |
|
{ |
|
return; //The product type does not exist. |
|
} |
|
|
|
Type productClrType = TypeResolutionService.ResolveType(productType.ClrType); |
|
string fieldClrType = typeof(bool).FullName; |
|
UserFriendlyDataType userFriendlyDataType = UserFriendlyDataType.YesNo; |
|
|
|
var wcfField = new WcfField() |
|
{ |
|
Name = fieldName, |
|
ContentType = productClrType.FullName, |
|
FieldTypeKey = userFriendlyDataType.ToString(), |
|
IsCustom = true, |
|
|
|
//Database mapping |
|
DatabaseMapping = new WcfDatabaseMapping() |
|
{ |
|
ClrType = fieldClrType, |
|
ColumnName = fieldName.ToLower(), |
|
Nullable = true, |
|
DbType = "BIT" |
|
}, |
|
|
|
//Field definition |
|
Definition = new WcfFieldDefinition() |
|
{ |
|
Title = fieldLabel, |
|
FieldName = fieldName, |
|
FieldType = typeof(ChoiceField).FullName, |
|
RenderChoiceAs = RenderChoicesAs.SingleCheckBox |
|
} |
|
}; |
|
|
|
ChoiceItem yesNoItem = new ChoiceItem() |
|
{ |
|
Text = question, |
|
Value = "true", |
|
Selected = false |
|
}; |
|
|
|
List<ChoiceItem> items = new List<ChoiceItem>(); |
|
items.Add(yesNoItem); |
|
|
|
JavaScriptSerializer serializer = new JavaScriptSerializer(); |
|
wcfField.Definition.Choices = serializer.Serialize(items); |
|
|
|
CustomFieldsContext.Validate(wcfField, productClrType); |
|
|
|
var typeContext = new CustomFieldsContext(productClrType.FullName); |
|
typeContext.SaveFieldDefinition(wcfField, productClrType.Name, null); |
|
typeContext.SaveChanges(); |
|
|
|
using (MetadataManager metadataManager = MetadataManager.GetManager()) |
|
{ |
|
MetaType metaType = metadataManager.GetMetaType(productClrType); |
|
MetaField metaField = metadataManager.CreateMetafield(fieldName); |
|
CustomFieldsContext.SetFieldDatabaseMappings(metaField, metaType, userFriendlyDataType, wcfField, metadataManager); |
|
|
|
metaField.Title = fieldLabel; |
|
metaField.MetaAttributes.Add(new MetaFieldAttribute { Name = "UserFriendlyDataType", Value = userFriendlyDataType.ToString() }); |
|
metaField.MetaAttributes.Add(new MetaFieldAttribute { Name = "IsCommonProperty", Value = "true" }); |
|
metaType.Fields.Add(metaField); |
|
|
|
metadataManager.SaveChanges(); |
|
} |
|
|
|
//SystemManager.RestartApplication(false); |
|
} |
|
|
|
|
|
} |
|
} |