Files
2025-11-11 11:12:05 +01:00

313 lines
12 KiB
C#

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Reflection;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using System.Windows.Forms;
using C4IT.Logging;
using C4IT.XML;
using C4IT.FASD.Base;
using C4IT.DataHistoryProvider;
using static C4IT.Logging.cLogManager;
namespace C4IT_DataHistoryProvider_Test
{
public partial class ctrlM42Wpm : UserControl
{
public ctrlM42Wpm()
{
InitializeComponent();
}
private async void ctrlM42Wpm_Load(object sender, EventArgs e)
{
MethodBase CM = null; if (cLogManager.DefaultLogger.IsDebug) { CM = MethodBase.GetCurrentMethod(); LogMethodBegin(CM); }
if (Program.Collector == null)
return;
try
{
Cursor = Cursors.WaitCursor;
ctrlProtocolBox1.ClearMessages();
Program.mainForm.DisableAllTabPages(this);
Program.Collector.CleanupUiMessageHandler();
Program.Collector.ProcessUiMessage += ctrlProtocolBox1.ProcessMessage;
var _requestInfo = new cF4sdWebRequestInfo("ctrlM42Wpm_Load", null);
if (Program.UserList == null)
Program.UserList = await Program.Collector.GetInfoClassListTest(C4IT.FASD.Base.enumFasdInformationClass.User, true, _requestInfo, 1, CancellationToken.None);
comboBoxUserSelect.Items.AddRange(Program.UserList.ToArray());
ctrlProtocolBox1.ProcessMessage("");
await checkScanTimesAsync(_requestInfo, 1);
}
catch (Exception E)
{
LogException(E);
}
finally
{
ctrlProtocolBox1.ProcessMessage("");
Program.mainForm.EnableAllTabPages();
Cursor = Cursors.Default;
if (CM != null) LogMethodEnd(CM);
}
}
private async void buttonCheckConnection_Click(object sender, EventArgs e)
{
MethodBase CM = null; if (cLogManager.DefaultLogger.IsDebug) { CM = MethodBase.GetCurrentMethod(); LogMethodBegin(CM); }
if (Program.Collector == null)
return;
try
{
Cursor = Cursors.WaitCursor;
ctrlProtocolBox1.ClearMessages();
buttonCheckConnection.Enabled = false;
Program.mainForm.DisableAllTabPages(this);
Program.Collector.CleanupUiMessageHandler();
Program.Collector.ProcessUiMessage += ctrlProtocolBox1.ProcessMessage;
var res = await Program.Collector.M42WpmCollector.ValidateConnectionAsync(true, CancellationToken.None);
buttonGetUserTickes.Enabled = res;
}
catch (Exception E)
{
LogException(E);
}
finally
{
ctrlProtocolBox1.ProcessMessage("");
Program.mainForm.EnableAllTabPages();
buttonCheckConnection.Enabled = true;
Cursor = Cursors.Default;
if (CM != null) LogMethodEnd(CM);
}
}
private class TicketEntry
{
public string Name;
public Guid Id;
public override string ToString()
{
return Name;
}
}
private async void buttonGetUserTickes_Click(object sender, EventArgs e)
{
MethodBase CM = null; if (cLogManager.DefaultLogger.IsDebug) { CM = MethodBase.GetCurrentMethod(); LogMethodBegin(CM); }
try
{
comboBoxTicket.Enabled = false;
comboBoxTicket.Items.Clear();
comboBoxTicket.SelectedItem = null;
if (comboBoxUserSelect.SelectedItem == null || !(comboBoxUserSelect.SelectedItem is cDataHistoryInfoClassListEntry info))
return;
var search = new List<cF4sdIdentityEntry>()
{
new cF4sdIdentityEntry()
{
Class = enumFasdInformationClass.User,
Id = info.id,
}
};
ctrlProtocolBox1.ProcessMessage("");
var found = false;
var userinfo = await Program.Collector.getConntectorIds(search, CancellationToken.None, null, 0);
if (userinfo != null && userinfo.TryGetValue(enumFasdInformationClass.User, out var userids))
{
if (userids.sid != null)
{
var TicketList = await Program.Collector.M42WpmCollector.getTicketUsage(new List<cF4sdConnectorIds> { userids }, CancellationToken.None, null, 0);
var Tickets = new List<TicketEntry>();
if (TicketList != null && TicketList.Count > 0)
{
found = true;
ctrlProtocolBox1.ProcessMessage($"{TicketList.Count} tickets found for user '{info.Name}':");
foreach (var Entry in TicketList)
{
Tickets.Add(new TicketEntry() { Name = Entry.Name, Id = Entry.id });
ctrlProtocolBox1.ProcessMessage("");
ctrlProtocolBox1.ProcessMessage($" {Entry.Name}:");
foreach (var Entry2 in Entry.Infos)
{
ctrlProtocolBox1.ProcessMessage($" {Entry2.Key}: {Entry2.Value}");
}
}
}
if (Tickets.Count > 0)
{
comboBoxTicket.Items.AddRange(Tickets.ToArray());
comboBoxTicket.Enabled = true;
}
}
}
if (!found)
ctrlProtocolBox1.ProcessMessage($"no tickets found for user '{info.Name}'");
}
catch (Exception E)
{
LogException(E);
}
finally
{
if (CM != null) LogMethodEnd(CM);
}
}
private void comboBoxTicket_SelectedValueChanged(object sender, EventArgs e)
{
buttonUpdateSolution.Enabled = comboBoxTicket.SelectedItem != null;
}
private async void buttonUpdateSolution_Click(object sender, EventArgs e)
{
MethodBase CM = null; if (cLogManager.DefaultLogger.IsDebug) { CM = MethodBase.GetCurrentMethod(); LogMethodBegin(CM); }
try
{
if (!(comboBoxTicket.SelectedItem is TicketEntry _ticket))
return;
var _update = new cF4SDWriteParameters()
{
TableName = cDataHistoryCollectorM42Wpm.constTableNameTicketDetails,
id = _ticket.Id,
Values = new Dictionary<string, object>(1) { { "SolutionHtml", "Closed for F4SD testing purposes." } }
};
var _res = await Program.Collector.WritePropertyAsync(_update, null, CancellationToken.None);
}
catch (Exception E)
{
LogException(E);
}
finally
{
if (CM != null) LogMethodEnd(CM);
}
}
private async Task checkScanTimesAsync(cF4sdWebRequestInfo requestInfo, int LogDeep)
{
MethodBase CM = null; if (cLogManager.DefaultLogger.IsDebug) { CM = MethodBase.GetCurrentMethod(); LogMethodBegin(CM); }
if (cPerformanceLogger.IsActive && requestInfo != null) { if (CM == null) CM = MethodBase.GetCurrentMethod(); cPerformanceLogger.LogPerformanceStart(LogDeep, CM, requestInfo.id, requestInfo.created); }
var _startTime = DateTime.UtcNow;
try
{
var Col = Color.Transparent;
textBoxScanLast.Text = "";
textBoxScanNext.Text = "";
if (Program.Collector.M42WpmCollector != null)
{
var scanInfo = await Program.Collector.M42WpmCollector.GetScanTimeInfoAsync(requestInfo, LogDeep + 1, CancellationToken.None);
if (scanInfo?.NextScan is DateTime nextScan)
{
textBoxScanNext.Text = nextScan.ToLocalTime().ToString();
if (scanInfo?.LastScan is DateTime lastScan)
{
textBoxScanLast.Text = lastScan.ToLocalTime().ToString();
if (nextScan >= lastScan)
Col = Color.Red;
else
Col = Color.Green;
}
else
Col = Color.Red;
}
else
{
Col = Color.Red;
if (scanInfo?.LastScan is DateTime lastScan)
textBoxScanLast.Text = lastScan.ToLocalTime().ToString();
}
}
panelScanNext.BackColor = Col;
}
catch (Exception E)
{
LogException(E);
}
finally
{
if (cPerformanceLogger.IsActive && requestInfo != null) { cPerformanceLogger.LogPerformanceEnd(LogDeep, CM, requestInfo.id, requestInfo.created, _startTime); }
if (CM != null) LogMethodEnd(CM);
}
}
private async void buttonScanM42_Click(object sender, EventArgs e)
{
MethodBase CM = null; if (cLogManager.DefaultLogger.IsDebug) { CM = MethodBase.GetCurrentMethod(); LogMethodBegin(CM); }
if (Program.Collector == null)
return;
try
{
Cursor = Cursors.WaitCursor;
ctrlProtocolBox1.ClearMessages();
buttonScanM42.Enabled = false;
Program.mainForm.DisableAllTabPages(this);
Program.Collector.CleanupUiMessageHandler();
Program.Collector.ProcessUiMessage += ctrlProtocolBox1.ProcessMessage;
var _requestInfo = new cF4sdWebRequestInfo("DoScanM42Wpm", null);
await Program.Collector.M42WpmCollector.DoScanAsync(true, true, _requestInfo, 1, CancellationToken.None);
await checkScanTimesAsync(_requestInfo, 1);
}
catch (Exception E)
{
LogException(E);
}
finally
{
ctrlProtocolBox1.ProcessMessage("");
Program.mainForm.EnableAllTabPages();
buttonScanM42.Enabled = true;
Cursor = Cursors.Default;
if (CM != null) LogMethodEnd(CM);
}
}
}
}