public void Initialize() { var teamById = Teams.ToDictionary(t => t.Id); var repoByName = Repos.ToDictionary(r => r.Name); foreach (var team in Teams) { if (!string.IsNullOrEmpty(team.ParentId)) { team.Parent = teamById[team.ParentId]; team.Parent.Children.Add(team); } foreach (var repoAccess in team.Repos) { repoAccess.Team = team; if (repoByName.TryGetValue(repoAccess.RepoName, out var repo)) { repoAccess.Repo = repo; repo.Teams.Add(repoAccess); } } team.Repos.RemoveAll(r => r.Repo == null); } foreach (var collaborator in Collaborators) { if (repoByName.TryGetValue(collaborator.RepoName, out var repo)) { collaborator.Repo = repo; repo.Users.Add(collaborator); } } Collaborators.RemoveAll(c => c.Repo == null); }
internal void Initialize() { if (Version != CurrentVersion) { return; } var teamById = Teams.ToDictionary(t => t.Id); var repoByName = Repos.ToDictionary(r => r.Name); var userByLogin = Users.ToDictionary(u => u.Login); foreach (var repo in Repos) { repo.Org = this; } foreach (var team in Teams) { team.Org = this; if (!string.IsNullOrEmpty(team.ParentId) && teamById.TryGetValue(team.ParentId, out var parentTeam)) { team.Parent = parentTeam; parentTeam.Children.Add(team); } foreach (var maintainerLogin in team.MaintainerLogins) { if (userByLogin.TryGetValue(maintainerLogin, out var maintainer)) { team.Maintainers.Add(maintainer); } } foreach (var memberLogin in team.MemberLogins) { if (userByLogin.TryGetValue(memberLogin, out var member)) { team.Members.Add(member); member.Teams.Add(team); } } foreach (var repoAccess in team.Repos) { repoAccess.Team = team; if (repoByName.TryGetValue(repoAccess.RepoName, out var repo)) { repoAccess.Repo = repo; repo.Teams.Add(repoAccess); } } team.Repos.RemoveAll(r => r.Repo == null); } foreach (var collaborator in Collaborators) { if (repoByName.TryGetValue(collaborator.RepoName, out var repo)) { collaborator.Repo = repo; repo.Users.Add(collaborator); } if (userByLogin.TryGetValue(collaborator.UserLogin, out var user)) { collaborator.User = user; user.Repos.Add(collaborator); } } Collaborators.RemoveAll(c => c.Repo == null || c.User == null); foreach (var user in Users) { user.Org = this; } }