private bool SetTaskTimesForDate(DateTime setForDate, DateTime realDate, Settings settings, ITasksProcessor tasksProcessor, bool dummyMode, List <TaskTimeItem> taskTimes, CancellationToken cancellationToken) { if (!(tasksProcessor is MeetingProcessor)) { List <TaskTimeItem> commits = taskTimes; ModifyWorktimeByManualLogs(setForDate, settings, cancellationToken, commits); taskTimes = _taskTimeDiscoverer.CalculateTaskTime(commits, settings, cancellationToken); } else { var provider = _repositoryProviders.JiraHistory; taskTimes = provider.GetDayWorklogs(realDate, settings, cancellationToken); } if (cancellationToken.IsCancellationRequested) { return(false); } if (!taskTimes.Any()) { return(false); } tasksProcessor.Process(setForDate, realDate, taskTimes, settings, dummyMode, cancellationToken); _log.Info("Готово."); return(true); }
private bool SetTaskTimesForDateImpl(DateTime setForDate, DateTime realDate, Settings settings, ITasksProcessor tasksProcessor, bool dummyMode, CancellationToken cancellationToken) { List <TaskTimeItem> tasks = new List <TaskTimeItem>(); if (tasksProcessor is MeetingProcessor) { var provider = _repositoryProviders.JiraHistory; tasks = provider.GetDayWorklogs(realDate, settings, cancellationToken); return(SetTaskTimesForDate(setForDate, realDate, settings, tasksProcessor, dummyMode, tasks, cancellationToken)); } switch (settings.WorkType) { case WorkType.Mercurial: { var repo = _repositoryProviders.JiraCommitEmulator; tasks = GetTasksFromRepositories(realDate, settings, new[] { repo }); break; } case WorkType.JiraLogs: { var repo = _repositoryProviders.JiraCommitEmulator; tasks = GetTasksFromRepositories(realDate, settings, new[] { repo }); break; } case WorkType.GitLogs: { var repo = _repositoryProviders.GitLog; tasks = GetTasksFromRepositories(realDate, settings, new[] { repo }); break; } case WorkType.CVSMixed: { var repos = new[] { _repositoryProviders.GitLog as IRepositoryLog, _repositoryProviders.MercurialLog }; tasks = GetTasksFromRepositories(realDate, settings, repos); break; } default: { return(false); } } var result = SetTaskTimesForDate(setForDate, realDate, settings, tasksProcessor, dummyMode, tasks, cancellationToken); return(result); }
private void DoTheJobImpl(Settings settings, ITasksProcessor tasksProcessor, bool dummyMode, CancellationToken cancellationToken) { int daysDiff = 0; if (tasksProcessor is MeetingProcessor) { daysDiff = -1; } var setForDate = DateTime.Now.Date; while (true) { DateTime realDate = DateTime.Now.Date.AddDays(daysDiff); if (SetTaskTimesForDateImpl(setForDate, realDate, settings, tasksProcessor, dummyMode, cancellationToken)) { return; } if (cancellationToken.IsCancellationRequested) { return; } _log.Warn($"{realDate:dd.MM.yyyy} вы не сделали ничего полезного =) Использую предыдущий день."); daysDiff--; if (daysDiff < -7) { _log.Error("Не нашли ни одного коммита за предыдущие 7 дней. Возможно вы в отпуске? Выхожу."); return; } } }
public Task SetTaskTimesForDate(DateTime setForDate, DateTime realDate, Settings settings, ITasksProcessor tasksProcessor, bool dummyMode, CancellationToken cancellationToken) { _log.Info("Начинаем работу"); return(Task.Run(() => SetTaskTimesForDateImpl(setForDate, realDate, settings, tasksProcessor, dummyMode, cancellationToken), cancellationToken)); }
public Task DoTheJob(Settings settings, ITasksProcessor tasksProcessor, bool dummyMode, CancellationToken cancellationToken) { _log.Info("Начинаем работу"); return(Task.Run(() => DoTheJobImpl(settings, tasksProcessor, dummyMode, cancellationToken), cancellationToken)); }