Beispiel #1
0
        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);
        }
Beispiel #2
0
        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);
        }
Beispiel #3
0
        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;
                }
            }
        }
Beispiel #4
0
        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));
        }
Beispiel #5
0
        public Task DoTheJob(Settings settings, ITasksProcessor tasksProcessor, bool dummyMode, CancellationToken cancellationToken)
        {
            _log.Info("Начинаем работу");

            return(Task.Run(() => DoTheJobImpl(settings, tasksProcessor, dummyMode, cancellationToken), cancellationToken));
        }