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)); }
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); }
public ICollection <string> GetSyncedRemoteColumns(ISynchronizedEntity baseEntity) { return(GetSyncedRemoteColumns(GetSyncedProperties(baseEntity))); }
public ICollection <PropertyInfo> GetSyncedProperties(ISynchronizedEntity baseEntity) { return(GetSyncedProperties(baseEntity.GetType())); }