private string GetNavigationPropertyName(CrmAttribute crmAttribute)
        {
            if (crmAttribute.FieldType == AttributeTypeCode.Owner)
            {
                return("OwnerId_systemuser;OwnerId_team");
            }
            if (crmAttribute.LogicalName == "acceptingentityid")
            {
                return("acceptingentityid_queue;acceptingentityid_systemuser");
            }
            var value    = string.Empty;
            var entities = crmAttribute.EntityReferenceLogicalName.Split(";".ToCharArray());

            foreach (var entity in entities)
            {
                var related =
                    Relationships.EntityMetadata.ManyToOneRelationships.FirstOrDefault(
                        item => item.ReferencingAttribute == crmAttribute.LogicalName &&
                        item.ReferencedEntity == entity);
                if (related != null)
                {
                    value += related.ReferencingEntityNavigationPropertyName + ";";
                }
            }

            return(value.TrimEnd(";".ToCharArray()));
        }
        private string GetWebApiType(CrmAttribute crmAttribute)
        {
            var @readonly = string.Empty;
            var apiType   = string.Empty;

            if (!(crmAttribute.IsValidForCreate || crmAttribute.IsValidForUpdate))
            {
                @readonly = "ReadOnly - ";
            }
            if (crmAttribute.FieldType == AttributeTypeCode.Uniqueidentifier ||
                crmAttribute.FieldType == AttributeTypeCode.Lookup ||
                crmAttribute.FieldType == AttributeTypeCode.Customer ||
                crmAttribute.FieldType == AttributeTypeCode.Owner)
            {
                apiType = "Edm.Guid";
            }
            else if (crmAttribute.FieldType == AttributeTypeCode.Picklist ||
                     crmAttribute.FieldType == AttributeTypeCode.State ||
                     crmAttribute.FieldType == AttributeTypeCode.Status)
            {
                apiType = "Edm.Int32";
            }
            else if (crmAttribute.FieldType == AttributeTypeCode.String ||
                     crmAttribute.FieldType == AttributeTypeCode.Memo)
            {
                apiType = "Edm.String";
            }
            else if (crmAttribute.FieldType == AttributeTypeCode.Double)
            {
                apiType = "Edm.Double";
            }
            else if (crmAttribute.FieldType == AttributeTypeCode.Integer)
            {
                apiType = "Edm.Int32";
            }
            else if (crmAttribute.FieldType == AttributeTypeCode.Decimal ||
                     crmAttribute.FieldType == AttributeTypeCode.Money)
            {
                apiType = "Edm.Decimal";
            }
            else if (crmAttribute.FieldType == AttributeTypeCode.Boolean)
            {
                apiType = "Edm.Boolean";
            }
            else if (crmAttribute.FieldType == AttributeTypeCode.DateTime)
            {
                if (crmAttribute.DateTimeBehavior == DateTimeBehavior.DateOnly)
                {
                    apiType = "Edm.Date";
                }
                else
                {
                    apiType = "Edm.DateTimeOffset";
                }
            }

            return($"{@readonly}{apiType}");
        }
        private string GetXmlCommentForField(CrmAttribute crmAttribute, string Class)
        {
            const string temp    = "\t\t///<field name=\"{0}\" type=\"{1}\">{2}</field>\r\n";
            const string temp2   = "\t\t///<field name=\"{0}\" type=\"{1}\">{2}</field>\r\n";
            var          comment = string.Empty;

            if (crmAttribute.DateTimeBehavior == DateTimeBehavior.DateOnly)
            {
                comment += string.Format(temp, crmAttribute.SchemaName + "_DateOnly", GetFieldType(crmAttribute),
                                         GetWebApiType(crmAttribute));
            }
            else if (crmAttribute.DateTimeBehavior == DateTimeBehavior.TimeZoneIndependent)
            {
                if (crmAttribute.DateTimeFormat == DateTimeFormat.DateOnly)
                {
                    comment += string.Format(temp, crmAttribute.SchemaName + "_TimezoneDateOnly",
                                             GetFieldType(crmAttribute), GetWebApiType(crmAttribute));
                }
                else
                {
                    comment += string.Format(temp, crmAttribute.SchemaName + "_TimezoneDateAndTime",
                                             GetFieldType(crmAttribute), GetWebApiType(crmAttribute));
                }
            }
            else if (crmAttribute.DateTimeBehavior == DateTimeBehavior.UserLocal)
            {
                if (crmAttribute.DateTimeFormat == DateTimeFormat.DateOnly)
                {
                    comment += string.Format(temp, crmAttribute.SchemaName + "_UtcDateOnly", GetFieldType(crmAttribute),
                                             GetWebApiType(crmAttribute));
                }
                else
                {
                    comment += string.Format(temp, crmAttribute.SchemaName + "_UtcDateAndTime",
                                             GetFieldType(crmAttribute), GetWebApiType(crmAttribute));
                }
            }
            else
            {
                var fieldType = GetFieldType(crmAttribute);
                if (fieldType == "PickList")
                {
                    comment += string.Format(temp2, crmAttribute.SchemaName,
                                             $"OptionSet",
                                             $"{GetWebApiType(crmAttribute)} - this.OptionSet.{crmAttribute.SchemaName}");
                }
                else
                {
                    comment += string.Format(temp, crmAttribute.SchemaName, fieldType, GetWebApiType(crmAttribute));
                }
            }

            return(comment);
        }
