diff --git a/JiraTimeBotForm/DI/ContainerBuilder.cs b/JiraTimeBotForm/DI/ContainerBuilder.cs index a03c053..a111c47 100644 --- a/JiraTimeBotForm/DI/ContainerBuilder.cs +++ b/JiraTimeBotForm/DI/ContainerBuilder.cs @@ -28,8 +28,11 @@ namespace JiraTimeBotForm.DI _builder.Register(c => new CommitSkipper()).As(); _builder.RegisterType().As().AsSelf(); + _builder.RegisterType().As().AsSelf(); - _builder.RegisterType().As().AsSelf(); + //_builder.RegisterType().As().AsSelf(); + + _builder.RegisterType().As().AsSelf(); _builder.RegisterType().AsSelf().As(); _builder.RegisterType().AsSelf().As(); @@ -38,7 +41,7 @@ namespace JiraTimeBotForm.DI _builder.RegisterType().AsSelf().As(); _builder.RegisterType().AsSelf().AsImplementedInterfaces(); - _builder.Register(c => new Job(c.Resolve(), c.Resolve(), c.Resolve())).AsSelf(); + _builder.Register(c => new Job(c.Resolve(), c.Resolve(), c.Resolve())).AsSelf(); var container = _builder.Build(); return container; diff --git a/JiraTimeBotForm/JiraIntegration/JiraApi.cs b/JiraTimeBotForm/JiraIntegration/JiraApi.cs index 75ba915..c805c6e 100644 --- a/JiraTimeBotForm/JiraIntegration/JiraApi.cs +++ b/JiraTimeBotForm/JiraIntegration/JiraApi.cs @@ -1,10 +1,10 @@ using System; using System.Collections.Generic; using System.Linq; +using System.Threading; using Atlassian.Jira; using JiraTimeBotForm.Configuration; using JiraTimeBotForm.JiraIntegration.Comments; -using JiraTimeBotForm.TaskTime; using JiraTimeBotForm.TaskTime.Objects; namespace JiraTimeBotForm.JiraIntegration @@ -34,6 +34,16 @@ namespace JiraTimeBotForm.JiraIntegration } } + public List GetTodayIssues(Settings settings, DateTime? date = null, CancellationToken cancellationToken = default(CancellationToken)) + { + var jira = Jira.CreateRestClient(settings.JiraUrl, settings.JiraUserName, settings.JiraPassword); + date = date.GetValueOrDefault(DateTime.Now.Date); + + var jql = $"status changed by '{settings.JiraUserName}' during (\"{date.Value:yyyy-MM-dd}\",\"{date.Value.AddDays(1):yyyy-MM-dd}\")"; + var affectedIssues = jira.Issues.GetIssuesFromJqlAsync(jql, 50, 0, cancellationToken).Result.ToList(); + return affectedIssues; + } + public void SetTodayWorklog(List taskTimeItems, Settings settings, DateTime? date = null, bool dummy = false, bool addCommentsToWorklog = false) { var jira = Jira.CreateRestClient(settings.JiraUrl, settings.JiraUserName, settings.JiraPassword); diff --git a/JiraTimeBotForm/JiraIntegration/JiraCommitEmulator.cs b/JiraTimeBotForm/JiraIntegration/JiraCommitEmulator.cs new file mode 100644 index 0000000..cd858ff --- /dev/null +++ b/JiraTimeBotForm/JiraIntegration/JiraCommitEmulator.cs @@ -0,0 +1,43 @@ +using System; +using System.Collections.Generic; +using System.Threading; +using JiraTimeBotForm.Configuration; +using JiraTimeBotForm.Mercurial; +using JiraTimeBotForm.Mercurial.Objects; + +namespace JiraTimeBotForm.JiraIntegration +{ + public class JiraCommitEmulator : IMercurialLog + { + private readonly ILog _log; + private readonly JiraApi _jiraApi; + + public JiraCommitEmulator(ILog log, JiraApi jiraApi) + { + _log = log; + _jiraApi = jiraApi; + } + + public List GetMercurialLog(Settings settings, + DateTime? date = null, + CancellationToken cancellationToken = default(CancellationToken)) + { + date = date.GetValueOrDefault(DateTime.Now.Date); + var workTasks = new List(); + var issues = _jiraApi.GetTodayIssues(settings, date, cancellationToken); + + foreach (var issue in issues) + { + workTasks.Add(new MercurialCommitItem + { + Description = issue.Summary, + Time = issue.Updated.GetValueOrDefault(date.Value), + Branch = issue.Key.Value, + FilesAffected = 1 + }); + } + + return workTasks; + } + } +} diff --git a/JiraTimeBotForm/JiraTimeBotForm.csproj b/JiraTimeBotForm/JiraTimeBotForm.csproj index 70eb979..a880d78 100644 --- a/JiraTimeBotForm/JiraTimeBotForm.csproj +++ b/JiraTimeBotForm/JiraTimeBotForm.csproj @@ -86,6 +86,7 @@ + @@ -107,7 +108,7 @@ - + diff --git a/JiraTimeBotForm/Job.cs b/JiraTimeBotForm/Job.cs index bee20f7..285a474 100644 --- a/JiraTimeBotForm/Job.cs +++ b/JiraTimeBotForm/Job.cs @@ -15,10 +15,10 @@ namespace JiraTimeBotForm class Job { private readonly IMercurialLog _mercurialLog; - private readonly ITaskTimeDiscoverer _taskTimeDiscoverer; + private readonly ITaskTimeCalculator _taskTimeDiscoverer; private readonly ILog _log; - public Job(IMercurialLog mercurialLog, ITaskTimeDiscoverer taskTimeDiscoverer, ILog log) + public Job(IMercurialLog mercurialLog, ITaskTimeCalculator taskTimeDiscoverer, ILog log) { _mercurialLog = mercurialLog; _taskTimeDiscoverer = taskTimeDiscoverer; @@ -45,7 +45,7 @@ namespace JiraTimeBotForm DateTime date = DateTime.Now.Date.AddDays(daysDiff); List commits = _mercurialLog.GetMercurialLog(settings, date, cancellationToken); - List taskTimes = _taskTimeDiscoverer.GetTaskTimes(settings, commits, cancellationToken); + List taskTimes = _taskTimeDiscoverer.CalculateTaskTime(commits, settings, cancellationToken); if (cancellationToken.IsCancellationRequested) { diff --git a/JiraTimeBotForm/TaskTime/ITaskTimeDiscoverer.cs b/JiraTimeBotForm/TaskTime/ITaskTimeCalculator.cs similarity index 55% rename from JiraTimeBotForm/TaskTime/ITaskTimeDiscoverer.cs rename to JiraTimeBotForm/TaskTime/ITaskTimeCalculator.cs index b28418f..004f449 100644 --- a/JiraTimeBotForm/TaskTime/ITaskTimeDiscoverer.cs +++ b/JiraTimeBotForm/TaskTime/ITaskTimeCalculator.cs @@ -7,8 +7,8 @@ using JiraTimeBotForm.TaskTime.Objects; namespace JiraTimeBotForm.TaskTime { - public interface ITaskTimeDiscoverer + public interface ITaskTimeCalculator { - List GetTaskTimes(Settings settings, List commitItems, CancellationToken cancellationToken = default(CancellationToken)); + List CalculateTaskTime(List commitItems, Settings settings, CancellationToken cancellationToken = default(CancellationToken)); } } \ No newline at end of file diff --git a/JiraTimeBotForm/TaskTime/TaskTimeDiscoverer.cs b/JiraTimeBotForm/TaskTime/TaskTimeDiscoverer.cs index 6bd7c5f..dab92a1 100644 --- a/JiraTimeBotForm/TaskTime/TaskTimeDiscoverer.cs +++ b/JiraTimeBotForm/TaskTime/TaskTimeDiscoverer.cs @@ -10,24 +10,24 @@ using JiraTimeBotForm.TaskTime.Objects; namespace JiraTimeBotForm.TaskTime { - public class TaskTimeDiscoverer: ITaskTimeDiscoverer + public class TaskTimeByCommitsCalculator: ITaskTimeCalculator { private readonly ILog _log; - public TaskTimeDiscoverer(ILog log) + public TaskTimeByCommitsCalculator(ILog log) { _log = log; } - public List GetTaskTimes(Settings settings, List commitItems, CancellationToken cancellationToken = default(CancellationToken)) + public List CalculateTaskTime(List commits, Settings settings, CancellationToken cancellationToken = default(CancellationToken)) { int remainMinutes = settings.MinuterPerWorkDay; - int totalCommitsCount = commitItems.Count; + int totalCommitsCount = commits.Count; List workTimeItems = new List(); //Нам нужно раскидать 480 минут в день. - foreach (var taskGroup in commitItems.GroupBy(f => f.Branch).OrderByDescending(f=>f.Count())) + foreach (var taskGroup in commits.GroupBy(f => f.Branch).OrderByDescending(f=>f.Count())) { if (cancellationToken.IsCancellationRequested) {