ОШибка в распределении времени

This commit is contained in:
Danil Kislov
2019-03-14 14:46:36 +03:00
parent 2a2c54e9e7
commit 41e5ab8f0f
@@ -74,12 +74,13 @@ namespace JiraTimeBotForm.TaskTime
} }
int remainMinutes = settings.MinuterPerWorkDay; int remainMinutes = settings.MinuterPerWorkDay;
int totalCommitsCount = workTasks.Count;
//Нам нужно раскидать 480 минут в день. //Нам нужно раскидать 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 currentTaskCommits = taskGroup.Count();
int currentTaskTime = (int)RoundTo15(settings.MinuterPerWorkDay / workTasks.Count * currentTaskCommits); int currentTaskTime = (int)RoundTo(settings.MinuterPerWorkDay / totalCommitsCount * currentTaskCommits);
remainMinutes = remainMinutes - currentTaskTime; remainMinutes = remainMinutes - currentTaskTime;
var taskTimeItem = new TaskTimeItem var taskTimeItem = new TaskTimeItem
@@ -91,19 +92,20 @@ namespace JiraTimeBotForm.TaskTime
workTimeItems.Add(taskTimeItem); workTimeItems.Add(taskTimeItem);
} }
//если переборщили или не достаточно добавили до 8 часов - скореектируем остаток в первой задаче (она самая трудозатратная).
workTimeItems.First().Time += TimeSpan.FromMinutes(remainMinutes); workTimeItems.First().Time += TimeSpan.FromMinutes(remainMinutes);
return workTimeItems; 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; return value;
if (up) if (up)
return (value - (value % 15) + 15); return (value - (value % to) + to);
return (value - (value % 15)); return (value - (value % to));
} }
} }