コード例 #1
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="typeXrmSdk"></param>
        /// <param name="valueCRM"></param>
        /// <returns></returns>
        private static object ConfigureProperty(SDKore.Crm.Enum.TypeXrmSdk typeXrmSdk, object valueCRM)
        {
            switch (typeXrmSdk)
            {
            case SDKore.Crm.Enum.TypeXrmSdk.PartyList:
                var entities = (EntityCollection)valueCRM;
                SDKore.DomainModel.Lookup[] temp = new SDKore.DomainModel.Lookup[entities.Entities.Count];
                for (int index = 0; index < temp.Length; index++)
                {
                    EntityReference partyId = entities.Entities[index].GetAttributeValue <EntityReference>("partyid");

                    temp[index] = new SDKore.DomainModel.Lookup
                    {
                        Id   = partyId == null ? Guid.Empty : entities.Entities[index].GetAttributeValue <EntityReference>("partyid").Id,
                        Type = partyId == null ? null : entities.Entities[index].GetAttributeValue <EntityReference>("partyid").LogicalName,
                        Name = partyId == null ? entities.Entities[index].GetAttributeValue <string>("addressused").ToString() : entities.Entities[index].GetAttributeValue <EntityReference>("partyid").Name
                    };
                }
                return(temp);

            case SDKore.Crm.Enum.TypeXrmSdk.EntityReference:
                return(new SDKore.DomainModel.Lookup()
                {
                    Id = ((EntityReference)valueCRM).Id,
                    Name = ((EntityReference)valueCRM).Name,
                    Type = ((EntityReference)valueCRM).LogicalName
                });

            case SDKore.Crm.Enum.TypeXrmSdk.OptionSetValue:
                return(((OptionSetValue)valueCRM).Value);

            case SDKore.Crm.Enum.TypeXrmSdk.Money:
                return(((Microsoft.Xrm.Sdk.Money)valueCRM).Value);

            case SDKore.Crm.Enum.TypeXrmSdk.Datetime:
                return((DateTime)valueCRM);

            //return ((DateTime)valueCRM).ToLocalTime();
            //Atenção, usar o LocalTime no Framework altera o comportamento de hora de todo o sistema, e pode ser perigoso para tratamento de horas do banco de dados e do plugin
            //Foi decidido usar o LocalTime() somente na chamada das horas, quando necessário
            default:
                return(valueCRM);
            }
        }
コード例 #2
0
        public static SDKore.Crm.Enum.TypeXrmSdk GetTypeAttibute(string organization, string entity, string attribute, bool offline)
        {
            SDKore.Crm.Enum.TypeXrmSdk typeXrmSdk = SDKore.Crm.Enum.TypeXrmSdk.None;
            MetadataEngine.SetOrganization(organization);
            MetadataEngine.SetIsOffline(offline);

            var metaEntity = MetadataEngine.Metadata.Find(delegate(EntityMetadata e) { return(e.LogicalName.ToLower() == entity.ToLower()); });

            if (metaEntity != null)
            {
                var metaAttribute = metaEntity.Attributes.FirstOrDefault(delegate(AttributeMetadata a) { return(a.LogicalName.ToLower() == attribute.ToLower()); });
                if (metaAttribute != null)
                {
                    switch (metaAttribute.AttributeType.Value)
                    {
                    case AttributeTypeCode.PartyList:
                        typeXrmSdk = Enum.TypeXrmSdk.PartyList;
                        break;

                    case AttributeTypeCode.Money:
                        typeXrmSdk = SDKore.Crm.Enum.TypeXrmSdk.Money;
                        break;

                    case AttributeTypeCode.Lookup:
                    case AttributeTypeCode.Owner:
                    case AttributeTypeCode.Customer:
                        typeXrmSdk = SDKore.Crm.Enum.TypeXrmSdk.EntityReference;
                        break;

                    case AttributeTypeCode.Picklist:
                    case AttributeTypeCode.Status:
                    case AttributeTypeCode.State:
                        typeXrmSdk = SDKore.Crm.Enum.TypeXrmSdk.OptionSetValue;
                        break;
                    }
                }
            }

            return(typeXrmSdk);
        }