/// <summary> /// Retrieve the Conditions for a given Data Model for a specific Thark Action /// </summary> /// <param name="dataModel">Data Model</param> /// <param name="contextAction">Context Action</param> /// <returns></returns> public static IEnumerable <ThuriaDataModelConditionMetadata> GetThuriaDataModelConditions(this object dataModel, DbContextAction contextAction) { var allConditions = new List <ThuriaDataModelConditionMetadata>(); var dataModelType = dataModel.GetType(); var allProperties = dataModelType.GetProperties(); foreach (var currentProperty in allProperties) { if (currentProperty.GetCustomAttribute <ThuriaIgnoreAttribute>() != null) { continue; } var propertyValue = currentProperty.GetValue(dataModel); var conditionColumnAttribute = currentProperty.GetCustomAttributes <ThuriaConditionColumnAttribute>() .FirstOrDefault(attribute => attribute.ContextAction == contextAction); if (propertyValue == null) { continue; } if (contextAction != DbContextAction.Retrieve && contextAction != DbContextAction.Delete && conditionColumnAttribute == null) { continue; } var isRequired = conditionColumnAttribute == null ? false : conditionColumnAttribute.IsRequired; var columnName = dataModel.GetThuriaDataModelColumnName(currentProperty.Name); var conditionMetadata = new ThuriaDataModelConditionMetadata(columnName.ColumnName, isRequired, propertyValue); allConditions.Add(conditionMetadata); } return(allConditions); }
public void Constructor() { //---------------Set up test pack------------------- //---------------Assert Precondition---------------- //---------------Execute Test ---------------------- var conditionMetadata = new ThuriaDataModelConditionMetadata("Id", true, null); //---------------Test Result ----------------------- conditionMetadata.Should().NotBeNull(); }