private static IList <Sdk.Entity> BuildActivityPartyList(DataXml.Field field, SchemaXml.Entity schemaData) { var activityParties = new List <Sdk.Entity>(); foreach (var record in field.Activitypointerrecords) { var party = new Sdk.Entity("activityparty", Guid.Parse(record.Id)); foreach (var attribute in record.Field) { party[attribute.Name] = GetActivityPartyObjectFromFieldNodeType(attribute, schemaData); } activityParties.Add(party); } return(activityParties); }
private static object GetActivityPartyObjectFromFieldNodeType(DataXml.Field field, SchemaXml.Entity schemaData) { var attribute = Builders.ActivityPartyMetadata.Build().Attributes.Where(attr => attr.LogicalName.Equals(field.Name)).FirstOrDefault(); switch (attribute.AttributeType) { case AttributeTypeCode.Boolean: return(Boolean.Parse(field.Value)); case AttributeTypeCode.Lookup: case AttributeTypeCode.Owner: return(new EntityReference() { LogicalName = field.Lookupentity, Id = Guid.Parse(field.Value), Name = field.Lookupentityname }); case AttributeTypeCode.Picklist: case AttributeTypeCode.State: case AttributeTypeCode.Status: return(new OptionSetValue(Int32.Parse(field.Value))); case AttributeTypeCode.Uniqueidentifier: return(Guid.Parse(field.Value)); case AttributeTypeCode.CalendarRules: case AttributeTypeCode.Virtual: case AttributeTypeCode.BigInt: case AttributeTypeCode.ManagedProperty: case AttributeTypeCode.EntityName: case AttributeTypeCode.Customer: case AttributeTypeCode.PartyList: case AttributeTypeCode.DateTime: case AttributeTypeCode.Decimal: case AttributeTypeCode.Double: case AttributeTypeCode.Integer: case AttributeTypeCode.Memo: case AttributeTypeCode.String: case AttributeTypeCode.Money: default: throw new Exception(String.Format("Unsupported attribute type {0}.", attribute.AttributeType)); } }