// create read data types in bpp
public void CreateDataTypes(ref DataTable mappedDataTypes)
{
DataTypeManager dataTypeManager = new DataTypeManager();
foreach (DataRow mappedDataType in mappedDataTypes.Rows)
{
string dtName = mappedDataType["Name"].ToString();
string dtDescription = mappedDataType["Description"].ToString();
DataTypeDisplayPattern dtDisplayPettern = new DataTypeDisplayPattern();
TypeCode dtSystemType = new TypeCode();
foreach (TypeCode type in Enum.GetValues(typeof(TypeCode)))
{
if (type.ToString().Equals(mappedDataType["SystemType"].ToString()))
{
dtSystemType = type;
}
}
if (dtSystemType == TypeCode.DateTime)
{
if (mappedDataType["DisplayPattern"] != null && mappedDataType["DisplayPattern"].ToString() != "")
{
dtDisplayPettern = DataTypeDisplayPattern.Pattern.Where(p => p.Systemtype.Equals(DataTypeCode.DateTime) && p.Name.Equals(mappedDataType["DisplayPattern"].ToString())).FirstOrDefault();
}
else
{
dtDisplayPettern = DataTypeDisplayPattern.Pattern.Where(p => p.Name.Equals("DateTimeIso")).FirstOrDefault();
}
}
DataType dataType = new DataType();
// get existing dataTypes
DataType existDT = dataTypeManager.Repo.Get().Where(d =>
d.Name.Equals(dtName) &&
d.SystemType.ToString().Equals(mappedDataType["SystemType"].ToString())
).FirstOrDefault();
// return ID of existing dataType or create dataType
if (existDT == null && dtSystemType != null)
{
dataType = dataTypeManager.Create(dtName, dtDescription, dtSystemType);
XmlDocument xmlDoc = new XmlDocument();
XmlNode xmlNode;
xmlNode = xmlDoc.CreateNode(XmlNodeType.Element, "Extra", null);
xmlDoc.AppendChild(xmlNode);
xmlNode = xmlDoc.CreateNode(XmlNodeType.Element, "DisplayPattern", null);
xmlNode.InnerXml = DataTypeDisplayPattern.Dematerialize(dtDisplayPettern).InnerXml;
xmlDoc.DocumentElement.AppendChild(xmlNode);
dataType.Extra = xmlDoc;
dataTypeManager.Update(dataType);
}
else
{
dataType = existDT;
}
mappedDataType["DataTypesId"] = dataType.Id;
}
}