Exemple #4
0
        private string GetLogicalCollectionName(CrmAttribute crmAttribute)
        {
            var value    = string.Empty;
            var entities = crmAttribute.EntityReferenceLogicalName.Split(";".ToCharArray());

            foreach (var entity in entities)
            {
                var request = new RetrieveEntityRequest
                {
                    EntityFilters = EntityFilters.Attributes,
                    LogicalName   = entity
                };
                var response = (RetrieveEntityResponse)CrmService.Execute(request);
                value += response.EntityMetadata.LogicalCollectionName + ";";
            }
            return(value.TrimEnd(";".ToCharArray()));
        }
Exemple #5
0
        private void LoadData(string entity)
        {
            var logicalName = entity.ToLower();

            Lists = new List <CrmAttribute>();
            var request = new RetrieveEntityRequest
            {
                EntityFilters = EntityFilters.Attributes,
                LogicalName   = logicalName
            };
            var response = (RetrieveEntityResponse)_crmService.Execute(request);

            ObjectTypeCode = response.EntityMetadata.ObjectTypeCode.Value;
            HasImage       = !string.IsNullOrEmpty(response.EntityMetadata.PrimaryImageAttribute);
            var requestRelationships = new RetrieveEntityRequest
            {
                EntityFilters = EntityFilters.Relationships,
                LogicalName   = logicalName
            };
            var responseRelationships = (RetrieveEntityResponse)_crmService.Execute(requestRelationships);

            var lists = new List <CrmAttribute>();

            foreach (var attribute in response.EntityMetadata.Attributes)
            {
                var crmAttribute = new CrmAttribute(attribute, logicalName);
                if (crmAttribute.FieldType == AttributeTypeCode.Lookup ||
                    crmAttribute.FieldType == AttributeTypeCode.Customer ||
                    crmAttribute.FieldType == AttributeTypeCode.Owner)
                {
                    crmAttribute.LogicalCollectionName  = GetLogicalCollectionName(crmAttribute);
                    crmAttribute.NavigationPropertyName =
                        GetNavigationPropertyName(crmAttribute, responseRelationships);
                }
                else
                {
                    crmAttribute.LogicalCollectionName = string.Empty;
                }

                lists.Add(crmAttribute);
            }

            lists = lists.OrderBy(row => row.Name).ToList();
            Lists = lists;
        }
Exemple #6
0
        private string GetNavigationPropertyName(CrmAttribute crmAttribute, RetrieveEntityResponse responseRelationships)
        {
            if (crmAttribute.FieldType == AttributeTypeCode.Owner)
            {
                return("ownerid;ownerid");
            }
            var value    = string.Empty;
            var entities = crmAttribute.EntityReferenceLogicalName.Split(";".ToCharArray());

            foreach (var entity in entities)
            {
                var related =
                    responseRelationships.EntityMetadata.ManyToOneRelationships.FirstOrDefault(
                        item => item.ReferencingAttribute == crmAttribute.LogicalName && item.ReferencedEntity == entity);
                if (related != null)
                {
                    value += related.ReferencingEntityNavigationPropertyName + ";";
                }
            }
            return(value.TrimEnd(";".ToCharArray()));
        }
 private string GetFieldType(CrmAttribute crmAttribute)
 {
     if (crmAttribute.FieldType == AttributeTypeCode.Picklist ||
         crmAttribute.FieldType == AttributeTypeCode.State ||
         crmAttribute.FieldType == AttributeTypeCode.Status)
     {
         return("PickList");
     }
     if (crmAttribute.FieldType == AttributeTypeCode.DateTime)
     {
         if (crmAttribute.DateTimeBehavior == DateTimeBehavior.DateOnly)
         {
             return("DateOnly");
         }
     }
     if (crmAttribute.FieldType == AttributeTypeCode.Lookup ||
         crmAttribute.FieldType == AttributeTypeCode.Owner ||
         crmAttribute.FieldType == AttributeTypeCode.Customer)
     {
         return("Lookup");
     }
     return(crmAttribute.FieldType.ToString());
 }
