/// <summary> /// Retrieve indirect references from a property. /// This case happen when a model is used but /// not directly inside the modelization (Layouts, Apis) /// </summary> /// <param name="property">A PropertyInfo object.</param> /// <returns>A list of EntityInfo.</returns> public static List <EntityInfo> GetIndirectReferences(this PropertyInfo property) { var indirectReferences = new List <EntityInfo>(); if (!property.IsValid()) { return(indirectReferences); } var entityComparer = new EntityInfoComparer(); if (property.Parent.IsValid() && !indirectReferences.Any(item => entityComparer.Equals( item, (EntityInfo)property.Parent))) { indirectReferences.Add((EntityInfo)property.Parent); } if (property.Target.IsValid() && !indirectReferences.Any(item => entityComparer.Equals( item, property.Target))) { indirectReferences.Add(property.Target); } return(indirectReferences); }
/// <summary> /// Retrieve all direct references from an entity. /// </summary> /// <param name="entity">An EntityInfo object.</param> /// <returns>A list of EntityInfo.</returns> public static List <EntityInfo> GetEntityDirectReferences(this EntityInfo entity) { var directReferences = new List <EntityInfo>(); if (!entity.IsValid()) { return(directReferences); } var entityComparer = new EntityInfoComparer(); if (entity.References != null) { foreach (var reference in entity.References) { if (reference.Target.IsValid() && !directReferences.Any(item => entityComparer.Equals( item, reference.Target))) { directReferences.Add(reference.Target); } } } return(directReferences); }
/// <summary> /// Retrieve ViewModels from an api action for a specific layout action. /// </summary> /// <param name="apiAction">An ApiActionInfo object.</param> /// <param name="layoutAction">A layout name.</param> /// <returns>A list of EntityInfo.</returns> public static List <EntityInfo> GetApiActionViewModelsEntities( this ApiActionInfo apiAction, string layoutAction) { var viewModels = new List <EntityInfo>(); if (!apiAction.IsValid() || !layoutAction.IsValid()) { return(viewModels); } var entityComparer = new EntityInfoComparer(); if (apiAction.Id.ToLower().Equals(layoutAction.ToLower()) && apiAction.Parameters != null) { if (apiAction.ReturnType.IsValid() && !viewModels.Any(item => entityComparer.Equals( item, apiAction.ReturnType))) { viewModels.Add(apiAction.ReturnType); } viewModels = viewModels .Union( apiAction.Parameters.GetApiParametersViewModelsEntities(), entityComparer) .ToList(); } return(viewModels); }
/// <summary> /// Retrieve ViewModels from a list of api action parameters. /// </summary> /// <param name="apiParameters">A list of ApiParameterInfo.</param> /// <returns>A list of EntityInfo.</returns> public static List <EntityInfo> GetApiParametersViewModelsEntities( this IEnumerable <ApiParameterInfo> apiParameters) { var viewModels = new List <EntityInfo>(); if (apiParameters == null) { return(viewModels); } var entityComparer = new EntityInfoComparer(); foreach (var apiActionParameter in apiParameters) { if (apiActionParameter.IsValid() && apiActionParameter.IsModel() && apiActionParameter.DataModel.IsValid() && !viewModels.Any(item => entityComparer.Equals( item, apiActionParameter.DataModel))) { viewModels.Add(apiActionParameter.DataModel); } } return(viewModels); }
public static bool IsInherited( this EntityInfo entity, SchemaArray <EntityInfo> entities) { var entityComparer = new EntityInfoComparer(); return(entities .Where(e => e.IsValid() && e.BaseEntity.IsValid() && entityComparer.Equals( entity, e.BaseEntity)) .Any()); }