/// <summary> /// Adds the specified name. /// </summary> /// <param name="name">The name.</param> /// <param name="type">The type.</param> /// <param name="value">The value.</param> /// <param name="data">The data.</param> public ICrmAttribute Create(string name, CrmAttributeType type, string value, params string[] data) { Property property = null; switch (type) { case CrmAttributeType.Boolean: property = new CrmBooleanProperty(); break; case CrmAttributeType.Customer: property = new CustomerProperty(); break; case CrmAttributeType.DateTime: property = new CrmDateTimeProperty(); break; case CrmAttributeType.Decimal: property = new CrmDecimalProperty(); break; case CrmAttributeType.Float: property = new CrmFloatProperty(); break; case CrmAttributeType.Integer: property = new CrmNumberProperty(); break; case CrmAttributeType.Lookup: property = new LookupProperty(); break; case CrmAttributeType.Memo: property = new StringProperty(); break; case CrmAttributeType.Money: property = new CrmMoneyProperty(); break; case CrmAttributeType.Owner: property = new OwnerProperty(); break; case CrmAttributeType.Picklist: property = new PicklistProperty(); break; case CrmAttributeType.State: property = new StateProperty(); break; case CrmAttributeType.Status: property = new StatusProperty(); break; case CrmAttributeType.String: property = new StringProperty(); break; case CrmAttributeType.UniqueIdentifier: property = new UniqueIdentifierProperty(); break; case CrmAttributeType.PartyList: property = new DynamicEntityArrayProperty(); break; case CrmAttributeType.Virtual: case CrmAttributeType.CalendarRules: case CrmAttributeType.Internal: case CrmAttributeType.PrimaryKey: break; } this.Add(property); var crmAttributeAdapter = new CrmAttributeAdapter(property) { Name = name }; crmAttributeAdapter.SetValue(value, data); return(crmAttributeAdapter); }
public Property CreateProperty(string name, CRMSecurityProvider.Sources.Attribute.CrmAttributeType type, string value, params string[] data) { Property property = null; switch (type) { case CRMSecurityProvider.Sources.Attribute.CrmAttributeType.Boolean: property = new CrmBooleanProperty(); break; case CRMSecurityProvider.Sources.Attribute.CrmAttributeType.Customer: property = new CustomerProperty(); break; case CRMSecurityProvider.Sources.Attribute.CrmAttributeType.DateTime: property = new CrmDateTimeProperty(); break; case CRMSecurityProvider.Sources.Attribute.CrmAttributeType.Decimal: property = new CrmDecimalProperty(); break; case CRMSecurityProvider.Sources.Attribute.CrmAttributeType.Float: property = new CrmFloatProperty(); break; case CRMSecurityProvider.Sources.Attribute.CrmAttributeType.Integer: property = new CrmNumberProperty(); break; case CRMSecurityProvider.Sources.Attribute.CrmAttributeType.Lookup: property = new LookupProperty(); break; case CRMSecurityProvider.Sources.Attribute.CrmAttributeType.Memo: property = new StringProperty(); break; case CRMSecurityProvider.Sources.Attribute.CrmAttributeType.Money: property = new CrmMoneyProperty(); break; case CRMSecurityProvider.Sources.Attribute.CrmAttributeType.Owner: property = new OwnerProperty(); break; case CRMSecurityProvider.Sources.Attribute.CrmAttributeType.Picklist: property = new PicklistProperty(); break; case CRMSecurityProvider.Sources.Attribute.CrmAttributeType.State: property = new StateProperty(); break; case CRMSecurityProvider.Sources.Attribute.CrmAttributeType.Status: property = new StatusProperty(); break; case CRMSecurityProvider.Sources.Attribute.CrmAttributeType.String: property = new StringProperty(); break; case CRMSecurityProvider.Sources.Attribute.CrmAttributeType.UniqueIdentifier: property = new UniqueIdentifierProperty(); break; case CRMSecurityProvider.Sources.Attribute.CrmAttributeType.PartyList: property = new DynamicEntityArrayProperty(); break; case CRMSecurityProvider.Sources.Attribute.CrmAttributeType.Virtual: case CRMSecurityProvider.Sources.Attribute.CrmAttributeType.CalendarRules: case CRMSecurityProvider.Sources.Attribute.CrmAttributeType.Internal: case CRMSecurityProvider.Sources.Attribute.CrmAttributeType.PrimaryKey: break; } if (property != null) { SetPropertyValue(property, value, data); } return(property); }
/// <summary> /// Adds the property to collection. /// </summary> /// <param name="propertyName">Name of the property.</param> /// <param name="propertyValue">Value of the property.</param> /// <param name="propertyType">Type of the property.</param> /// <param name="properties">The properties.</param> protected void AddPropertyToCollection(string propertyName, object propertyValue, SupportedTypes propertyType, List <Property> properties) { var propertyStringValue = propertyValue as string; switch (propertyType) { case SupportedTypes.String: var stringProperty = new StringProperty(); stringProperty.Name = propertyName; stringProperty.Value = (string)propertyValue; properties.Add(stringProperty); break; case SupportedTypes.CrmBoolean: if (propertyStringValue != null || (propertyValue is bool)) { var booleanProperty = new CrmBooleanProperty(); booleanProperty.Name = propertyName; booleanProperty.Value = new crm4.webservice.CrmBoolean(); booleanProperty.Value.IsNull = true; if (propertyValue is bool) { booleanProperty.Value.Value = (bool)propertyValue; } else { booleanProperty.Value.Value = MainUtil.GetBool(propertyStringValue, false); } booleanProperty.Value.IsNull = false; properties.Add(booleanProperty); } break; case SupportedTypes.CrmDateTime: if (!String.IsNullOrEmpty(propertyStringValue) || (propertyValue is DateTime)) { var datetimeProperty = new CrmDateTimeProperty(); datetimeProperty.Name = propertyName; datetimeProperty.Value = new crm4.webservice.CrmDateTime(); datetimeProperty.Value.IsNull = true; if (propertyValue is DateTime) { datetimeProperty.Value.Value = ((DateTime)propertyValue).ToString("yyyy-MM-ddTHH:mm:sszzzz"); datetimeProperty.Value.IsNull = false; } else { DateTime dateTimeValue; if (DateTime.TryParse(propertyStringValue, out dateTimeValue)) { datetimeProperty.Value.Value = dateTimeValue.ToString("yyyy-MM-ddTHH:mm:sszzzz"); datetimeProperty.Value.IsNull = false; } } if (!datetimeProperty.Value.IsNull) { properties.Add(datetimeProperty); } } break; case SupportedTypes.CrmFloat: if (!String.IsNullOrEmpty(propertyStringValue) || (propertyValue is float)) { var floatProperty = new CrmFloatProperty(); floatProperty.Name = propertyName; floatProperty.Value = new crm4.webservice.CrmFloat(); floatProperty.Value.IsNull = true; if (propertyValue is float) { floatProperty.Value.Value = (float)propertyValue; floatProperty.Value.IsNull = false; } else { float floatValue; if (float.TryParse(propertyStringValue, out floatValue)) { floatProperty.Value.Value = floatValue; floatProperty.Value.IsNull = false; } } if (!floatProperty.Value.IsNull) { properties.Add(floatProperty); } } break; case SupportedTypes.CrmDecimal: if (!String.IsNullOrEmpty(propertyStringValue) || (propertyValue is decimal)) { var decimalProperty = new CrmDecimalProperty(); decimalProperty.Name = propertyName; decimalProperty.Value = new CrmDecimal(); decimalProperty.Value.IsNull = true; if (propertyValue is decimal) { decimalProperty.Value.Value = (decimal)propertyValue; decimalProperty.Value.IsNull = false; } else { decimal decimalValue; if (Decimal.TryParse(propertyStringValue, out decimalValue)) { decimalProperty.Value.Value = decimalValue; decimalProperty.Value.IsNull = false; } } if (!decimalProperty.Value.IsNull) { properties.Add(decimalProperty); } } break; case SupportedTypes.CrmMoney: if (!String.IsNullOrEmpty(propertyStringValue) || (propertyValue is decimal)) { var moneyProperty = new CrmMoneyProperty(); moneyProperty.Name = propertyName; moneyProperty.Value = new CrmMoney(); moneyProperty.Value.IsNull = true; if (propertyValue is decimal) { moneyProperty.Value.Value = (decimal)propertyValue; moneyProperty.Value.IsNull = false; } else { decimal moneyValue; if (Decimal.TryParse(propertyStringValue, out moneyValue)) { moneyProperty.Value.Value = moneyValue; moneyProperty.Value.IsNull = false; } } if (!moneyProperty.Value.IsNull) { properties.Add(moneyProperty); } } break; case SupportedTypes.CrmNumber: if (!String.IsNullOrEmpty(propertyStringValue) || (propertyValue is int)) { var numberProperty = new CrmNumberProperty(); numberProperty.Name = propertyName; numberProperty.Value = new crm4.webservice.CrmNumber(); numberProperty.Value.IsNull = true; if (propertyValue is int) { numberProperty.Value.Value = (int)propertyValue; numberProperty.Value.IsNull = false; } else { int numberValue; if (Int32.TryParse(propertyStringValue, out numberValue)) { numberProperty.Value.Value = numberValue; numberProperty.Value.IsNull = false; } } if (!numberProperty.Value.IsNull) { properties.Add(numberProperty); } } break; case SupportedTypes.Picklist: PicklistContactAttribute picklistAttribute; if (this.CacheService.MetadataCache.ContainsKey(propertyName)) { picklistAttribute = (PicklistContactAttribute)this.CacheService.MetadataCache[propertyName]; } else { var attributeRequest = new RetrieveAttributeRequest(); attributeRequest.EntityLogicalName = EntityName.contact.ToString(); attributeRequest.LogicalName = propertyName; var attributeResponse = (RetrieveAttributeResponse)this.CrmMetadataService.Execute(attributeRequest); var attributeMetadata = (PicklistAttributeMetadata)attributeResponse.AttributeMetadata; var options = attributeMetadata.Options.ToDictionary(option => option.Label.UserLocLabel.Label, option => option.Value.Value); picklistAttribute = new PicklistContactAttribute(SupportedTypes.Picklist, options); this.CacheService.MetadataCache.Add(propertyName, picklistAttribute); } if (!String.IsNullOrEmpty(propertyStringValue)) { var value = picklistAttribute.Options[propertyStringValue]; if (value >= 0) { var picklistProperty = new PicklistProperty(); picklistProperty.Name = propertyName; picklistProperty.Value = new Picklist(); picklistProperty.Value.Value = value; properties.Add(picklistProperty); } else { CrmHelper.ShowMessage(String.Format("The picklist value ({0}) of the '{1}' property couldn't be recognized", propertyValue, propertyName)); break; } } break; } }
/// <summary> /// Creates the instance. /// </summary> /// <param name="propertyName">Name of the property.</param> /// <param name="value">The value.</param> /// <returns></returns> /// <exception cref="ArgumentException">value</exception> public virtual Property GetProperty(string propertyName, object value) { Property property; if (string.IsNullOrEmpty(propertyName)) { throw new ArgumentException("Property name must be non null.", "propertyName"); } if (value == null) { throw new ArgumentNullException("Property value must be non null.", "value"); } if (string.Compare(propertyName, "StateCode", true, CultureInfo.InvariantCulture) == 0) { property = new StateProperty { Value = (string)value }; } else if (value is string) { property = new StringProperty { Value = (string)value }; } else if (value is UniqueIdentifier) { property = new UniqueIdentifierProperty { Value = (UniqueIdentifier)value }; } else if (value is Status) { property = new StatusProperty { Value = (Status)value }; } else if (value is Picklist) { property = new PicklistProperty { Value = (Picklist)value }; } else if (value is Owner) { property = new OwnerProperty { Value = (Owner)value }; } else if (value is Lookup) { property = new LookupProperty { Value = (Lookup)value }; } else if (value is CrmCampaignIntegration.Services.Key) { property = new KeyProperty { Value = (CrmCampaignIntegration.Services.Key)value }; } else if (value is EntityNameReference) { property = new EntityNameReferenceProperty { Value = (EntityNameReference)value }; } else if (value is DynamicEntity[]) { property = new DynamicEntityArrayProperty { Value = (DynamicEntity[])value }; } else if (value is Customer) { property = new CustomerProperty { Value = (Customer)value }; } else if (value is CrmCampaignIntegration.Services.CrmNumber) { property = new CrmNumberProperty { Value = (CrmCampaignIntegration.Services.CrmNumber)value }; } else if (value is CrmMoney) { property = new CrmMoneyProperty { Value = (CrmMoney)value }; } else if (value is CrmCampaignIntegration.Services.CrmFloat) { property = new CrmFloatProperty { Value = (CrmCampaignIntegration.Services.CrmFloat)value }; } else if (value is CrmDecimal) { property = new CrmDecimalProperty { Value = (CrmDecimal)value }; } else if (value is CrmCampaignIntegration.Services.CrmDateTime) { property = new CrmDateTimeProperty { Value = (CrmCampaignIntegration.Services.CrmDateTime)value }; } else if (value is CrmCampaignIntegration.Services.CrmBoolean) { property = new CrmBooleanProperty { Value = (CrmCampaignIntegration.Services.CrmBoolean)value }; } else { throw new NotSupportedException(string.Format("Unknown value type: {0}", value.GetType())); } property.Name = propertyName; return(property); }