/// <summary> /// Erstellt eine neue Aufwandsübersicht mit Einträgen von GitHub /// </summary> /// <remarks> /// Holt alle relevanten, bezogen auf den Aufwand, Issues und deren Kommentare von GitHub /// und erstellt daraus eine entsprechende Übersicht. /// </remarks> /// <param name="name"></param> /// <returns></returns> public EffortSheet CreateNew(string name) { EffortSheet sheet = new EffortSheet(name); foreach (var issue in issueRepository.GetAllEffortRelatedIssues("Aufwand: ", "suchja")) { IReadOnlyCollection <IssueComment> comments = issueRepository.GetAllEffortRelatedComments("Aufwand: ", issue); HourlyEffortGroup eIssue = new HourlyEffortGroup(issue); foreach (var item in comments) { HourlyEffortEntry eComment = new HourlyEffortEntry(item); eIssue.AddEffortComment(eComment); } if (eIssue.EffortInHours > 0.0f) { sheet.AddEffortEntry(eIssue); } // Anzeige, dass dem Anwender klar ist, dass noch etwas passiert. Console.Write("."); } foreach (var issue in issueRepository.GetAllEffortRelatedIssues("Iteration: ", "suchja")) { IReadOnlyCollection <IssueComment> comments = issueRepository.GetAllEffortRelatedComments("Iteration: ", issue); foreach (var item in comments) { if (item.Body.StartsWith("Iteration: ") && item.Reactions.Hooray == 0) { // extract owner and repository name string[] repoUrlSegments = new Uri(issue.Url).Segments; string repoName = repoUrlSegments[3].TrimEnd('/'); // Namen extrahieren string itName; int itNameEndPosition = item.Body.IndexOf(Environment.NewLine); itName = item.Body.Remove(itNameEndPosition, item.Body.Length - itNameEndPosition); var it = sheet.GetIteration(itName); if (it == null) { it = new Iteration(itName, repoName); it.AddIterationEntry(new IterationEntry(issue)); sheet.AddIteration(it); } else { it.AddIterationEntry(new IterationEntry(issue)); } // wir brauchen nur einen Kommentar um zu bestätigen, dass dieses Issue // tatsächlich zu einer Iteration gehört. break; } } // Anzeige, dass dem Anwender klar ist, dass noch etwas passiert. Console.Write("."); } return(sheet); }
public void AddEffortComment(HourlyEffortEntry comment) { // TODO: Überlegen wie ich mit Kommentaren umgehe die bereits in der Liste sind. comments.Add(comment); }