Теперь умеем проставлять время по JIRA-е
This commit is contained in:
@@ -28,8 +28,11 @@ namespace JiraTimeBotForm.DI
|
|||||||
_builder.Register(c => new CommitSkipper()).As<ICommitSkipper>();
|
_builder.Register(c => new CommitSkipper()).As<ICommitSkipper>();
|
||||||
|
|
||||||
_builder.RegisterType<TechnicalInfoSkipper>().As<ITechnicalInfoSkipper>().AsSelf();
|
_builder.RegisterType<TechnicalInfoSkipper>().As<ITechnicalInfoSkipper>().AsSelf();
|
||||||
|
|
||||||
_builder.RegisterType<MercurialLog>().As<IMercurialLog>().AsSelf();
|
_builder.RegisterType<MercurialLog>().As<IMercurialLog>().AsSelf();
|
||||||
_builder.RegisterType<TaskTimeDiscoverer>().As<ITaskTimeDiscoverer>().AsSelf();
|
//_builder.RegisterType<JiraCommitEmulator>().As<IMercurialLog>().AsSelf();
|
||||||
|
|
||||||
|
_builder.RegisterType<TaskTimeByCommitsCalculator>().As<ITaskTimeCalculator>().AsSelf();
|
||||||
|
|
||||||
_builder.RegisterType<WorkLogTasksProcessor>().AsSelf().As<ITasksProcessor>();
|
_builder.RegisterType<WorkLogTasksProcessor>().AsSelf().As<ITasksProcessor>();
|
||||||
_builder.RegisterType<MeetingProcessor>().AsSelf().As<ITasksProcessor>();
|
_builder.RegisterType<MeetingProcessor>().AsSelf().As<ITasksProcessor>();
|
||||||
@@ -38,7 +41,7 @@ namespace JiraTimeBotForm.DI
|
|||||||
_builder.RegisterType<JiraDescriptionSource>().AsSelf().As<IJiraDescriptionSource>();
|
_builder.RegisterType<JiraDescriptionSource>().AsSelf().As<IJiraDescriptionSource>();
|
||||||
_builder.RegisterType<JiraApi>().AsSelf().AsImplementedInterfaces();
|
_builder.RegisterType<JiraApi>().AsSelf().AsImplementedInterfaces();
|
||||||
|
|
||||||
_builder.Register(c => new Job(c.Resolve<IMercurialLog>(), c.Resolve<ITaskTimeDiscoverer>(), c.Resolve<ILog>())).AsSelf();
|
_builder.Register(c => new Job(c.Resolve<IMercurialLog>(), c.Resolve<ITaskTimeCalculator>(), c.Resolve<ILog>())).AsSelf();
|
||||||
|
|
||||||
var container = _builder.Build();
|
var container = _builder.Build();
|
||||||
return container;
|
return container;
|
||||||
|
|||||||
@@ -1,10 +1,10 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
|
using System.Threading;
|
||||||
using Atlassian.Jira;
|
using Atlassian.Jira;
|
||||||
using JiraTimeBotForm.Configuration;
|
using JiraTimeBotForm.Configuration;
|
||||||
using JiraTimeBotForm.JiraIntegration.Comments;
|
using JiraTimeBotForm.JiraIntegration.Comments;
|
||||||
using JiraTimeBotForm.TaskTime;
|
|
||||||
using JiraTimeBotForm.TaskTime.Objects;
|
using JiraTimeBotForm.TaskTime.Objects;
|
||||||
|
|
||||||
namespace JiraTimeBotForm.JiraIntegration
|
namespace JiraTimeBotForm.JiraIntegration
|
||||||
@@ -34,6 +34,16 @@ namespace JiraTimeBotForm.JiraIntegration
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public List<Issue> 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<TaskTimeItem> taskTimeItems, Settings settings, DateTime? date = null, bool dummy = false, bool addCommentsToWorklog = false)
|
public void SetTodayWorklog(List<TaskTimeItem> taskTimeItems, Settings settings, DateTime? date = null, bool dummy = false, bool addCommentsToWorklog = false)
|
||||||
{
|
{
|
||||||
var jira = Jira.CreateRestClient(settings.JiraUrl, settings.JiraUserName, settings.JiraPassword);
|
var jira = Jira.CreateRestClient(settings.JiraUrl, settings.JiraUserName, settings.JiraPassword);
|
||||||
|
|||||||
@@ -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<MercurialCommitItem> GetMercurialLog(Settings settings,
|
||||||
|
DateTime? date = null,
|
||||||
|
CancellationToken cancellationToken = default(CancellationToken))
|
||||||
|
{
|
||||||
|
date = date.GetValueOrDefault(DateTime.Now.Date);
|
||||||
|
var workTasks = new List<MercurialCommitItem>();
|
||||||
|
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;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -86,6 +86,7 @@
|
|||||||
<Compile Include="Job.cs" />
|
<Compile Include="Job.cs" />
|
||||||
<Compile Include="Logger.cs" />
|
<Compile Include="Logger.cs" />
|
||||||
<Compile Include="Configuration\Settings.cs" />
|
<Compile Include="Configuration\Settings.cs" />
|
||||||
|
<Compile Include="JiraIntegration\JiraCommitEmulator.cs" />
|
||||||
<Compile Include="Mercurial\Modifiers\ITechnicalInfoSkipper.cs" />
|
<Compile Include="Mercurial\Modifiers\ITechnicalInfoSkipper.cs" />
|
||||||
<Compile Include="Mercurial\Modifiers\CommitSkipper.cs" />
|
<Compile Include="Mercurial\Modifiers\CommitSkipper.cs" />
|
||||||
<Compile Include="Mercurial\Modifiers\ICommitSkipper.cs" />
|
<Compile Include="Mercurial\Modifiers\ICommitSkipper.cs" />
|
||||||
@@ -107,7 +108,7 @@
|
|||||||
<Compile Include="TasksProcessors\ITasksProcessor.cs" />
|
<Compile Include="TasksProcessors\ITasksProcessor.cs" />
|
||||||
<Compile Include="TasksProcessors\MeetingProcessor.cs" />
|
<Compile Include="TasksProcessors\MeetingProcessor.cs" />
|
||||||
<Compile Include="TasksProcessors\WorkLogTasksProcessor.cs" />
|
<Compile Include="TasksProcessors\WorkLogTasksProcessor.cs" />
|
||||||
<Compile Include="TaskTime\ITaskTimeDiscoverer.cs" />
|
<Compile Include="TaskTime\ITaskTimeCalculator.cs" />
|
||||||
<Compile Include="TaskTime\TaskTimeDiscoverer.cs" />
|
<Compile Include="TaskTime\TaskTimeDiscoverer.cs" />
|
||||||
<Compile Include="TaskTime\Objects\TaskTimeItem.cs" />
|
<Compile Include="TaskTime\Objects\TaskTimeItem.cs" />
|
||||||
<Compile Include="UI\Tray\ITrayMenu.cs" />
|
<Compile Include="UI\Tray\ITrayMenu.cs" />
|
||||||
|
|||||||
@@ -15,10 +15,10 @@ namespace JiraTimeBotForm
|
|||||||
class Job
|
class Job
|
||||||
{
|
{
|
||||||
private readonly IMercurialLog _mercurialLog;
|
private readonly IMercurialLog _mercurialLog;
|
||||||
private readonly ITaskTimeDiscoverer _taskTimeDiscoverer;
|
private readonly ITaskTimeCalculator _taskTimeDiscoverer;
|
||||||
private readonly ILog _log;
|
private readonly ILog _log;
|
||||||
|
|
||||||
public Job(IMercurialLog mercurialLog, ITaskTimeDiscoverer taskTimeDiscoverer, ILog log)
|
public Job(IMercurialLog mercurialLog, ITaskTimeCalculator taskTimeDiscoverer, ILog log)
|
||||||
{
|
{
|
||||||
_mercurialLog = mercurialLog;
|
_mercurialLog = mercurialLog;
|
||||||
_taskTimeDiscoverer = taskTimeDiscoverer;
|
_taskTimeDiscoverer = taskTimeDiscoverer;
|
||||||
@@ -45,7 +45,7 @@ namespace JiraTimeBotForm
|
|||||||
DateTime date = DateTime.Now.Date.AddDays(daysDiff);
|
DateTime date = DateTime.Now.Date.AddDays(daysDiff);
|
||||||
|
|
||||||
List<MercurialCommitItem> commits = _mercurialLog.GetMercurialLog(settings, date, cancellationToken);
|
List<MercurialCommitItem> commits = _mercurialLog.GetMercurialLog(settings, date, cancellationToken);
|
||||||
List<TaskTimeItem> taskTimes = _taskTimeDiscoverer.GetTaskTimes(settings, commits, cancellationToken);
|
List<TaskTimeItem> taskTimes = _taskTimeDiscoverer.CalculateTaskTime(commits, settings, cancellationToken);
|
||||||
|
|
||||||
if (cancellationToken.IsCancellationRequested)
|
if (cancellationToken.IsCancellationRequested)
|
||||||
{
|
{
|
||||||
|
|||||||
+2
-2
@@ -7,8 +7,8 @@ using JiraTimeBotForm.TaskTime.Objects;
|
|||||||
|
|
||||||
namespace JiraTimeBotForm.TaskTime
|
namespace JiraTimeBotForm.TaskTime
|
||||||
{
|
{
|
||||||
public interface ITaskTimeDiscoverer
|
public interface ITaskTimeCalculator
|
||||||
{
|
{
|
||||||
List<TaskTimeItem> GetTaskTimes(Settings settings, List<MercurialCommitItem> commitItems, CancellationToken cancellationToken = default(CancellationToken));
|
List<TaskTimeItem> CalculateTaskTime(List<MercurialCommitItem> commitItems, Settings settings, CancellationToken cancellationToken = default(CancellationToken));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -10,24 +10,24 @@ using JiraTimeBotForm.TaskTime.Objects;
|
|||||||
|
|
||||||
namespace JiraTimeBotForm.TaskTime
|
namespace JiraTimeBotForm.TaskTime
|
||||||
{
|
{
|
||||||
public class TaskTimeDiscoverer: ITaskTimeDiscoverer
|
public class TaskTimeByCommitsCalculator: ITaskTimeCalculator
|
||||||
{
|
{
|
||||||
private readonly ILog _log;
|
private readonly ILog _log;
|
||||||
|
|
||||||
public TaskTimeDiscoverer(ILog log)
|
public TaskTimeByCommitsCalculator(ILog log)
|
||||||
{
|
{
|
||||||
_log = log;
|
_log = log;
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<TaskTimeItem> GetTaskTimes(Settings settings, List<MercurialCommitItem> commitItems, CancellationToken cancellationToken = default(CancellationToken))
|
public List<TaskTimeItem> CalculateTaskTime(List<MercurialCommitItem> commits, Settings settings, CancellationToken cancellationToken = default(CancellationToken))
|
||||||
{
|
{
|
||||||
int remainMinutes = settings.MinuterPerWorkDay;
|
int remainMinutes = settings.MinuterPerWorkDay;
|
||||||
int totalCommitsCount = commitItems.Count;
|
int totalCommitsCount = commits.Count;
|
||||||
|
|
||||||
List<TaskTimeItem> workTimeItems = new List<TaskTimeItem>();
|
List<TaskTimeItem> workTimeItems = new List<TaskTimeItem>();
|
||||||
|
|
||||||
//Нам нужно раскидать 480 минут в день.
|
//Нам нужно раскидать 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)
|
if (cancellationToken.IsCancellationRequested)
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user