Exemple #8
0
        private string DeclareType(CrmAttribute crmAttribute)
        {
            if (crmAttribute.IsPrimaryKey)
            {
                return("Guid");
            }
            switch (crmAttribute.FieldType)
            {
            case AttributeTypeCode.Picklist:
            case AttributeTypeCode.State:
            case AttributeTypeCode.Status:
                return($"{RootNameSpace}.{ EntityName}OptionSets." + SafeType(crmAttribute.Name, EntityName + "OptionSets") + "?");

            case AttributeTypeCode.BigInt:
                return("long?");

            case AttributeTypeCode.Integer:
                return("int?");

            case AttributeTypeCode.Boolean:
                return("bool?");

            case AttributeTypeCode.DateTime:
                if (crmAttribute.DateTimeBehavior == null)
                {
                    return("DateTime?");
                }
                else if (crmAttribute.DateTimeBehavior == DateTimeBehavior.DateOnly)
                {
                    return("Date?");
                }
                else if (crmAttribute.DateTimeBehavior == DateTimeBehavior.TimeZoneIndependent)
                {
                    return("DateTime?");
                }
                else if (crmAttribute.DateTimeBehavior == DateTimeBehavior.UserLocal)
                {
                    return("DateTime?");
                }
                return("DateTime?");

            case AttributeTypeCode.Decimal:
                return("decimal?");

            case AttributeTypeCode.Money:
                return("decimal?");

            case AttributeTypeCode.Double:
                return("double?");

            case AttributeTypeCode.Uniqueidentifier:
                if (crmAttribute.LogicalName.ToLower() == (crmAttribute.EntityName + "Id").ToLower())
                {
                    return("Guid");
                }
                return("Guid?");

            case AttributeTypeCode.Lookup:
            case AttributeTypeCode.Owner:
            case AttributeTypeCode.Customer:
                return("EntityReference");

            case AttributeTypeCode.Memo:
            case AttributeTypeCode.Virtual:
            case AttributeTypeCode.EntityName:
            case AttributeTypeCode.String:
                if (crmAttribute.IsMultiSelectPicklist)
                {
                    return("System.Collections.Generic.List<" + $"{RootNameSpace}.{EntityName}OptionSets." + crmAttribute.Name + ">");
                }
                else
                {
                    return("string");
                }

            case AttributeTypeCode.PartyList:
                return("System.Collections.Generic.List<ActivityParty>");

            case AttributeTypeCode.ManagedProperty:
                return("?");

            default:
                return("?");
            }
        }
