Exemple #1
0
        /// <summary>
        /// Gets Additional <see cref="Thing"/> related to the <see cref="ElementUsage"/> to copy
        /// </summary>
        /// <param name="transaction">The current transaction</param>
        /// <param name="partition">The current partition</param>
        /// <param name="securityContext">The security context</param>
        /// <param name="source">The current source that may contain <see cref="ElementUsage"/> to copy</param>
        /// <param name="readservice">The element-definition read service</param>
        /// <param name="allSourcesId">A list containing the identifier of all things to copy</param>
        /// <returns>A list containing additional <see cref="Thing"/> to copy</returns>guid
        private IReadOnlyList <Thing> GetElementDefinitionTreeFromRootDefinition(NpgsqlTransaction transaction, string partition, ISecurityContext securityContext, IReadOnlyList <Thing> source, IReadService readservice, IReadOnlyList <Guid> allSourcesId)
        {
            var additionalSources = new List <Thing>();
            var usages            = source.OfType <ElementUsage>().ToArray();

            if (usages.Length > 0)
            {
                var getResults = readservice.GetDeep(transaction, partition, usages.Select(x => x.ElementDefinition).Distinct().Where(x => !allSourcesId.Contains(x)).ToArray(), securityContext).ToList();
                additionalSources.AddRange(getResults);
                additionalSources.AddRange(this.GetElementDefinitionTreeFromRootDefinition(transaction, partition, securityContext, getResults, readservice, allSourcesId.Union(getResults.Select(x => x.Iid)).ToList()));
            }

            return(additionalSources);
        }