diff --git a/JiraTimeBotForm/JiraIntegration/JiraApi.cs b/JiraTimeBotForm/JiraIntegration/JiraApi.cs index 68eacfb..a8a4d26 100644 --- a/JiraTimeBotForm/JiraIntegration/JiraApi.cs +++ b/JiraTimeBotForm/JiraIntegration/JiraApi.cs @@ -19,7 +19,13 @@ namespace JiraTimeBotForm.JiraIntegration _log = log; _jira = Jira.CreateRestClient(_settings.JiraUrl, _settings.JiraUserName, _settings.JiraPassword); } - + + public string GetTaskName(string branch) + { + var issue = _jira.Issues.Queryable.FirstOrDefault(f => f.Key == branch); + return issue?.Summary; + } + public void SetTodayWorklog(List taskTimeItems, DateTime? date = null, bool dummy = false) { if (date == null) @@ -50,7 +56,7 @@ namespace JiraTimeBotForm.JiraIntegration _log.Trace($"ВремÑ� отличаетÑ�Ñ� на {timeDiff} минут, удалÑ�ÑŽ worklog: {taskTimeItem.Branch} {workLog.Author} {workLog.CreateDate}: {workLog.TimeSpent}"); if (!dummy) { - issue.DeleteWorklogAsync(workLog, WorklogStrategy.RetainRemainingEstimate); + issue.DeleteWorklogAsync(workLog); } hasTodayWorklog = false; } diff --git a/JiraTimeBotForm/TaskTime/TaskTimeDiscoverer.cs b/JiraTimeBotForm/TaskTime/TaskTimeDiscoverer.cs index 5333f07..961fd3e 100644 --- a/JiraTimeBotForm/TaskTime/TaskTimeDiscoverer.cs +++ b/JiraTimeBotForm/TaskTime/TaskTimeDiscoverer.cs @@ -48,7 +48,7 @@ namespace JiraTimeBotForm.TaskTime } workTasks.Add(changeset.Branch); - _log.Trace($" - Ð�айден changeset: {changeset.Timestamp} - {changeset.Branch} - {changeset.AuthorEmailAddress}"); + _log?.Trace($" - Ð�айден changeset: {changeset.Timestamp} - {changeset.Branch} - {changeset.AuthorEmailAddress}"); } } @@ -63,7 +63,7 @@ namespace JiraTimeBotForm.TaskTime { Branch = taskGroup.Key, Time = TimeSpan.FromMinutes(minutesForCurrentTaskGroup), - Commits = taskGroup.Count() + Commits = taskGroup.Count(), }); } diff --git a/JiraTimeBotForm/frmMain.Designer.cs b/JiraTimeBotForm/frmMain.Designer.cs index a574d4b..aefea97 100644 --- a/JiraTimeBotForm/frmMain.Designer.cs +++ b/JiraTimeBotForm/frmMain.Designer.cs @@ -46,6 +46,7 @@ namespace JiraTimeBotForm this.ntfyIcon = new System.Windows.Forms.NotifyIcon(this.components); this.tmrStart = new System.Windows.Forms.Timer(this.components); this.txtDummyMode = new System.Windows.Forms.CheckBox(); + this.btnMeeting = new System.Windows.Forms.Button(); this.SuspendLayout(); // // actTime @@ -151,7 +152,7 @@ namespace JiraTimeBotForm // // btnStart // - this.btnStart.Location = new System.Drawing.Point(48, 257); + this.btnStart.Location = new System.Drawing.Point(34, 257); this.btnStart.Name = "btnStart"; this.btnStart.Size = new System.Drawing.Size(103, 23); this.btnStart.TabIndex = 12; @@ -173,18 +174,29 @@ namespace JiraTimeBotForm // txtDummyMode // this.txtDummyMode.AutoSize = true; - this.txtDummyMode.Location = new System.Drawing.Point(48, 234); + this.txtDummyMode.Location = new System.Drawing.Point(31, 234); this.txtDummyMode.Name = "txtDummyMode"; this.txtDummyMode.Size = new System.Drawing.Size(114, 17); this.txtDummyMode.TabIndex = 13; this.txtDummyMode.Text = "Òåñòîâûé ïðîãîí"; this.txtDummyMode.UseVisualStyleBackColor = true; // + // btnMeeting + // + this.btnMeeting.Location = new System.Drawing.Point(160, 257); + this.btnMeeting.Name = "btnMeeting"; + this.btnMeeting.Size = new System.Drawing.Size(52, 23); + this.btnMeeting.TabIndex = 14; + this.btnMeeting.Text = "Ìèòèíã"; + this.btnMeeting.UseVisualStyleBackColor = true; + this.btnMeeting.Click += new System.EventHandler(this.btnMeeting_Click); + // // frmMain // this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.ClientSize = new System.Drawing.Size(740, 292); + this.Controls.Add(this.btnMeeting); this.Controls.Add(this.txtDummyMode); this.Controls.Add(this.btnStart); this.Controls.Add(this.txtLog); @@ -229,6 +241,7 @@ namespace JiraTimeBotForm private System.Windows.Forms.NotifyIcon ntfyIcon; private System.Windows.Forms.Timer tmrStart; private System.Windows.Forms.CheckBox txtDummyMode; + private System.Windows.Forms.Button btnMeeting; } } diff --git a/JiraTimeBotForm/frmMain.cs b/JiraTimeBotForm/frmMain.cs index e889925..d6d801f 100644 --- a/JiraTimeBotForm/frmMain.cs +++ b/JiraTimeBotForm/frmMain.cs @@ -185,5 +185,56 @@ namespace JiraTimeBotForm return; } } + + private void btnMeeting_Click(object sender, EventArgs e) + { + if (!Directory.Exists(txtRepoPath.Text)) + { + MessageBox.Show("Ïàïêà ñ ðåïî íå ñóøåñòâóåò.", "", MessageBoxButtons.OK, MessageBoxIcon.Error); + return; + } + + txtLog.Text = ""; + var settings = new Settings + { + JiraUserName = txtJiraLogin.Text, + JiraPassword = txtJiraPassword.Text, + MercurialAuthorEmail = txtMercurialEmail.Text, + ActivationTime = TimeSpan.Parse(actTime.Text), + RepositoryPath = txtRepoPath.Text + }; + + var jira = new JiraApi(settings, _log); + var taskDiscoverer = new TaskTimeDiscoverer(); + + int daysDiff = -1; + while (true) + { + var date = DateTime.Now.Date.AddDays(daysDiff); + var taskTimes = taskDiscoverer.GetTaskTimes(settings, date); + if (!taskTimes.Any()) + { + _log.Warn($"{date:dd.MM.yyyy} âû íå ñäåëàëè íè÷åãî ïîëåçíîãî =) Èñïîëüçóþ ïðåäûäóùèé äåíü."); + daysDiff--; + if (daysDiff < -7) + { + _log.Error("Íå íàøëè íè îäíîãî êîììèòà çà ïðåäûäóùèå 7 äíåé. Âîçìîæíî âû â îòïóñêå? Âûõîæó."); + return; + } + + continue; + } + + _log.Trace($"Íà ðåàëüíóþ äàòó {date:dd.MM.yyyy} ðàñïðåäåëåíèå ïî çàäà÷àì:"); + foreach (var taskTime in taskTimes.OrderByDescending(f=>f.Time)) + { + var taskName = jira.GetTaskName(taskTime.Branch); + _log.Trace($"- {taskTime.Branch}: {taskName} - {taskTime.Time}"); + } + + break; + } + + } } }