private List <Dependency> GetSolutionMissingDependencies(string solutionUniqueName)
        {
            var request = new RetrieveMissingDependenciesRequest
            {
                SolutionUniqueName = solutionUniqueName
            };

            var response = (RetrieveMissingDependenciesResponse)_service.Execute(request);

            var listComponent = response.EntityCollection.Entities.Select(e => e.ToEntity <Dependency>()).ToList();

            return(listComponent);
        }
Esempio n. 2
0
        /// <summary>
        /// Method gets solution components dependency
        /// </summary>
        /// <param name="serviceProxy">service proxy</param>
        /// <param name="masterSolutionId">master solution id</param>
        /// <param name="solutionUniqueName">solution unique name</param>
        /// <returns>returns components dependency entity collection</returns>
        private List <EntityCollection> GetDependentComponents(OrganizationServiceProxy serviceProxy, Guid masterSolutionId, string solutionUniqueName)
        {
            List <EntityCollection> dependentDetails = new List <EntityCollection>();

            RetrieveMissingDependenciesRequest missingDependenciesRequest = new RetrieveMissingDependenciesRequest
            {
                SolutionUniqueName = solutionUniqueName
            };

            RetrieveMissingDependenciesResponse missingDependenciesResponse = (RetrieveMissingDependenciesResponse)serviceProxy.Execute(missingDependenciesRequest);

            if (missingDependenciesResponse != null && missingDependenciesResponse.EntityCollection != null && missingDependenciesResponse.EntityCollection.Entities.Count > 0)
            {
                dependentDetails.Add(missingDependenciesResponse.EntityCollection);
            }

            return(dependentDetails);
        }
        public EntityCollection GetMissingDependencies(
            string SolutionName)
        {
            Logger.LogInformation("Retrieving Missing Dependencies for Solution: {0}", SolutionName);

            if (string.IsNullOrEmpty(SolutionName))
            {
                throw new Exception("SolutionName is required to retrieve missing dependencies");
            }

            var request = new RetrieveMissingDependenciesRequest()
            {
                SolutionUniqueName = SolutionName
            };

            RetrieveMissingDependenciesResponse response = OrganizationService.Execute(request) as RetrieveMissingDependenciesResponse;

            Logger.LogInformation("{0} Missing dependencies retrieved for Solution", response.EntityCollection.Entities.Count);

            return(response.EntityCollection);
        }
        private List <SolutionComponent> GetSolutionAllRequiredComponents(Guid solutionId, string solutionUniqueName)
        {
            var request = new RetrieveMissingDependenciesRequest
            {
                SolutionUniqueName = solutionUniqueName,
            };

            var response = (RetrieveMissingDependenciesResponse)_service.Execute(request);

            var listComponent = response.EntityCollection.Entities.Select(e => e.ToEntity <Dependency>()).ToList();

            GetAllRequiredComponents(listComponent);

            HashSet <Tuple <int, Guid> > result = new HashSet <Tuple <int, Guid> >();

            foreach (var item in listComponent.Where(d => d.RequiredComponentObjectId.HasValue && d.RequiredComponentType != null))
            {
                result.Add(Tuple.Create(item.RequiredComponentType.Value, item.RequiredComponentObjectId.Value));
            }

            var repository = new SolutionComponentRepository(_service);

            var components = repository.GetSolutionComponents(solutionId, new ColumnSet(SolutionComponent.Schema.Attributes.componenttype, SolutionComponent.Schema.Attributes.objectid, SolutionComponent.Schema.Attributes.rootcomponentbehavior));

            foreach (var item in components.Where(c => c.ObjectId.HasValue && c.ComponentType != null))
            {
                var key = Tuple.Create(item.ComponentType.Value, item.ObjectId.Value);

                result.Remove(key);
            }

            return(result.Select(c => new SolutionComponent()
            {
                ComponentType = new OptionSetValue(c.Item1),
                ObjectId = c.Item2,
            }).ToList());
        }