/// <summary> /// Gets all the resources matching the type within the resource. /// </summary> /// <param name="resource">The resource.</param> /// <param name="model">The model to search.</param> /// <param name="relationshipType">The type of relationship to filter by.</param> /// <param name="type">The resource type.</param> /// <returns>A list of the <see cref="ResourceItem"/> matching the pattern.</returns> public static List <ResourceItem> FindRelatedResourcesByType(this ResourceItem resource, AzureIntegrationServicesModel model, ResourceRelationshipType relationshipType, string type) { _ = resource = resource ?? throw new ArgumentNullException(nameof(resource)); var relatedResources = new List <ResourceItem>(); var children = resource.ResourceRelationships?.Where(r => r.ResourceRelationshipType == relationshipType); if (children != null && children.Any()) { foreach (var child in children) { var relatedResource = model.FindResourceByRefId(child.ResourceRefId); if (relatedResource != null && relatedResource.Type == type) { relatedResources.Add(relatedResource); } } } return(relatedResources); }
/// <summary> /// Initializes a new instance of the <see cref="ResourceRelationship"/> class. /// </summary> /// <param name="refId">The refId of the other resource.</param> /// <param name="resourceRelationshipType">The type of relationship as seen from this resource.</param> public ResourceRelationship(string refId, ResourceRelationshipType resourceRelationshipType) { ResourceRefId = refId; ResourceRelationshipType = resourceRelationshipType; }