diff --git a/.semver.txt b/.semver.txt index b112f91..c787b21 100644 --- a/.semver.txt +++ b/.semver.txt @@ -1 +1 @@ -1.0.21 +1.0.22 diff --git a/src/JiraTimeBot/JiraIntegration/JiraApi.cs b/src/JiraTimeBot/JiraIntegration/JiraApi.cs index d1c9c41..bb24d13 100644 --- a/src/JiraTimeBot/JiraIntegration/JiraApi.cs +++ b/src/JiraTimeBot/JiraIntegration/JiraApi.cs @@ -92,26 +92,34 @@ namespace JiraTimeBot.JiraIntegration var hasTodayWorklog = false; var workLogs = issue.GetWorklogsAsync().Result; - foreach (var workLog in workLogs) + var userWorklogs = workLogs.Where(w => + w.CreateDate.GetValueOrDefault().Date == date && w.Author.Equals(settings.JiraUserName, + StringComparison.InvariantCultureIgnoreCase)).ToList(); + + foreach (var workLog in userWorklogs) { var timeSpent = TimeSpan.FromSeconds(workLog.TimeSpentInSeconds); - if (workLog.CreateDate.GetValueOrDefault().Date == date && workLog.Author.Equals(settings.JiraUserName, StringComparison.InvariantCultureIgnoreCase)) + var timeDiff = Math.Abs((timeSpent - taskTimeItem.Time).TotalMinutes); + if (timeDiff > 1 || userWorklogs.Count > 1) { - var timeDiff = Math.Abs((timeSpent - taskTimeItem.Time).TotalMinutes); if (timeDiff > 1) { _log.Trace($"Время отличается на {timeDiff} минут, удаляю worklog: {taskTimeItem.Branch} {workLog.Author} {workLog.CreateDate}: {workLog.TimeSpent}"); - if (!dummy) - { - issue.DeleteWorklogAsync(workLog); - } - hasTodayWorklog = false; } else { - _log.Trace($"По задаче {taskTimeItem.Branch} уже есть аналогичный worklog. Пропускаю."); - hasTodayWorklog = true; + _log.Trace($"Найдено более одного ворклога на задачу, удаляю worklog: {taskTimeItem.Branch} {workLog.Author} {workLog.CreateDate}: {workLog.TimeSpent}"); } + if (!dummy) + { + issue.DeleteWorklogAsync(workLog); + } + hasTodayWorklog = false; + } + else + { + _log.Trace($"По задаче {taskTimeItem.Branch} уже есть аналогичный worklog. Пропускаю."); + hasTodayWorklog = true; } } diff --git a/src/JiraTimeBot/Properties/AssemblyInfo.cs b/src/JiraTimeBot/Properties/AssemblyInfo.cs index 65b97d6..a969dea 100644 --- a/src/JiraTimeBot/Properties/AssemblyInfo.cs +++ b/src/JiraTimeBot/Properties/AssemblyInfo.cs @@ -1,31 +1,31 @@ -using System.Reflection; -using System.Runtime.InteropServices; -// General Information about an assembly is controlled through the following -// set of attributes. Change these attribute values to modify the information -// associated with an assembly. -[assembly: AssemblyTitle("JiraTimeBot")] -[assembly: AssemblyDescription("")] -[assembly: AssemblyConfiguration("")] -[assembly: AssemblyCompany("")] -[assembly: AssemblyProduct("JiraTimeBot")] -[assembly: AssemblyCopyright("Copyright © 2019")] -[assembly: AssemblyTrademark("")] -[assembly: AssemblyCulture("")] -// 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 -// COM, set the ComVisible attribute to true on that type. -[assembly: ComVisible(false)] -// The following GUID is for the ID of the typelib if this project is exposed to COM -[assembly: Guid("f3b89316-c38c-4ce6-9d88-0b1373cfba1a")] -// Version information for an assembly consists of the following four values: -// -// Major Version -// Minor Version -// Build Number -// Revision -// -// You can specify all the values or you can default the Build and Revision Numbers -// by using the '*' as shown below: -[assembly: AssemblyVersion("1.0.21")] -[assembly: AssemblyFileVersion("1.0.21")] -[assembly: AssemblyInformationalVersion("1.0.21")] +using System.Reflection; +using System.Runtime.InteropServices; +// General Information about an assembly is controlled through the following +// set of attributes. Change these attribute values to modify the information +// associated with an assembly. +[assembly: AssemblyTitle("JiraTimeBot")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("JiraTimeBot")] +[assembly: AssemblyCopyright("Copyright © 2019")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] +// 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 +// COM, set the ComVisible attribute to true on that type. +[assembly: ComVisible(false)] +// The following GUID is for the ID of the typelib if this project is exposed to COM +[assembly: Guid("f3b89316-c38c-4ce6-9d88-0b1373cfba1a")] +// Version information for an assembly consists of the following four values: +// +// Major Version +// Minor Version +// Build Number +// Revision +// +// You can specify all the values or you can default the Build and Revision Numbers +// by using the '*' as shown below: +[assembly: AssemblyVersion("1.0.22")] +[assembly: AssemblyFileVersion("1.0.22")] +[assembly: AssemblyInformationalVersion("1.0.22")]