/// <summary> /// Retrieve all direct references from api parameters. /// </summary> /// <param name="apiParameters">A list of ApiParameterInfo objects.</param> /// <returns>A list of EntityInfo.</returns> public static List <EntityInfo> GetApiParametersDirectReferences( this IEnumerable <ApiParameterInfo> apiParameters) { var directReferences = new List <EntityInfo>(); if (apiParameters == null) { return(directReferences); } var entityComparer = new EntityInfoComparer(); foreach (var apiActionParameter in apiParameters) { if (apiActionParameter.IsValid()) { directReferences = directReferences .Union( apiActionParameter.GetApiParameterDirectReferences(), entityComparer) .ToList(); } } return(directReferences); }
/// <summary> /// Retrieve viewModels from actions. /// </summary> /// <param name="layoutActions">A list of layout actions.</param> /// <param name="apis">A list of api.</param> /// <returns>A list of EntityInfo.</returns> public static List <EntityInfo> GetActionsViewModelsEntities( this ActionList layoutActions, ApiList apis) { var viewModels = new List <EntityInfo>(); if (!layoutActions.IsValid() || !apis.IsValid()) { return(viewModels); } var entityComparer = new EntityInfoComparer(); if (layoutActions != null) { foreach (var action in layoutActions) { if (action.IsValid()) { viewModels = viewModels .Union( action.GetActionViewModelsEntities(apis), entityComparer) .ToList(); } } } return(viewModels); }
/// <summary> /// Retrieve direct references from api action parameters and return type. /// </summary> /// <param name="apiAction">An ApiActionInfo object.</param> /// <returns>A list of EntityInfo.</returns> public static List <EntityInfo> GetApiActionDirectReferences(this ApiActionInfo apiAction) { var directReferences = new List <EntityInfo>(); if (!apiAction.IsValid()) { return(directReferences); } var entityComparer = new EntityInfoComparer(); if (apiAction.Parameters != null) { directReferences = directReferences .Union( apiAction.Parameters.GetApiParametersDirectReferences(), entityComparer) .ToList(); } if (apiAction.ReturnType.IsValid() && apiAction.ReturnType.References != null) { directReferences = directReferences .Union( apiAction.ReturnType.GetEntityDirectReferences(), entityComparer) .ToList(); } 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); }
/// <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 ViewModels from a list of api in function of a layout action. /// </summary> /// <param name="apis">An ApiList object.</param> /// <param name="layoutAction">A layout action name.</param> /// <returns>A list of EntityInfo.</returns> public static List <EntityInfo> GetApiListViewModelsEntities( this ApiList apis, string layoutAction) { var viewModels = new List <EntityInfo>(); if (!apis.IsValid() || !layoutAction.IsValid()) { return(viewModels); } var entityComparer = new EntityInfoComparer(); foreach (var api in apis) { if (api.IsValid()) { viewModels = viewModels .Union( api.GetApiViewModelsEntities(layoutAction), entityComparer) .ToList(); } } return(viewModels); }
/// <summary> /// Retrieve ViewModels from all api actions parameters and return types. /// </summary> /// <param name="apiActions">A list of api actions.</param> /// <returns>A list of EntityInfo.</returns> public static List <EntityInfo> GetApiActionListViewModelsEntities(this ApiActionList apiActions) { var viewModels = new List <EntityInfo>(); if (!apiActions.IsValid()) { return(viewModels); } var entityComparer = new EntityInfoComparer(); foreach (var apiAction in apiActions) { if (apiAction.IsValid()) { viewModels = viewModels .Union( apiAction.GetApiActionViewModelsEntities(), entityComparer) .ToList(); } } return(viewModels); }
/// <summary> /// Retrieve all indirect references from an entity. /// </summary> /// <param name="entity">An EntityInfo object.</param> /// <returns>A list of EntityInfo.</returns> public static List <EntityInfo> GetEntityIndirectReferences(this EntityInfo entity) { var allIndirectReferences = new List <EntityInfo>(); if (!entity.IsValid()) { return(allIndirectReferences); } var entityComparer = new EntityInfoComparer(); foreach (var property in entity.GetLinkedProperties()) { if (property.IsValid()) { allIndirectReferences = allIndirectReferences .Union( property.GetIndirectReferences(), entityComparer) .ToList(); } } return(allIndirectReferences); }
/// <summary> /// Retrieve all direct references from concerns. /// </summary> /// <param name="concerns">A ConcernList object.</param> /// <returns>A list of EntityInfo.</returns> public static List <EntityInfo> GetConcernListDirectReferences(this ConcernList concerns) { var directReferences = new List <EntityInfo>(); if (!concerns.IsValid()) { return(directReferences); } var entityComparer = new EntityInfoComparer(); foreach (var concern in concerns) { if (concern.IsValid()) { directReferences = directReferences .Union( concern.GetConcernDirectReferences(), entityComparer) .ToList(); } } return(directReferences); }
/// <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 all ViewModels from an api in function of a layout action. /// </summary> /// <param name="api">An ApiInfo object.</param> /// <returns>A list of EntityInfo.</returns> public static List <EntityInfo> GetApiViewModelsEntities( this ApiInfo api, string layoutAction) { var viewModels = new List <EntityInfo>(); if (!api.IsValid() || !layoutAction.IsValid()) { return(viewModels); } var entityComparer = new EntityInfoComparer(); if (api.Actions.IsValid()) { viewModels = viewModels .Union( api.Actions.GetApiActionListViewModelsEntities(layoutAction), entityComparer) .ToList(); } return(viewModels); }
/// <summary> /// Retrieve ViewModels from a layout action. /// </summary> /// <param name="action">An ActionInfo object.</param> /// <returns>A list of EntityInfo.</returns> public static List <EntityInfo> GetActionViewModelsEntities( this ActionInfo action, ApiList apis) { var viewModels = new List <EntityInfo>(); if (!action.IsValid() || !apis.IsValid()) { return(viewModels); } var apiAction = action.GetAction(); var entityComparer = new EntityInfoComparer(); if (apiAction.IsValid()) { viewModels = viewModels .Union( apis.GetApiListViewModelsEntities(apiAction), entityComparer) .ToList(); } return(viewModels); }
/// <summary> /// Retrieve all direct references from an api list. /// </summary> /// <param name="apis">An ApiList object.</param> /// <returns>A list of EntityInfo.</returns> public static List <EntityInfo> GetApiListDirectReferences(this ApiList apis) { var directReferences = new List <EntityInfo>(); if (!apis.IsValid()) { return(directReferences); } var entityComparer = new EntityInfoComparer(); foreach (var api in apis) { if (api.IsValid()) { directReferences = directReferences .Union( api.GetApiDirectReferences(), entityComparer) .ToList(); } } return(directReferences); }
/// <summary> /// Retrieve all direct references from a list of layouts. /// </summary> /// <param name="layouts">A LayoutList object.</param> /// <returns>A list of EntityInfo.</returns> public static List <EntityInfo> GetLayoutListDirectReferences(this LayoutList layouts) { var directReferences = new List <EntityInfo>(); if (!layouts.IsValid()) { return(directReferences); } var entityComparer = new EntityInfoComparer(); foreach (var layout in layouts) { if (layout.IsValid()) { directReferences = directReferences .Union( layout.GetLayoutDirectReferences(), entityComparer) .ToList(); } } return(directReferences); }
/// <summary> /// Retrieve ViewModels from layout actions. /// </summary> /// <param name="layout">A LayoutInfo object.</param> /// <param name="apis">An ApiList object.</param> /// <returns>A list of EntityInfo.</returns> public static List <EntityInfo> GetLayoutViewModelsEntities( this LayoutInfo layout, ApiList apis) { var viewModels = new List <EntityInfo>(); if (!apis.IsValid() || !layout.IsValid()) { return(viewModels); } var entityComparer = new EntityInfoComparer(); if (layout.Actions.IsValid()) { viewModels = viewModels .Union( layout.Actions.GetActionsViewModelsEntities(apis), entityComparer) .ToList(); } return(viewModels); }
/// <summary> /// Retrieve used Models inside the application (Layouts and Apis parameters references models) /// </summary> /// <param name="smartApp">A SmartAppInfo object.</param> /// <returns>A list of EntityInfo.</returns> public static List <EntityInfo> GetUsedModels(this SmartAppInfo smartApp) { var usedModels = new List <EntityInfo>(); var specifiedModels = new List <EntityInfo>(); if (!smartApp.IsValid()) { return(usedModels); } var entityComparer = new EntityInfoComparer(); if (smartApp.Version.IsValid() && smartApp.DataModel.IsValid() && smartApp.Concerns.IsValid() && smartApp.Api.IsValid()) { specifiedModels = specifiedModels .Union( smartApp.Concerns.GetConcernListDirectReferences(), entityComparer) .ToList(); specifiedModels = specifiedModels .Union( smartApp.Api.GetApiListDirectReferences(), entityComparer) .ToList(); foreach (var entity in specifiedModels) { if (entity.IsValid()) { usedModels = usedModels .Union( entity.GetEntityIndirectReferences(), entityComparer) .ToList(); } } usedModels = usedModels .Union( specifiedModels, entityComparer) .ToList(); } return(usedModels); }
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()); }
/// <summary> /// Retrieve all direct references from an api. /// </summary> /// <param name="api">An ApiInfo object.</param> /// <returns>A list of EntityInfo.</returns> public static List <EntityInfo> GetApiDirectReferences(this ApiInfo api) { var directReferences = new List <EntityInfo>(); if (!api.IsValid()) { return(directReferences); } var entityComparer = new EntityInfoComparer(); if (api.Actions.IsValid()) { directReferences = directReferences .Union( api.Actions.GetApiActionListDirectReferences(), entityComparer) .ToList(); } return(directReferences); }
/// <summary> /// Retrieve all direct references from a concern. /// </summary> /// <param name="concern">A ConcernInfo object.</param> /// <returns>A list of EntityInfo.</returns> public static List <EntityInfo> GetConcernDirectReferences(this ConcernInfo concern) { var directReferences = new List <EntityInfo>(); if (!concern.IsValid()) { return(directReferences); } var entityComparer = new EntityInfoComparer(); if (concern.Layouts.IsValid()) { directReferences = directReferences .Union( concern.Layouts.GetLayoutListDirectReferences(), entityComparer) .ToList(); } return(directReferences); }
/// <summary> /// Retrieve used ViewModels inside the application (Apis parameters models). /// </summary> /// <param name="smartApp">A SmartAppInfo object.</param> /// <returns>A list of EntityInfo.</returns> public static List <EntityInfo> GetViewModels(this SmartAppInfo smartApp) { var usedViewModels = new List <EntityInfo>(); if (!smartApp.IsValid()) { return(usedViewModels); } var entityComparer = new EntityInfoComparer(); if (smartApp.Version.IsValid() && smartApp.Api.IsValid()) { usedViewModels = usedViewModels .Union( smartApp.Api.GetApiListViewModelsEntities(), entityComparer) .ToList(); } return(usedViewModels); }
/// <summary> /// Retrieve all direct references from api action parameters. /// </summary> /// <param name="apiParameter">An ApiParameterInfo object.</param> /// <returns>A list of EntityInfo;</returns> public static List <EntityInfo> GetApiParameterDirectReferences(this ApiParameterInfo apiParameter) { var directReferences = new List <EntityInfo>(); if (!apiParameter.IsValid()) { return(directReferences); } var entityComparer = new EntityInfoComparer(); if (apiParameter.DataModel.IsValid() && apiParameter.DataModel.References != null) { directReferences = directReferences .Union( apiParameter.DataModel.GetEntityDirectReferences(), entityComparer) .ToList(); } return(directReferences); }
/// <summary> /// Retrieve all direct references from layout datamodel. /// </summary> /// <param name="layout">A LayoutInfo object.</param> /// <returns>A list of EntityInfo.</returns> public static List <EntityInfo> GetLayoutDirectReferences(this LayoutInfo layout) { var directReferences = new List <EntityInfo>(); if (!layout.IsValid()) { return(directReferences); } var entityComparer = new EntityInfoComparer(); if (layout.DataModel.IsValid() && layout.DataModel.References != null) { directReferences = directReferences .Union( layout.DataModel.GetEntityDirectReferences(), entityComparer) .ToList(); } return(directReferences); }