Beispiel #1
0
        public static object ToCrmType(this object objectValue, CrmDataType crmDataType)
        {
            object returnValue = objectValue;

            if (returnValue == null)
            {
                return(returnValue);
            }


            switch (crmDataType)
            {
            case CrmDataType.UNIQUEIDENTIFIER:
                if (objectValue.GetType() == typeof(string))
                {
                    returnValue = new Guid(objectValue.ToString());
                }
                break;

            case CrmDataType.STRING:
                returnValue = returnValue.ToString();
                break;

            case CrmDataType.INT:
                returnValue = Convert.ToInt32(returnValue);
                break;

            case CrmDataType.DATETIME:
                returnValue = Convert.ToDateTime(returnValue);
                break;

            case CrmDataType.ENTITYREFERENCE:
                if (objectValue.GetType() == typeof(EntityReferenceWrapper))
                {
                    returnValue = ((EntityReferenceWrapper)objectValue).ToCrmEntityReference();
                }
                break;

            case CrmDataType.OPTIONSETVALUE:
                if (objectValue.GetType() == typeof(OptionSetValueWrapper))
                {
                    returnValue = ((OptionSetValueWrapper)objectValue).ToCrmOptionSetValue();
                }
                break;

            case CrmDataType.MONEY:
                returnValue = new Money(Convert.ToDecimal(objectValue));
                break;

            case CrmDataType.DECIMAL:
                returnValue = Convert.ToDecimal(objectValue);
                break;

            default:
                break;
            }

            return(returnValue);
        }
Beispiel #2
0
        public static Entity ToCrmEntity(this object entityObject)
        {
            Entity returnValue = null;

            if (entityObject == null)
            {
                return(null);
            }

            System.Reflection.MemberInfo info = entityObject.GetType();

            var schemaAttr = info.GetCustomAttributes(typeof(CrmSchemaName), false).OfType <CrmSchemaName>().FirstOrDefault();

            if (schemaAttr != null)
            {
                string entityName = schemaAttr.SchemaName;
                returnValue = new Entity(entityName);
            }
            else
            {
                return(null);
            }

            PropertyInfo[] properties = entityObject.GetType().GetProperties();

            foreach (PropertyInfo p in properties)
            {
                var attrFiledName     = p.GetCustomAttributes(typeof(CrmFieldName), false).OfType <CrmFieldName>().FirstOrDefault();
                var attrFiledDataType = p.GetCustomAttributes(typeof(CrmFieldDataType), false).OfType <CrmFieldDataType>().FirstOrDefault();

                if (attrFiledName == null || attrFiledDataType == null)
                {
                    continue;
                }

                string      fieldName     = attrFiledName.FieldName;
                CrmDataType fieldDataType = attrFiledDataType.CrmDataType;

                var objectValue = entityObject.GetType().GetProperty(p.Name).GetValue(entityObject, null);

                if (objectValue != null)
                {
                    object crmFieldValue = objectValue.ToCrmType(fieldDataType);

                    if (objectValue.GetType() == typeof(Guid) && (Guid)crmFieldValue == Guid.Empty)
                    {
                        continue;
                    }

                    returnValue[fieldName] = crmFieldValue;
                }
            }

            return(returnValue);
        }
 public CrmFieldDataType(CrmDataType dataType)
 {
     this._dataType = dataType;
 }
Beispiel #4
0
        public static object ToCrmType(this object objectValue, CrmDataType crmDataType)
        {
            object returnValue = objectValue;

            if (returnValue == null)
            {
                return(returnValue);
            }


            switch (crmDataType)
            {
            case CrmDataType.UNIQUEIDENTIFIER:
                if (objectValue.GetType() == typeof(string))
                {
                    returnValue = new Guid(objectValue.ToString());
                }
                break;

            case CrmDataType.STRING:
                returnValue = returnValue.ToString();
                break;

            case CrmDataType.INT:
                returnValue = Convert.ToInt32(returnValue);
                break;

            case CrmDataType.SMALLINT:
                returnValue = Convert.ToInt16(returnValue);
                break;

            case CrmDataType.DATETIME:
                returnValue = Convert.ToDateTime(returnValue);
                break;

            case CrmDataType.ENTITYREFERENCE:
                if (objectValue.GetType() == typeof(EntityReferenceWrapper))
                {
                    returnValue = ((EntityReferenceWrapper)objectValue).ToCrmEntityReference();
                }
                break;

            case CrmDataType.OPTIONSETVALUE:
                if (objectValue.GetType() == typeof(OptionSetValueWrapper))
                {
                    returnValue = ((OptionSetValueWrapper)objectValue).ToCrmOptionSetValue();
                }
                break;

            case CrmDataType.MONEY:
                returnValue = new Money(Convert.ToDecimal(objectValue));
                break;

            case CrmDataType.DECIMAL:
                returnValue = Convert.ToDecimal(objectValue);
                break;

            case CrmDataType.BOOL:
                returnValue = Convert.ToBoolean(objectValue);
                break;

            case CrmDataType.ACTIVITYPARTY:
                if (objectValue.GetType() == typeof(EntityReferenceWrapper))
                {
                    Entity party = new Entity("activityparty");

                    party["partyid"] = ((EntityReferenceWrapper)objectValue).ToCrmEntityReference();

                    returnValue = new Entity[] { party };
                }
                break;

            case CrmDataType.DOUBLE:
                returnValue = Convert.ToDouble(returnValue);
                break;

            default:
                break;
            }

            return(returnValue);
        }