From ef6631fb690613e09ea6b3c4d0a612f4d3d4af9e Mon Sep 17 00:00:00 2001 From: Danil Kislov Date: Thu, 27 Jun 2019 19:02:24 +0300 Subject: [PATCH] =?UTF-8?q?=D0=A0=D0=B5=D1=84=D0=B0=D0=BA=D1=82=D0=BE?= =?UTF-8?q?=D1=80=D0=B8=D0=BD=D0=B3=20-=20=D0=BF=D0=B5=D1=80=D0=B5=D1=85?= =?UTF-8?q?=D0=BE=D0=B4=20=D0=BD=D0=B0=20=D0=BE=D0=B4=D0=B8=D0=BD=20=D0=BA?= =?UTF-8?q?=D0=BB=D0=B0=D1=81=D1=81=20=D1=81=20=D0=B2=D1=80=D0=B5=D0=BC?= =?UTF-8?q?=D0=B5=D0=BD=D0=B5=D0=BC.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../TaskTime/TaskTimeByCommitsCalculator.cs | 20 ++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/src/JiraTimeBot/TaskTime/TaskTimeByCommitsCalculator.cs b/src/JiraTimeBot/TaskTime/TaskTimeByCommitsCalculator.cs index 239a1c9..86fb601 100644 --- a/src/JiraTimeBot/TaskTime/TaskTimeByCommitsCalculator.cs +++ b/src/JiraTimeBot/TaskTime/TaskTimeByCommitsCalculator.cs @@ -79,20 +79,23 @@ namespace JiraTimeBot.TaskTime FixTooBigInterval(settings, workHours, totalCommitsCount); int remainMinutes = minutesPerWorkDay; - var timeControlTask = GetTimeControlTask(settings, ref remainMinutes); - var workTimeItems = SpreadTime(commits, remainMinutes, settings.RoundToMinutes); + var workTimeItems = new List(); + var timeControlTask = GetTimeControlTask(settings.TimeControlTask); if (timeControlTask != null) { workTimeItems.Add(timeControlTask); + remainMinutes -= (int)timeControlTask.TimeSpent.TotalMinutes; } + var workTasks = SpreadTime(commits, remainMinutes, settings.RoundToMinutes); + workTimeItems.AddRange(workTasks); + remainMinutes = minutesPerWorkDay - (int) workTimeItems.Sum(f => f.TimeSpent.TotalMinutes); if (remainMinutes != 0) { _log.Trace($"Погрешность распределения времени: {remainMinutes}. Добавляю к первой задаче."); } - if ((workTimeItems.First().TimeSpent.TotalMinutes > Math.Abs(remainMinutes) && remainMinutes < 0) || remainMinutes > 0) { //если переборщили или не достаточно добавили до 8 часов - скореектируем остаток в первой задаче (она самая трудозатратная). @@ -101,19 +104,18 @@ namespace JiraTimeBot.TaskTime PrintTotal(workTimeItems); - return workTimeItems; + return workTimeItems.OrderByDescending(f=>f.TimeSpent).ToList(); } - private TaskTimeItem GetTimeControlTask(Settings settings, ref int minutesPerWorkDay) + private TaskTimeItem GetTimeControlTask(string timeControlTask, int minutes = 30) { //Если указана задача контроля времени - то спишем туда 30 минут и вычеркнем их из общего рабочего времени. - if (!string.IsNullOrEmpty(settings.TimeControlTask)) + if (!string.IsNullOrEmpty(timeControlTask)) { - minutesPerWorkDay = minutesPerWorkDay - 30; return new TaskTimeItem { - TimeSpent = TimeSpan.FromMinutes(30), - Branch = settings.TimeControlTask, + TimeSpent = TimeSpan.FromMinutes(minutes), + Branch = timeControlTask, Commits = 1, Description = "Ведение учета времени" };