Теперь умеем проставлять время по JIRA-е
This commit is contained in:
@@ -28,8 +28,11 @@ namespace JiraTimeBotForm.DI
|
||||
_builder.Register(c => new CommitSkipper()).As<ICommitSkipper>();
|
||||
|
||||
_builder.RegisterType<TechnicalInfoSkipper>().As<ITechnicalInfoSkipper>().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<MeetingProcessor>().AsSelf().As<ITasksProcessor>();
|
||||
@@ -38,7 +41,7 @@ namespace JiraTimeBotForm.DI
|
||||
_builder.RegisterType<JiraDescriptionSource>().AsSelf().As<IJiraDescriptionSource>();
|
||||
_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();
|
||||
return container;
|
||||
|
||||
@@ -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<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)
|
||||
{
|
||||
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="Logger.cs" />
|
||||
<Compile Include="Configuration\Settings.cs" />
|
||||
<Compile Include="JiraIntegration\JiraCommitEmulator.cs" />
|
||||
<Compile Include="Mercurial\Modifiers\ITechnicalInfoSkipper.cs" />
|
||||
<Compile Include="Mercurial\Modifiers\CommitSkipper.cs" />
|
||||
<Compile Include="Mercurial\Modifiers\ICommitSkipper.cs" />
|
||||
@@ -107,7 +108,7 @@
|
||||
<Compile Include="TasksProcessors\ITasksProcessor.cs" />
|
||||
<Compile Include="TasksProcessors\MeetingProcessor.cs" />
|
||||
<Compile Include="TasksProcessors\WorkLogTasksProcessor.cs" />
|
||||
<Compile Include="TaskTime\ITaskTimeDiscoverer.cs" />
|
||||
<Compile Include="TaskTime\ITaskTimeCalculator.cs" />
|
||||
<Compile Include="TaskTime\TaskTimeDiscoverer.cs" />
|
||||
<Compile Include="TaskTime\Objects\TaskTimeItem.cs" />
|
||||
<Compile Include="UI\Tray\ITrayMenu.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<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)
|
||||
{
|
||||
|
||||
+2
-2
@@ -7,8 +7,8 @@ using JiraTimeBotForm.TaskTime.Objects;
|
||||
|
||||
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
|
||||
{
|
||||
public class TaskTimeDiscoverer: ITaskTimeDiscoverer
|
||||
public class TaskTimeByCommitsCalculator: ITaskTimeCalculator
|
||||
{
|
||||
private readonly ILog _log;
|
||||
|
||||
public TaskTimeDiscoverer(ILog log)
|
||||
public TaskTimeByCommitsCalculator(ILog 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 totalCommitsCount = commitItems.Count;
|
||||
int totalCommitsCount = commits.Count;
|
||||
|
||||
List<TaskTimeItem> workTimeItems = new List<TaskTimeItem>();
|
||||
|
||||
//Нам нужно раскидать 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)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user