From 41e5ab8f0f82f7e57c58a2bf16033475eb9e717c Mon Sep 17 00:00:00 2001 From: Danil Kislov Date: Thu, 14 Mar 2019 14:46:36 +0300 Subject: [PATCH] =?UTF-8?q?=D0=9E=D0=A8=D0=B8=D0=B1=D0=BA=D0=B0=20=D0=B2?= =?UTF-8?q?=20=D1=80=D0=B0=D1=81=D0=BF=D1=80=D0=B5=D0=B4=D0=B5=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=D0=B8=D0=B8=20=D0=B2=D1=80=D0=B5=D0=BC=D0=B5=D0=BD=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- JiraTimeBotForm/TaskTime/TaskTimeDiscoverer.cs | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/JiraTimeBotForm/TaskTime/TaskTimeDiscoverer.cs b/JiraTimeBotForm/TaskTime/TaskTimeDiscoverer.cs index 211a96d..3dd54f2 100644 --- a/JiraTimeBotForm/TaskTime/TaskTimeDiscoverer.cs +++ b/JiraTimeBotForm/TaskTime/TaskTimeDiscoverer.cs @@ -74,12 +74,13 @@ namespace JiraTimeBotForm.TaskTime } int remainMinutes = settings.MinuterPerWorkDay; + int totalCommitsCount = workTasks.Count; //Нам нужно раскидать 480 минут в день. - foreach (var taskGroup in workTasks.GroupBy(f => f)) + foreach (var taskGroup in workTasks.GroupBy(f => f).OrderByDescending(f=>f.Count())) { int currentTaskCommits = taskGroup.Count(); - int currentTaskTime = (int)RoundTo15(settings.MinuterPerWorkDay / workTasks.Count * currentTaskCommits); + int currentTaskTime = (int)RoundTo(settings.MinuterPerWorkDay / totalCommitsCount * currentTaskCommits); remainMinutes = remainMinutes - currentTaskTime; var taskTimeItem = new TaskTimeItem @@ -91,19 +92,20 @@ namespace JiraTimeBotForm.TaskTime workTimeItems.Add(taskTimeItem); } + //если переборщили или не достаточно добавили до 8 часов - скореектируем остаток в первой задаче (она самая трудозатратная). workTimeItems.First().Time += TimeSpan.FromMinutes(remainMinutes); return workTimeItems; } - private decimal RoundTo15(decimal value, bool up = true) + private decimal RoundTo(decimal value, decimal to = 15, bool up = true) { - if ((value % 15) == 0) + if ((value % to) == 0) return value; if (up) - return (value - (value % 15) + 15); + return (value - (value % to) + to); - return (value - (value % 15)); + return (value - (value % to)); } }