Exemple #9
0
        private string GetGet(CrmAttribute crmAttribute)
        {
            var code = string.Empty;

            switch (crmAttribute.FieldType)
            {
            case AttributeTypeCode.Picklist:
            case AttributeTypeCode.State:
            case AttributeTypeCode.Status:
                code += "get\r\n";
                code += "\t\t\t{{\r\n";
                code += "\t\t\t\tvar value = Entity.GetAttributeValue<OptionSetValue>(Fields." + crmAttribute.Name + ");\r\n";
                code += "\t\t\t\tif (value == null) return null;\r\n";
                code += "\t\t\t\treturn (" + $"{RootNameSpace}.{EntityName}OptionSets." + SafeType(crmAttribute.Name, EntityName + "OptionSets") + ")value.Value;\r\n";
                code += "\t\t\t}}";
                return(code);

            case AttributeTypeCode.BigInt:
                return("get {{ return Entity.GetAttributeValue<long?>(Fields." +
                       crmAttribute.Name + "); }}");

            case AttributeTypeCode.Integer:
                return("get {{ return Entity.GetAttributeValue<int?>(Fields." +
                       crmAttribute.Name + "); }}");

            case AttributeTypeCode.Boolean:
                return("get {{ return Entity.GetAttributeValue<bool?>(Fields." +
                       crmAttribute.Name + "); }}");

            case AttributeTypeCode.DateTime:
                if (crmAttribute.DateTimeBehavior == null)
                {
                    return("get {{ return Entity.GetAttributeValue<DateTime?>(Fields." +
                           crmAttribute.Name + "); }}");
                }
                else if (crmAttribute.DateTimeBehavior == DateTimeBehavior.DateOnly)
                {
                    code += "get\r\n";
                    code += "\t\t\t{{\r\n";
                    code += "\t\t\t\tvar dateTime = Entity.GetAttributeValue<DateTime?>(Fields." +
                            crmAttribute.Name + ");\r\n";
                    code += "\t\t\t\tif (dateTime == null) return null;\r\n";
                    code += "\t\t\t\treturn dateTime.Value.ToDate();\r\n";
                    code += "\t\t\t}}";
                    return(code);
                }
                else
                {
                    return("get {{ return Entity.GetAttributeValue<DateTime?>(Fields." +
                           crmAttribute.Name + "); }}");
                }

            case AttributeTypeCode.Decimal:
                return("get {{ return Entity.GetAttributeValue<decimal?>(Fields." +
                       crmAttribute.Name + "); }}");

            case AttributeTypeCode.Money:
                code += "get\r\n";
                code += "\t\t\t{{\r\n";
                code += "\t\t\t\tvar value = Entity.GetAttributeValue<Money>(Fields." + crmAttribute.Name + ");\r\n";
                code += "\t\t\t\tif (value == null) return null;\r\n";
                code += "\t\t\t\treturn value.Value;\r\n";
                code += "\t\t\t}}";
                return(code);

            case AttributeTypeCode.Double:
                return("get {{ return Entity.GetAttributeValue<double?>(Fields." + crmAttribute.Name + "); }}");

            case AttributeTypeCode.Uniqueidentifier:
                if (crmAttribute.IsPrimaryKey)
                {
                    return("get {{ return Id; }}");
                }
                else
                {
                    if (crmAttribute.LogicalName.ToLower() == (crmAttribute.EntityName + "Id").ToLower())
                    {
                        return("get {{ return Entity.GetAttributeValue<Guid>(Fields." + crmAttribute.Name + "); }}");
                    }
                    return("get {{ return Entity.GetAttributeValue<Guid?>(Fields." + crmAttribute.Name + "); }}");
                }

            case AttributeTypeCode.Lookup:
            case AttributeTypeCode.Owner:
            case AttributeTypeCode.Customer:
                return("get {{ return Entity.GetAttributeValue<EntityReference>(Fields." + crmAttribute.Name + "); }}");

            case AttributeTypeCode.Memo:
            case AttributeTypeCode.Virtual:
            case AttributeTypeCode.EntityName:
            case AttributeTypeCode.String:
                if (crmAttribute.IsMultiSelectPicklist)
                {
                    code += "get\r\n";
                    code += "\t\t\t{{\r\n";
                    code += "\t\t\t\tvar data = new System.Collections.Generic.List<" + $"{RootNameSpace}.{EntityName}OptionSets." + crmAttribute.Name + ">();\r\n";
                    code += "\t\t\t\tvar items = Entity.GetAttributeValue<OptionSetValueCollection>(Fields." + crmAttribute.Name + ");\r\n";
                    code += "\t\t\t\tif (items != null)\r\n";
                    code += "\t\t\t\t{{\r\n";
                    code += "\t\t\t\t\tforeach (OptionSetValue item in items)\r\n";
                    code += "\t\t\t\t\t{{\r\n";
                    code += "\t\t\t\t\t\tdata.Add((" + $"{RootNameSpace}.{EntityName}OptionSets." + crmAttribute.Name + ")item.Value);\r\n";
                    code += "\t\t\t\t\t}}\r\n";
                    code += "\t\t\t\t}}\r\n";
                    code += "\t\t\t\treturn data;\r\n";
                    code += "\t\t\t}}";
                    return(code);
                }
                else
                {
                    return("get {{ return Entity.GetAttributeValue<string>(Fields." + crmAttribute.Name + "); }}");
                }

            case AttributeTypeCode.PartyList:
                code += "get\r\n";
                code += "\t\t\t{{\r\n";
                code += "\t\t\t\tvar data = new System.Collections.Generic.List<ActivityParty>();\r\n";
                code += "\t\t\t\tforeach (var item in Entity.GetAttributeValue<EntityCollection>(Fields." + crmAttribute.Name + ").Entities)\r\n";
                code += "\t\t\t\t\tdata.Add(new ActivityParty(item));\r\n";
                code += "\t\t\t\treturn data;\r\n";
                code += "\t\t\t}}";
                return(code);

            default:
                return("?" + crmAttribute.FieldType);
            }
        }
