Compare commits

...
5 Commits
7 changed files with 60 additions and 36 deletions
+1 -1
View File
@@ -1 +1 @@
1.0.50 1.0.53
+3 -1
View File
@@ -17,7 +17,9 @@
- JQL (Режим Jira) - можно задать свой JQL для поиска задач. Возможные замены: %USER% - Логин Jira, %DATE% дата на которую формируем список. Значнеие по умолчанию: status changed by '%USER%' during ("%DATE%","%DATE%") - JQL (Режим Jira) - можно задать свой JQL для поиска задач. Возможные замены: %USER% - Логин Jira, %DATE% дата на которую формируем список. Значнеие по умолчанию: status changed by '%USER%' during ("%DATE%","%DATE%")
- Задача "учёта времени" - задача, куда будет списываться по 30 минут в день на "затраты на учет времени". Должна содержать знак '-'. - Задача "учёта времени" - задача, куда будет списываться по 30 минут в день на "затраты на учет времени". Должна содержать знак '-'.
- Время запуска - время автоматического запуска бота. Если была установлена галочка "тестовый прогон" - она будет снята. - Время запуска - время автоматического запуска бота. Если была установлена галочка "тестовый прогон" - она будет снята.
- Минут в рабочем дне - количество распределяемых минут (оыбчно 8 * 60).
- Рандомных минут - если > 0, то будет прибавлено рандомное количество минут к рабочему времени (но кратное значению округления).
- Добавлять описание (Режим Mercurial) - добавлять ли в описание CommitMessage, если не установлено - добавляются стандартные фразы программистов (типа "написание кода"). - Добавлять описание (Режим Mercurial) - добавлять ли в описание CommitMessage, если не установлено - добавляются стандартные фразы программистов (типа "написание кода").
- Автозагрузка - загружать ли программу при старте ОС.
# Скачать # Скачать
Скачать актуальную версию можно тут: https://github.com/monster1025/JiraTimeBot/releases/latest Скачать актуальную версию можно тут: https://github.com/monster1025/JiraTimeBot/releases/latest
+31 -31
View File
@@ -1,31 +1,31 @@
using System.Reflection; using System.Reflection;
using System.Runtime.InteropServices; using System.Runtime.InteropServices;
// General Information about an assembly is controlled through the following // General Information about an assembly is controlled through the following
// set of attributes. Change these attribute values to modify the information // set of attributes. Change these attribute values to modify the information
// associated with an assembly. // associated with an assembly.
[assembly: AssemblyTitle("JiraTimeBot")] [assembly: AssemblyTitle("JiraTimeBot")]
[assembly: AssemblyDescription("")] [assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")] [assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")] [assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("JiraTimeBot")] [assembly: AssemblyProduct("JiraTimeBot")]
[assembly: AssemblyCopyright("Copyright © 2019")] [assembly: AssemblyCopyright("Copyright © 2019")]
[assembly: AssemblyTrademark("")] [assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")] [assembly: AssemblyCulture("")]
// Setting ComVisible to false makes the types in this assembly not visible // Setting ComVisible to false makes the types in this assembly not visible
// to COM components. If you need to access a type in this assembly from // to COM components. If you need to access a type in this assembly from
// COM, set the ComVisible attribute to true on that type. // COM, set the ComVisible attribute to true on that type.
[assembly: ComVisible(false)] [assembly: ComVisible(false)]
// The following GUID is for the ID of the typelib if this project is exposed to COM // The following GUID is for the ID of the typelib if this project is exposed to COM
[assembly: Guid("f3b89316-c38c-4ce6-9d88-0b1373cfba1a")] [assembly: Guid("f3b89316-c38c-4ce6-9d88-0b1373cfba1a")]
// Version information for an assembly consists of the following four values: // Version information for an assembly consists of the following four values:
// //
// Major Version // Major Version
// Minor Version // Minor Version
// Build Number // Build Number
// Revision // Revision
// //
// You can specify all the values or you can default the Build and Revision Numbers // You can specify all the values or you can default the Build and Revision Numbers
// by using the '*' as shown below: // by using the '*' as shown below:
[assembly: AssemblyVersion("1.0.50")] [assembly: AssemblyVersion("1.0.53")]
[assembly: AssemblyFileVersion("1.0.50")] [assembly: AssemblyFileVersion("1.0.53")]
[assembly: AssemblyInformationalVersion("1.0.50")] [assembly: AssemblyInformationalVersion("1.0.53")]
@@ -65,7 +65,7 @@ namespace JiraTimeBot.TaskTime
} }
int currentTaskCommits = taskGroup.Count(); int currentTaskCommits = taskGroup.Count();
int currentTaskTime = (int)RoundTo(minutesPerWorkDay / totalCommitsCount * currentTaskCommits, settings.RoundToMinutes); int currentTaskTime = (int)RoundTo(minutesPerWorkDay / totalCommitsCount * currentTaskCommits, settings.RoundToMinutes, false);
remainMinutes = remainMinutes - currentTaskTime; remainMinutes = remainMinutes - currentTaskTime;
var orderedTasks = taskGroup.OrderBy(f => f.Time).ToArray(); var orderedTasks = taskGroup.OrderBy(f => f.Time).ToArray();
@@ -99,7 +99,7 @@ namespace JiraTimeBot.TaskTime
_log.Trace($"Погрешность распределения времени: {remainMinutes}. Добавляю к первой задаче."); _log.Trace($"Погрешность распределения времени: {remainMinutes}. Добавляю к первой задаче.");
} }
if (workTimeItems.First().Time.TotalMinutes > Math.Abs(remainMinutes) && remainMinutes < 0) if ((workTimeItems.First().Time.TotalMinutes > Math.Abs(remainMinutes) && remainMinutes < 0) || remainMinutes > 0)
{ {
//если переборщили или не достаточно добавили до 8 часов - скореектируем остаток в первой задаче (она самая трудозатратная). //если переборщили или не достаточно добавили до 8 часов - скореектируем остаток в первой задаче (она самая трудозатратная).
workTimeItems.First().Time += TimeSpan.FromMinutes(remainMinutes); workTimeItems.First().Time += TimeSpan.FromMinutes(remainMinutes);
+8
View File
@@ -222,6 +222,14 @@ namespace JiraTimeBot.UI
{ {
//если обновились - отключаем до рестарта //если обновились - отключаем до рестарта
tmrUpdate.Enabled = false; tmrUpdate.Enabled = false;
var result = MessageBox.Show($"Приложение обновлено до новой версии. Перезапустить сейчас?",
"Обновление",
MessageBoxButtons.YesNo,
MessageBoxIcon.Warning);
if (result == DialogResult.Yes)
{
updater.SelfRestart();
}
} }
} }
catch (Exception ex) catch (Exception ex)
+1
View File
@@ -5,5 +5,6 @@ namespace JiraTimeBot.Update
internal interface IUpdater internal interface IUpdater
{ {
bool UpdateToNewVersion(bool firstTime); bool UpdateToNewVersion(bool firstTime);
void SelfRestart();
} }
} }
+14 -1
View File
@@ -1,4 +1,5 @@
using System; using System;
using System.Diagnostics;
using System.IO; using System.IO;
using System.IO.Compression; using System.IO.Compression;
using System.Linq; using System.Linq;
@@ -124,7 +125,19 @@ namespace JiraTimeBot.Update
return false; return false;
} }
} }
public void SelfRestart()
{
var name = Application.ExecutablePath;
ProcessStartInfo startInfo = new ProcessStartInfo {
Arguments = "/C choice /C Y /N /D Y /T 1 & \"" + name + "\"",
WindowStyle = ProcessWindowStyle.Hidden,
CreateNoWindow = true,
FileName = "cmd.exe"
};
Process.Start(startInfo);
Application.Exit();
}
private bool DownloadFile(string url, string to) private bool DownloadFile(string url, string to)
{ {