Рефакторинг - переход на один класс с временем.

This commit is contained in:
Danil Kislov
2019-06-27 19:02:24 +03:00
parent c8e0782c3a
commit ef6631fb69
@@ -79,20 +79,23 @@ namespace JiraTimeBot.TaskTime
FixTooBigInterval(settings, workHours, totalCommitsCount); FixTooBigInterval(settings, workHours, totalCommitsCount);
int remainMinutes = minutesPerWorkDay; int remainMinutes = minutesPerWorkDay;
var timeControlTask = GetTimeControlTask(settings, ref remainMinutes);
var workTimeItems = SpreadTime(commits, remainMinutes, settings.RoundToMinutes);
var workTimeItems = new List<TaskTimeItem>();
var timeControlTask = GetTimeControlTask(settings.TimeControlTask);
if (timeControlTask != null) if (timeControlTask != null)
{ {
workTimeItems.Add(timeControlTask); 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); remainMinutes = minutesPerWorkDay - (int) workTimeItems.Sum(f => f.TimeSpent.TotalMinutes);
if (remainMinutes != 0) if (remainMinutes != 0)
{ {
_log.Trace($"Погрешность распределения времени: {remainMinutes}. Добавляю к первой задаче."); _log.Trace($"Погрешность распределения времени: {remainMinutes}. Добавляю к первой задаче.");
} }
if ((workTimeItems.First().TimeSpent.TotalMinutes > Math.Abs(remainMinutes) && remainMinutes < 0) || remainMinutes > 0) if ((workTimeItems.First().TimeSpent.TotalMinutes > Math.Abs(remainMinutes) && remainMinutes < 0) || remainMinutes > 0)
{ {
//если переборщили или не достаточно добавили до 8 часов - скореектируем остаток в первой задаче (она самая трудозатратная). //если переборщили или не достаточно добавили до 8 часов - скореектируем остаток в первой задаче (она самая трудозатратная).
@@ -101,19 +104,18 @@ namespace JiraTimeBot.TaskTime
PrintTotal(workTimeItems); 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 минут и вычеркнем их из общего рабочего времени. //Если указана задача контроля времени - то спишем туда 30 минут и вычеркнем их из общего рабочего времени.
if (!string.IsNullOrEmpty(settings.TimeControlTask)) if (!string.IsNullOrEmpty(timeControlTask))
{ {
minutesPerWorkDay = minutesPerWorkDay - 30;
return new TaskTimeItem return new TaskTimeItem
{ {
TimeSpent = TimeSpan.FromMinutes(30), TimeSpent = TimeSpan.FromMinutes(minutes),
Branch = settings.TimeControlTask, Branch = timeControlTask,
Commits = 1, Commits = 1,
Description = "Ведение учета времени" Description = "Ведение учета времени"
}; };