Exemple #10
0
        private string GetSet(CrmAttribute crmAttribute)
        {
            var code = string.Empty;

            if (crmAttribute.IsValidForCreate || crmAttribute.IsValidForUpdate)
            {
                switch (crmAttribute.FieldType)
                {
                case AttributeTypeCode.Picklist:
                case AttributeTypeCode.State:
                case AttributeTypeCode.Status:
                    if (crmAttribute.IsRequired)
                    {
                        code  = "set\r\n\t{{\r\n\t\tEntity.Attributes[Fields." + crmAttribute.Name + "] = new OptionSetValue((int)value);\r\n";
                        code += "}}";
                        return(code);
                    }
                    code += "set\r\n";
                    code += "\t\t\t{{\r\n";
                    code += "\t\t\t\tif (value.HasValue)\r\n";
                    code += "\t\t\t\t\tEntity.Attributes[Fields." + crmAttribute.Name + "] = new OptionSetValue((int)value.Value);\r\n";
                    code += "\t\t\t\telse\r\n";
                    code += "\t\t\t\t\tEntity.Attributes[Fields." + crmAttribute.Name + "] = null;\r\n";
                    code += "\t\t\t}}";
                    return(code);

                case AttributeTypeCode.BigInt:
                    return("set {{ Entity.Attributes[Fields." + crmAttribute.Name +
                           "] = value; }}");

                case AttributeTypeCode.Integer:
                    return("set {{ Entity.Attributes[Fields." + crmAttribute.Name +
                           "] = value; }}");

                case AttributeTypeCode.Boolean:
                    return("set {{ Entity.Attributes[Fields." + crmAttribute.Name +
                           "] = value; }}");

                case AttributeTypeCode.DateTime:
                    if (crmAttribute.DateTimeBehavior == null)
                    {
                        return("set {{ Entity.Attributes[Fields." + crmAttribute.Name + "] = value; }}");
                    }
                    else if (crmAttribute.DateTimeBehavior == DateTimeBehavior.DateOnly)
                    {
                        code += "set\r\n";
                        code += "\t\t\t{{\r\n";
                        code += "\t\t\t\tif (value.HasValue)\r\n";
                        code += "\t\t\t\t{{\r\n";
                        code += "\t\t\t\t\tDateTime" + (crmAttribute.IsRequired ? "" : "?") + " dateTime = value.Value.ToDateTime();\r\n";
                        code += "\t\t\t\t\tEntity.Attributes[Fields." + crmAttribute.Name + "] = dateTime;\r\n";
                        code += "\t\t\t\t}}\r\n";
                        code += "\t\t\t\telse\r\n";
                        code += "\t\t\t\t\tEntity.Attributes[Fields." + crmAttribute.Name + "] = null;\r\n";
                        code += "\t\t\t}}";
                        return(code);
                    }
                    else
                    {
                        return("set {{ Entity.Attributes[Fields." + crmAttribute.Name + "] = value; }}");
                    }

                case AttributeTypeCode.Decimal:
                    return("set {{ Entity.Attributes[Fields." + crmAttribute.Name +
                           "] = value; }}");

                case AttributeTypeCode.Money:
                    code += "set\r\n";
                    code += "\t\t\t{{\r\n";
                    code += "\t\t\t\tif (value.HasValue)\r\n";
                    code += "\t\t\t\t\tEntity.Attributes[Fields." + crmAttribute.Name + "] = new Money(value.Value);\r\n";
                    code += "\t\t\t\telse\r\n";
                    code += "\t\t\t\t\tEntity.Attributes[Fields." + crmAttribute.Name + "] = null;\r\n";
                    code += "\t\t\t}}";
                    return(code);

                case AttributeTypeCode.Double:
                    return("set {{ Entity.Attributes[Fields." + crmAttribute.Name +
                           "] = value; }}");

                case AttributeTypeCode.Uniqueidentifier:
                    if (crmAttribute.LogicalName.ToLower() == (crmAttribute.EntityName + "Id").ToLower())
                    {
                        code += "set\r\n";
                        code += "\t\t\t{{\r\n";
                        code += "\t\t\t\tEntity.Attributes[Fields." + crmAttribute.Name + "] = value;\r\n";
                        code += "\t\t\t\tEntity.Id = value;\r\n";
                        code += "\t\t\t}}";
                        return(code);
                    }
                    else
                    {
                        return("set {{ Entity.Attributes[Fields." + crmAttribute.Name + "] = value; }}");
                    }

                case AttributeTypeCode.Lookup:
                case AttributeTypeCode.Owner:
                case AttributeTypeCode.Customer:
                    return("set {{ Entity.Attributes[Fields." + crmAttribute.Name + "] = value; }}");

                case AttributeTypeCode.Memo:
                case AttributeTypeCode.Virtual:
                case AttributeTypeCode.EntityName:
                case AttributeTypeCode.String:
                    if (crmAttribute.IsMultiSelectPicklist)
                    {
                        code += "set\r\n";
                        code += "\t\t\t{{\r\n";
                        code += "\t\t\t\tvar data = new OptionSetValueCollection();\r\n";
                        code += "\t\t\t\tforeach (var item in value)\r\n";
                        code += "\t\t\t\t{{\r\n";
                        code += "\t\t\t\t\tdata.Add(new OptionSetValue((int)item));\r\n";
                        code += "\t\t\t\t}}\r\n";
                        code += "\t\t\t\tif (data.Count == 0)\r\n";
                        code += "\t\t\t\t{{\r\n";
                        code += "\t\t\t\t\tEntity.Attributes[Fields." + crmAttribute.Name + "] = null;\r\n";
                        code += "\t\t\t\t}}\r\n";
                        code += "\t\t\t\telse\r\n";
                        code += "\t\t\t\t{{\r\n";
                        code += "\t\t\t\t\tEntity.Attributes[Fields." + crmAttribute.Name + "] = data;\r\n";
                        code += "\t\t\t\t}}\r\n";
                        code += "\t\t\t}}";
                        return(code);
                    }
                    else
                    {
                        return("set {{ Entity.Attributes[Fields." + crmAttribute.Name + "] = value; }}");
                    }

                case AttributeTypeCode.PartyList:
                    code += "set\r\n";
                    code += "\t\t\t{{\r\n";
                    code += "\t\t\t\tvar data = new EntityCollection();\r\n";
                    code += "\t\t\t\tforeach (var item in value)\r\n";
                    code += "\t\t\t\t\tdata.Entities.Add(item.Entity);\r\n";
                    code += "\t\t\t\tEntity.Attributes[Fields." + crmAttribute.Name + "] = data;\r\n";
                    code += "\t\t\t}}";
                    return(code);

                case AttributeTypeCode.ManagedProperty:
                    return("set;");    //return string.Empty;

                default:
                    return("set;");    //return string.Empty;
                }
            }
            return(string.Empty);
        }
