Esempio n. 1
0
        public IRemoteEntity ConvertToRemoteEntity(ISynchronizedEntity baseEntity, ODBase bpm = null)
        {
            var remoteEntityNameAttribute = baseEntity.GetType().GetTypeInfo().GetCustomAttribute <RemoteEntityName>();

            if (remoteEntityNameAttribute == null)
            {
                throw new Exception("Attribute [RemoteEntityName] not found in class <" + baseEntity.GetType().Name + ">.");
            }
            return(ConvertToRemoteEntity(baseEntity, remoteEntityNameAttribute.Name, bpm));
        }
Esempio n. 2
0
        public IRemoteEntity ConvertToRemoteEntity(ISynchronizedEntity baseEntity, string remoteEntityName, ODBase bpm = null)
        {
            ODObject record = ODObject.NewObject(remoteEntityName);

            if (baseEntity.EndSystemRecordId != null)
            {
                record.Guid = baseEntity.EndSystemRecordId.ToString();
            }
            else
            {
                var defaultMap = GetDefaultEntityValues(remoteEntityName);
                if (defaultMap != null)
                {
                    foreach (var map in defaultMap)
                    {
                        record[map.Key] = map.Value;
                    }
                }
            }
            var properties = GetSyncedProperties(baseEntity);

            foreach (var prop in properties)
            {
                var remoteEntityColumnNameAttr = prop.GetCustomAttribute <RemoteEntityColumnName>();
                var remoteEntityColumnName     = remoteEntityColumnNameAttr.Name;
                var columnValue = prop.GetValue(baseEntity);
                if (!string.IsNullOrEmpty(remoteEntityColumnNameAttr.MapKey))
                {
                    var remoteColumnValue = GetMappedRemoteColumnValue(remoteEntityColumnNameAttr.MapKey, columnValue);
                    if (remoteColumnValue != null)
                    {
                        record[remoteEntityColumnName] = remoteColumnValue;
                    }
                }
                else
                {
                    object result =
                        prop.PropertyType.GetInterface("ISynchronizedEntity") == null ?
                        columnValue :
                        (columnValue as ISynchronizedEntity)?.EndSystemRecordId;
                    if (result != null)
                    {
                        record[remoteEntityColumnName] = result;
                    }
                }
            }
            return(record);
        }
Esempio n. 3
0
 public ICollection <string> GetSyncedRemoteColumns(ISynchronizedEntity baseEntity)
 {
     return(GetSyncedRemoteColumns(GetSyncedProperties(baseEntity)));
 }
Esempio n. 4
0
 public ICollection <PropertyInfo> GetSyncedProperties(ISynchronizedEntity baseEntity)
 {
     return(GetSyncedProperties(baseEntity.GetType()));
 }