Исправление ошибок
This commit is contained in:
@@ -0,0 +1,189 @@
|
||||
using System;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Windows.Forms;
|
||||
using JiraTimeBotForm.Configuration;
|
||||
using JiraTimeBotForm.JiraIntegration;
|
||||
using JiraTimeBotForm.Passwords;
|
||||
using JiraTimeBotForm.TaskTime;
|
||||
using Newtonsoft.Json;
|
||||
|
||||
// This is the code for your desktop app.
|
||||
// Press Ctrl+F5 (or go to Debug > Start Without Debugging) to run your app.
|
||||
|
||||
namespace JiraTimeBotForm
|
||||
{
|
||||
public partial class frmMain : Form
|
||||
{
|
||||
private readonly string _settingsPath;
|
||||
private readonly ILog _log;
|
||||
private readonly NotifyIcon trayIcon;
|
||||
private readonly ContextMenu trayMenu;
|
||||
|
||||
public frmMain()
|
||||
{
|
||||
InitializeComponent();
|
||||
_settingsPath = Path.Combine(Application.UserAppDataPath, "settings.json");
|
||||
_log = new Logger(txtLog);
|
||||
|
||||
trayMenu = new ContextMenu();
|
||||
trayMenu.MenuItems.Add("Exit", OnExit);
|
||||
|
||||
trayIcon = new NotifyIcon();
|
||||
trayIcon.Text = "JiraTimeBot";
|
||||
trayIcon.Icon = this.Icon;// new Icon(SystemIcons.WinLogo, 40, 40);
|
||||
|
||||
trayIcon.ContextMenu = trayMenu;
|
||||
trayIcon.Click += btnTray_Click;
|
||||
trayIcon.DoubleClick += btnTray_Click;
|
||||
trayIcon.Visible = false;
|
||||
}
|
||||
|
||||
private void frmMain_FormClosing(object sender, FormClosingEventArgs e)
|
||||
{
|
||||
trayIcon.Visible = false;
|
||||
}
|
||||
|
||||
private void OnExit(object sender, EventArgs e)
|
||||
{
|
||||
Application.Exit();
|
||||
}
|
||||
|
||||
private void btnTray_Click(object sender, EventArgs e)
|
||||
{
|
||||
this.Visible = true;
|
||||
this.Activate();
|
||||
this.BringToFront();
|
||||
Extensions.Extensions.Restore(this);
|
||||
}
|
||||
|
||||
private void btnSave_Click(object sender, EventArgs e)
|
||||
{
|
||||
var settings = new Settings
|
||||
{
|
||||
JiraUserName = txtJiraLogin.Text,
|
||||
JiraPassword = txtJiraPassword.Text,
|
||||
MercurialAuthorEmail = txtMercurialEmail.Text,
|
||||
ActivationTime = TimeSpan.Parse(actTime.Text),
|
||||
RepositoryPath = txtRepoPath.Text
|
||||
|
||||
};
|
||||
|
||||
var password = new EncryptionClass().Encrypt(settings.JiraUserName, settings.JiraPassword, settings.JiraUrl);
|
||||
settings.JiraPassword = password;
|
||||
|
||||
var settingsString = JsonConvert.SerializeObject(settings);
|
||||
File.WriteAllText(_settingsPath, settingsString);
|
||||
|
||||
MessageBox.Show("Settings saved.");
|
||||
LoadSettings();
|
||||
}
|
||||
|
||||
private void Form1_Load(object sender, EventArgs e)
|
||||
{
|
||||
if (File.Exists(_settingsPath))
|
||||
{
|
||||
LoadSettings();
|
||||
}
|
||||
}
|
||||
|
||||
private void LoadSettings()
|
||||
{
|
||||
var settingsText = File.ReadAllText(_settingsPath);
|
||||
var settings = JsonConvert.DeserializeObject<Settings>(settingsText);
|
||||
|
||||
var password = new EncryptionClass().Decrypt(settings.JiraUserName, settings.JiraPassword, settings.JiraUrl);
|
||||
|
||||
txtJiraLogin.Text = settings.JiraUserName;
|
||||
txtJiraPassword.Text = password;
|
||||
txtMercurialEmail.Text = settings.MercurialAuthorEmail;
|
||||
txtRepoPath.Text = settings.RepositoryPath;
|
||||
actTime.Text = settings.ActivationTime.ToString("hh\\:mm\\:ss");
|
||||
}
|
||||
|
||||
private void btnStart_Click(object sender, EventArgs e)
|
||||
{
|
||||
DoTheJob();
|
||||
}
|
||||
|
||||
private void frmMain_Resize(object sender, EventArgs e)
|
||||
{
|
||||
if (FormWindowState.Minimized == this.WindowState)
|
||||
{
|
||||
trayIcon.Visible = true;
|
||||
this.Hide();
|
||||
}
|
||||
|
||||
else if (FormWindowState.Normal == this.WindowState)
|
||||
{
|
||||
trayIcon.Visible = false;
|
||||
}
|
||||
}
|
||||
|
||||
private void tmrStart_Tick(object sender, EventArgs e)
|
||||
{
|
||||
var runTime = TimeSpan.Parse(actTime.Text);
|
||||
if (Math.Abs((DateTime.Now.TimeOfDay - runTime).TotalSeconds) < 1)
|
||||
{
|
||||
if (DateTime.Now.DayOfWeek == DayOfWeek.Saturday || DateTime.Now.DayOfWeek == DayOfWeek.Sunday)
|
||||
{
|
||||
_log.Error("ñåãîäíÿ ñóááîòà èëè âîñêðåñåíüå. Ðàáîòàòü íåëüçÿ =)");
|
||||
return;
|
||||
}
|
||||
|
||||
DoTheJob();
|
||||
}
|
||||
}
|
||||
|
||||
private void DoTheJob()
|
||||
{
|
||||
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(_log);
|
||||
|
||||
int daysDiff = 0;
|
||||
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)
|
||||
{
|
||||
_log.Trace($"- {taskTime.Branch} (êîììèòîâ {taskTime.Commits}): {taskTime.Time}");
|
||||
}
|
||||
|
||||
jira.SetTodayWorklog(taskTimes, dummy: txtDummyMode.Checked);
|
||||
_log.Info("Ãîòîâî.");
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user