Exemple #11
0
        private string GetXml(CrmAttribute crmAttribute)
        {
            var dataType = string.Empty;
            var readOnly = string.Empty;

            if (!crmAttribute.IsValidForCreate && !crmAttribute.IsValidForUpdate)
            {
                readOnly = "ReadOnly";
            }
            if (readOnly.Length > 0)
            {
                dataType += readOnly + " - ";
            }
            if (crmAttribute.IsPrimaryKey)
            {
                dataType += "Primary Key - ";
            }
            if (crmAttribute.IsRequired)
            {
                dataType += "Required - ";
            }
            if (crmAttribute.FieldType == AttributeTypeCode.DateTime)
            {
                if (crmAttribute.DateTimeBehavior == null)
                {
                    dataType += "DateTime";
                }
                else if (crmAttribute.DateTimeBehavior == DateTimeBehavior.DateOnly)
                {
                    dataType += "DateTimeBehavior: DateOnly - DateTimeFormat: DateOnly";
                }
                else if (crmAttribute.DateTimeBehavior == DateTimeBehavior.UserLocal)
                {
                    if (crmAttribute.DateTimeFormat == DateTimeFormat.DateOnly)
                    {
                        dataType += "DateTimeBehavior: UserLocal - DateTimeFormat: DateOnly";
                    }
                    else if (crmAttribute.DateTimeFormat == DateTimeFormat.DateAndTime)
                    {
                        dataType += "DateTimeBehavior: UserLocal - DateTimeFormat: DateAndTime";
                    }
                }
                else if (crmAttribute.DateTimeBehavior == DateTimeBehavior.TimeZoneIndependent)
                {
                    if (crmAttribute.DateTimeFormat == DateTimeFormat.DateOnly)
                    {
                        dataType += "DateTimeBehavior: TimeZoneIndependent - DateTimeFormat: DateOnly";
                    }
                    else if (crmAttribute.DateTimeFormat == DateTimeFormat.DateAndTime)
                    {
                        dataType += "DateTimeBehavior: TimeZoneIndependent - DateTimeFormat: DateAndTime";
                    }
                }
            }
            else
            {
                if (crmAttribute.IsMultiSelectPicklist)
                {
                    dataType += "MultiSelectPicklist";
                }
                else
                {
                    dataType += crmAttribute.FieldType.ToString();
                }
            }
            if (crmAttribute.MaxLength.HasValue)
            {
                dataType += " - MaxLength: " + crmAttribute.MaxLength;
            }
            if (crmAttribute.Min.HasValue)
            {
                dataType += " - MinValue: " + crmAttribute.Min.Value.ToString("#,##0");
            }
            if (crmAttribute.Max.HasValue)
            {
                dataType += " - MaxValue: " + crmAttribute.Max.Value.ToString("#,##0");
            }
            var xml = "/// <summary>\r\n";

            if (!string.IsNullOrEmpty(crmAttribute.Description))
            {
                var description = crmAttribute.Description.Replace("\r\n", " ").Replace("\n", " ");
                description = description.Trim();
                xml        += "\t\t/// <para>" + XmlEscape(description) + "</para>\r\n";
            }
            xml += "\t\t/// <para>" + dataType + "</para>\r\n";
            xml += "\t\t/// <para>" + crmAttribute?.DisplayName?.Replace("\n", "") + "</para>\r\n";
            xml += "\t\t/// </summary>\r\n";
            xml += "\t\t[DebuggerNonUserCode()]\r\n";
            return(xml);
        }
