fun report()

in src/main/kotlin/org/jetbrains/teamcity/github/GitHubWebHookSuggestion.kt [33:69]


        fun report(buildTypes: Collection<SBuildType>, resultConsumer: HealthStatusItemConsumer, oauthConnectionsManager: ProjectConnectionsManager, hasHooksInStorage: (GitHubRepositoryInfo) -> Boolean) {
            val pairs = Util.getVcsRootsWhereHookCanBeInstalledForSuggestion(buildTypes, oauthConnectionsManager)

            val groupByGitHubInfo: Map<GitHubRepositoryInfo?, List<Pair<SBuildType, VcsRootInstance>>> = pairs.groupBy { Util.getGitHubInfo(it.second) }

            val processed = HashSet<GitHubRepositoryInfo>()

            for ((info, repoPairs) in groupByGitHubInfo) {
                if (info == null) continue
                // Ignore roots with unresolved references in url
                if (info.isHasParameterReferences()) continue
                if (hasHooksInStorage(info)) continue

                val groupByProject: Map<SProject, List<Pair<SBuildType, VcsRootInstance>>> = repoPairs.groupBy { it.first.project }

                for ((project, projectPairs) in groupByProject) {
                    val item = WebHookAddHookHealthItem(info, project)

                    // we already created health item for this repository
                    if (!processed.add(info)) continue

                    val instances: List<VcsRootInstance> = projectPairs.map { it.second }

                    // Project
                    resultConsumer.consumeForProject(project, item)

                    // BuildTypes
                    projectPairs.map { it.first }.forEach { resultConsumer.consumeForBuildType(it, item) }

                    // VcsRoots
                    instances
                            .map { it.parent }
                            .filter { it.project.belongsTo(project) }
                            .forEach { resultConsumer.consumeForVcsRoot(it, item) }
                }
            }
        }