public static string GetPropertyChangeValue(object obj1, string targetProperty, string EntityName) { string result = ""; ModelReflector.Property PropInfo = null; string PropName = ""; string targetPropertyName = ""; string propDataType = "String"; if (targetProperty.StartsWith("[") && targetProperty.EndsWith("]")) { var EntityInfo = ModelReflector.Entities.FirstOrDefault(p => p.Name == EntityName); PropName = targetProperty.TrimStart("[".ToArray()).TrimEnd("]".ToArray()); if (PropName.Contains(".")) { var targetProperties = PropName.Split(".".ToCharArray()); if (targetProperties.Length > 1) { var AssociationInfo = EntityInfo.Associations.FirstOrDefault(p => p.AssociationProperty == targetProperties[0]); if (AssociationInfo != null) { var targetEntityInfo = ModelReflector.Entities.FirstOrDefault(p => p.Name == AssociationInfo.Target); PropInfo = targetEntityInfo.Properties.FirstOrDefault(p => p.Name == targetProperties[1]); var assocInfo = targetEntityInfo.Associations.FirstOrDefault(p => p.AssociationProperty == PropInfo.Name); if (assocInfo != null) { propDataType = "String"; } targetPropertyName = targetProperties[0]; PropertyInfo[] properties = (obj1.GetType()).GetProperties().Where(p => p.PropertyType.FullName.StartsWith("System")).ToArray(); var Property = properties.FirstOrDefault(p => p.Name == targetPropertyName); object PropValue = Property.GetValue(obj1, null); result = GetValueForAssociationProperty(targetEntityInfo.Name, Convert.ToString(PropValue), PropInfo.Name); } } } else { targetPropertyName = EntityInfo.Properties.FirstOrDefault(p => p.Name == PropName).Name; PropertyInfo[] properties = (obj1.GetType()).GetProperties().Where(p => p.PropertyType.FullName.StartsWith("System")).ToArray(); var Property = properties.FirstOrDefault(p => p.Name == targetPropertyName); object PropValue = Property.GetValue(obj1, null); result = Convert.ToString(PropValue); } } else { PropertyInfo[] properties = (obj1.GetType()).GetProperties().Where(p => p.PropertyType.FullName.StartsWith("System")).ToArray(); var property = properties.FirstOrDefault(p => p.Name == targetProperty); object Value = property.GetValue(obj1, null); result = Convert.ToString(Value); } return(result); }
public static string GetTargetConditionValue(object obj1, string targetProperty, string EntityName) { string result = ""; ModelReflector.Property PropInfo = null; string PropName = ""; string targetPropertyName = ""; string propDataType = "String"; var EntityInfo = ModelReflector.Entities.FirstOrDefault(p => p.Name == EntityName); if (targetProperty.StartsWith("[") && targetProperty.EndsWith("]")) { //var EntityInfo = ModelReflector.Entities.FirstOrDefault(p => p.Name == EntityName); PropName = targetProperty.TrimStart("[".ToArray()).TrimEnd("]".ToArray()); if (PropName.Contains(".")) { var targetProperties = PropName.Split(".".ToCharArray()); if (targetProperties.Length > 1) { var AssociationInfo = EntityInfo.Associations.FirstOrDefault(p => p.AssociationProperty == targetProperties[0]); if (AssociationInfo != null) { var targetEntityInfo = ModelReflector.Entities.FirstOrDefault(p => p.Name == AssociationInfo.Target); PropInfo = targetEntityInfo.Properties.FirstOrDefault(p => p.Name == targetProperties[1]); var assocInfo = targetEntityInfo.Associations.FirstOrDefault(p => p.AssociationProperty == PropInfo.Name); if (assocInfo != null) { propDataType = "String"; } targetPropertyName = targetProperties[0]; PropertyInfo[] properties = (obj1.GetType()).GetProperties().Where(p => p.PropertyType.FullName.StartsWith("System")).ToArray(); var Property = properties.FirstOrDefault(p => p.Name == targetPropertyName); object PropValue = Property.GetValue(obj1, null); result = GetValueForAssociationProperty(targetEntityInfo.Name, Convert.ToString(PropValue), PropInfo.Name); } } } else { targetPropertyName = EntityInfo.Properties.FirstOrDefault(p => p.Name == PropName).Name; PropertyInfo[] properties = (obj1.GetType()).GetProperties().Where(p => p.PropertyType.FullName.StartsWith("System")).ToArray(); var Property = properties.FirstOrDefault(p => p.Name == targetPropertyName); object PropValue = Property.GetValue(obj1, null); result = Convert.ToString(PropValue); } } else if (targetProperty.StartsWith("[") && (targetProperty.ToLower().EndsWith("days") || targetProperty.ToLower().EndsWith("months") || targetProperty.ToLower().EndsWith("weeks") || targetProperty.ToLower().EndsWith("years"))) { var propNameArr = targetProperty.Split(" ".ToArray()); PropName = propNameArr[0].TrimStart("[".ToArray()).TrimEnd("]".ToArray()); if (PropName.Contains(".")) { var targetProperties = PropName.Split(".".ToCharArray()); if (targetProperties.Length > 1) { var AssociationInfo = EntityInfo.Associations.FirstOrDefault(p => p.AssociationProperty == targetProperties[0]); if (AssociationInfo != null) { var targetEntityInfo = ModelReflector.Entities.FirstOrDefault(p => p.Name == AssociationInfo.Target); PropInfo = targetEntityInfo.Properties.FirstOrDefault(p => p.Name == targetProperties[1]); var assocInfo = targetEntityInfo.Associations.FirstOrDefault(p => p.AssociationProperty == PropInfo.Name); if (assocInfo != null) { propDataType = "String"; } targetPropertyName = targetProperties[0]; PropertyInfo[] properties = (obj1.GetType()).GetProperties().Where(p => p.PropertyType.FullName.StartsWith("System")).ToArray(); var Property = properties.FirstOrDefault(p => p.Name == targetPropertyName); object PropValue = Property.GetValue(obj1, null); result = GetValueForAssociationProperty(targetEntityInfo.Name, Convert.ToString(PropValue), PropInfo.Name); if (!string.IsNullOrEmpty(result)) { DateTime dateValue = Convert.ToDateTime(result); result = dateValue.ToString("MM/dd/yyyy"); } } } } else { targetPropertyName = EntityInfo.Properties.FirstOrDefault(p => p.Name == PropName).Name; PropertyInfo[] properties = (obj1.GetType()).GetProperties().Where(p => p.PropertyType.FullName.StartsWith("System")).ToArray(); var Property = properties.FirstOrDefault(p => p.Name == targetPropertyName); object PropValue = Property.GetValue(obj1, null); DateTime dateValue = Convert.ToDateTime(PropValue); result = dateValue.ToString("MM/dd/yyyy"); } var propTarget = targetProperty.Replace("[", "").Replace("]", "").Trim(); result = EvaluateDateTime(result, propTarget.Replace(PropName, result)); } return(result); }