Exemple #12
0
        private string DeclareType(CrmAttribute crmAttribute)
        {
            if (crmAttribute.IsPrimaryKey)
            {
                return("Guid");
            }
            switch (crmAttribute.FieldType)
            {
            case AttributeTypeCode.Picklist:
            case AttributeTypeCode.State:
            case AttributeTypeCode.Status:
                return(crmAttribute.Name + "?");

            case AttributeTypeCode.BigInt:
                return("long?");

            case AttributeTypeCode.Integer:
                return("int?");

            case AttributeTypeCode.Boolean:
                return("bool?");

            case AttributeTypeCode.DateTime:
                if (crmAttribute.DateTimeBehavior == null)
                {
                    return("DateTime?");
                }
                else if (crmAttribute.DateTimeBehavior == DateTimeBehavior.DateOnly)
                {
                    return("Date?");
                }
                else if (crmAttribute.DateTimeBehavior == DateTimeBehavior.TimeZoneIndependent)
                {
                    return("DateTime?");
                }
                else if (crmAttribute.DateTimeBehavior == DateTimeBehavior.UserLocal)
                {
                    return("DateTime?");
                }
                return("DateTime?");

            case AttributeTypeCode.Decimal:
                return("decimal?");

            case AttributeTypeCode.Money:
                return("decimal?");

            case AttributeTypeCode.Double:
                return("double?");

            case AttributeTypeCode.Uniqueidentifier:
                return("Guid?");

            case AttributeTypeCode.Lookup:
            case AttributeTypeCode.Owner:
            case AttributeTypeCode.Customer:
                return("EntityReference");

            case AttributeTypeCode.Memo:
            case AttributeTypeCode.Virtual:
            case AttributeTypeCode.EntityName:
            case AttributeTypeCode.String:
                return("string");

            case AttributeTypeCode.PartyList:
                return("List<ActivityParty>");

            case AttributeTypeCode.ManagedProperty:
                return("?");

            default:
                return("?");
            }
        }