public void NotifyCommitersAboutOldBranches() { var oldBranches = repository.SearchForOldBranches(branchDeadlinePeriod) .Where(b => !b.Merged) .ToArray(); var branchesClassificator = BranchClassificator.Create(oldBranches); foreach (var commiterEmail in branchesClassificator.CommiterEmails) { var branchesPerCommiter = branchesClassificator .GetOldBranchesBy(commiterEmail) .Select(BuildBranchHref) .ToArray(); if (branchesPerCommiter.Any()) { var bodyBuilder = new StringBuilder(); bodyBuilder.AppendLine("Дорогой разработчик!"); bodyBuilder.AppendLine(); bodyBuilder.AppendLine($"Спешу обратить твое внимание на старые ветки в репозитории: {string.Join(", ", branchesPerCommiter)}"); bodyBuilder.AppendLine("В них давно не ведется никакой работы, это похоже на разбитое окно. Пожалуйста, подумай какая ценность есть в этих ветках и как эту ценность доставить."); bodyBuilder.AppendLine(); bodyBuilder.AppendLine("С любовью, твой автоматический уведомлятор."); var message = new Email { Recipients = new[] { commiterEmail }, Title = "Уведомление о старых ветках", Body = bodyBuilder.ToString(), CopyTo = "*****@*****.**" }; repoNotificationChat.Post(me, message); } } }
public static BranchClassificator Create(Branch[] branches) { var result = new BranchClassificator(); foreach (var branch in branches) { result.Classify(branch); } return(result); }