public IWorkEstimator Create(string accessToken, TeamInfo teamInfo) { teamInfo.Ensure().IsNotNull(); GitHubClient client = CreateClient(accessToken, teamInfo); return(new GitHubWorkEstimator(client, teamInfo, loggerFactory.CreateLogger <GitHubWorkEstimator>())); }
public async Task AddTeamAsync(string ownerLogin, TeamInfo info, CancellationToken cancellationToken) { ownerLogin.Ensure(nameof(ownerLogin)).IsNotNullOrWhitespace(); info.Ensure(nameof(info)).IsNotNull(); cancellationToken.ThrowIfCancellationRequested(); Member owner = this.context.Members.Where(item => item.MemberId == ownerLogin).SingleOrDefault(); if (owner == null) { owner = new Member { MemberId = ownerLogin }; await this.context.Members.AddAsync(owner, cancellationToken); } Team team = new Team { TeamId = info.Name, CostMarkers = info.CostLabels.Select(item => Convert(item)).ToList(), DefaultMilestonesToTrack = info.DefaultMilestonesToTrack, Organization = info.Organization, }; if (info.Repositories != null) { foreach (var r in info.Repositories) { team.Repos.Add(new Repo { RepoId = r }); } } if (info.TeamMembers != null) { foreach (var member in info.TeamMembers) { team.Members.Add(new Member { MemberId = member.Name }); } // TODO: Rework this part to allow storing the "IncludeInReporting" field for members. } await this.context.Teams.AddAsync(team, cancellationToken); }
public GitHubWorkEstimator(IGitHubClient client, TeamInfo options, ILogger <GitHubWorkEstimator> logger) { this.client = client.Ensure(nameof(client)).IsNotNull().Value; this.teamInfo = options.Ensure(nameof(options)).IsNotNull().Value; this.logger = logger.Ensure(nameof(logger)).IsNotNull().Value; }
public IProfileIconRetriever CreateProfileIconRetriever(string accessToken, TeamInfo teamInfo) { teamInfo.Ensure().IsNotNull(); return(new GitHubUserProfileIconRetriever(CreateClient(accessToken, teamInfo))); }