Files
C4IT-F4SD-Collector/C4IT_DataHistoryProvider_Test/ctrlF4SDAnalytics.cs
2025-11-11 11:12:05 +01:00

416 lines
16 KiB
C#

using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.ComponentModel;
using System.Data;
using System.Data.Common;
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.DataHistoryProvider;
using C4IT.FASD.Base;
using C4IT.FASD.Licensing;
using C4IT.Logging;
using static C4IT.Logging.cLogManager;
namespace C4IT_DataHistoryProvider_Test
{
public partial class ctrlF4SDAnalytics : UserControl
{
Guid SessionId;
Guid Userid = new Guid("7003cfbf-2841-454e-a4c7-2cff2eb45b23");
Guid CaseId;
private System.Timers.Timer SessionCheck;
private System.Timers.Timer CaseCheck;
public ctrlF4SDAnalytics()
{
InitializeComponent();
}
private async void buttonCreateSession_Click(object sender, EventArgs e)
{
MethodBase CM = null; if (cLogManager.DefaultLogger.IsDebug) { CM = MethodBase.GetCurrentMethod(); LogMethodBegin(CM); }
try
{
Cursor = Cursors.WaitCursor;
ctrlProtocolBox1.ClearMessages();
btnCreateSession.Enabled = false;
if (Program.Collector == null)
return;
if (Program.Collector.F4SDAnalyticsValid)
{
SessionId = Guid.NewGuid();
var userSessions = new cF4SDUserSessionParameters();
userSessions.SessionId = SessionId;
userSessions.UserId = Userid;
userSessions.SessionDate = DateTime.UtcNow;
Program.Collector.CleanupUiMessageHandler();
Program.Collector.ProcessUiMessage += ctrlProtocolBox1.ProcessMessage;
var _requestInfo = new cF4sdWebRequestInfo("buttonCreateSession_Click", null);
bool IsCreatet = await Program.Collector.CreateUserSessionAsync(userSessions, _requestInfo, 1, CancellationToken.None);
btnStartCase.Enabled = true;
btnCloseSession.Enabled = true;
grpBoxCase.Visible = true;
btnCloseCase.Enabled = false;
btnHoldCase.Enabled = false;
btnCancelCase.Enabled = false;
}
}
catch (Exception E)
{
LogException(E);
}
finally
{
if (CM != null) LogMethodEnd(CM);
Cursor = Cursors.Default;
}
}
private async void buttonCloseSession_Click(object sender, EventArgs e)
{
MethodBase CM = null; if (cLogManager.DefaultLogger.IsDebug) { CM = MethodBase.GetCurrentMethod(); LogMethodBegin(CM); }
try
{
Cursor = Cursors.WaitCursor;
//btnInsertSession.Enabled = false;
if (Program.Collector == null)
return;
var _requestInfo = new cF4sdWebRequestInfo("buttonCloseSession_Click", null);
if (Program.Collector.F4SDAnalyticsValid && SessionId != null)
{
var userSessions = new cF4SDUserSessionParameters();
userSessions.SessionId = SessionId;
userSessions.SessionDate = DateTime.UtcNow;
bool IsLoaded = await Program.Collector.CloseUserSessionAsync(userSessions, _requestInfo, 1, CancellationToken.None);
btnCloseSession.Enabled = false;
btnCreateSession.Enabled = true;
grpBoxCase.Visible = false;
grpBoxQA.Visible = false;
btnStartCase.Enabled = true;
btnCloseCase.Enabled = false;
btnHoldCase.Enabled = false;
btnCancelCase.Enabled = false;
comboBoxUserSelect.SelectedItem = null;
}
}
catch (Exception E)
{
LogException(E);
}
finally
{
if (CM != null) LogMethodEnd(CM);
Cursor = Cursors.Default;
}
}
private async void btnStartCase_Click(object sender, EventArgs e)
{
MethodBase CM = null; if (cLogManager.DefaultLogger.IsDebug) { CM = MethodBase.GetCurrentMethod(); LogMethodBegin(CM); }
try
{
Cursor = Cursors.WaitCursor;
if (Program.Collector == null)
return;
var _requestInfo = new cF4sdWebRequestInfo("btnStartCase_Click", null);
if (Program.Collector.F4SDAnalyticsValid && SessionId != null)
{
CaseId = Guid.NewGuid();
var caseData = new cF4SDCaseParameters();
caseData.SessionId = SessionId;
caseData.CaseId = CaseId;
caseData.UserId = Userid;
if (comboBoxUserSelect.SelectedItem != null)
{
var RetVal = new List<cDataHistoryInfoClassListEntry>();
var user = comboBoxUserSelect.SelectedItem;
RetVal.Add((cDataHistoryInfoClassListEntry)user);
caseData.UserId = RetVal[0].id;
}
bool IsLoaded = await Program.Collector.CreateCaseAsync(caseData, _requestInfo, 1, CancellationToken.None);
btnStartCase.Enabled = false;
grpBoxQA.Visible = true;
btnCloseCase.Enabled = true;
btnCancelCase.Enabled = true;
btnHoldCase.Enabled = true;
}
}
catch (Exception E)
{
LogException(E);
}
finally
{
if (CM != null) LogMethodEnd(CM);
Cursor = Cursors.Default;
}
}
private async void btnCloseCase_Click(object sender, EventArgs e)
{
MethodBase CM = null; if (cLogManager.DefaultLogger.IsDebug) { CM = MethodBase.GetCurrentMethod(); LogMethodBegin(CM); }
try
{
Cursor = Cursors.WaitCursor;
//btnInsertSession.Enabled = false;
if (Program.Collector == null)
return;
var _requestInfo = new cF4sdWebRequestInfo("btnCloseCase_Click", null);
if (Program.Collector.F4SDAnalyticsValid && SessionId != null && CaseId != null)
{
var caseStatus = new cF4SDCaseTimeParameters();
caseStatus.CaseId = CaseId;
caseStatus.StatusId = CaseStatus.Canceled;
bool IsLoaded = await Program.Collector.UpdateCaseStateAsync(caseStatus, _requestInfo, 1, CancellationToken.None);
btnStartCase.Enabled = true;
grpBoxQA.Visible = false;
btnCloseCase.Enabled = false;
btnCancelCase.Enabled = false;
btnHoldCase.Enabled = false;
comboBoxUserSelect.SelectedItem = null;
}
}
catch (Exception E)
{
LogException(E);
}
finally
{
if (CM != null) LogMethodEnd(CM);
Cursor = Cursors.Default;
}
}
private async void btnCancelCase_Click(object sender, EventArgs e)
{
MethodBase CM = null; if (cLogManager.DefaultLogger.IsDebug) { CM = MethodBase.GetCurrentMethod(); LogMethodBegin(CM); }
try
{
Cursor = Cursors.WaitCursor;
//btnInsertSession.Enabled = false;
if (Program.Collector == null)
return;
var _requestInfo = new cF4sdWebRequestInfo("btnCancelCase_Click", null);
if (Program.Collector.F4SDAnalyticsValid && SessionId != null && CaseId != null)
{
var caseStatus = new cF4SDCaseTimeParameters();
caseStatus.CaseId = CaseId;
caseStatus.StatusId = CaseStatus.InProgress;
bool IsLoaded = await Program.Collector.UpdateCaseStateAsync(caseStatus, _requestInfo, 1, CancellationToken.None);
btnStartCase.Enabled = true;
grpBoxQA.Visible = false;
btnCloseCase.Enabled = false;
btnCancelCase.Enabled = false;
btnHoldCase.Enabled = false;
comboBoxUserSelect.SelectedItem = null;
}
}
catch (Exception E)
{
LogException(E);
}
finally
{
if (CM != null) LogMethodEnd(CM);
Cursor = Cursors.Default;
}
}
private async void btnHoldCase_Click(object sender, EventArgs e)
{
MethodBase CM = null; if (cLogManager.DefaultLogger.IsDebug) { CM = MethodBase.GetCurrentMethod(); LogMethodBegin(CM); }
try
{
Cursor = Cursors.WaitCursor;
//btnInsertSession.Enabled = false;
if (Program.Collector == null)
return;
var _requestInfo = new cF4sdWebRequestInfo("btnHoldCase_Click", null);
if (Program.Collector.F4SDAnalyticsValid && SessionId != null && CaseId != null)
{
var caseStatus = new cF4SDCaseTimeParameters();
caseStatus.CaseId = CaseId;
if (btnHoldCase.Text == "Hold")
{
btnHoldCase.Text = "Continue";
caseStatus.StatusId = CaseStatus.Finished;
grpBoxQA.Visible = false;
btnCancelCase.Enabled = false;
btnCloseCase.Enabled = false;
}
else if (btnHoldCase.Text == "Continue")
{
btnHoldCase.Text = "Hold";
caseStatus.StatusId = CaseStatus.OnHold;
grpBoxQA.Visible = true;
btnCancelCase.Enabled = true;
btnCloseCase.Enabled = true;
}
bool IsLoaded = await Program.Collector.UpdateCaseStateAsync(caseStatus, _requestInfo, 1, CancellationToken.None);
}
}
catch (Exception E)
{
LogException(E);
}
finally
{
if (CM != null) LogMethodEnd(CM);
Cursor = Cursors.Default;
}
}
private async void btnUpdateCaseState_Click(object sender, EventArgs e)
{
MethodBase CM = null; if (cLogManager.DefaultLogger.IsDebug) { CM = MethodBase.GetCurrentMethod(); LogMethodBegin(CM); }
try
{
Cursor = Cursors.WaitCursor;
//btnInsertSession.Enabled = false;
if (Program.Collector == null)
return;
var _requestInfo = new cF4sdWebRequestInfo("btnUpdateCaseState_Click", null);
if (Program.Collector.F4SDAnalyticsValid && SessionId != null && CaseId != null)
{
var caseStatus = new cF4SDCaseTimeParameters();
caseStatus.CaseId = CaseId;
caseStatus.StatusId = CaseStatus.Canceled;
bool IsLoaded = await Program.Collector.UpdateCaseStateAsync(caseStatus, _requestInfo, 1, CancellationToken.None);
btnStartCase.Enabled = true;
btnCreateSession.Enabled = false;
}
}
catch (Exception E)
{
LogException(E);
}
finally
{
if (CM != null) LogMethodEnd(CM);
Cursor = Cursors.Default;
}
}
private async void btnQAExecutions_Click(object sender, EventArgs e)
{
MethodBase CM = null; if (cLogManager.DefaultLogger.IsDebug) { CM = MethodBase.GetCurrentMethod(); LogMethodBegin(CM); }
try
{
Cursor = Cursors.WaitCursor;
//btnInsertSession.Enabled = false;
if (Program.Collector == null)
return;
var _requestInfo = new cF4sdWebRequestInfo("btnQAExecutions_Click", null);
if (Program.Collector.F4SDAnalyticsValid && SessionId != null && CaseId != null)
{
var quickAction = new cF4SDQuickActionParameters();
quickAction.CaseId = CaseId;
quickAction.QuickActionId = Guid.NewGuid();
quickAction.Paramaters = null;
quickAction.Result = null;
quickAction.ErrorCode = 0;
quickAction.ErrorDescription = null;
quickAction.Start = DateTime.Now;
quickAction.Finish = DateTime.Now;
await Program.Collector.ReportQuickActionExecutionAsync(quickAction, Program.Collector.F4SDAnalyticsDb.Connection, _requestInfo, 1, CancellationToken.None);
await Program.Collector.ReportQuickActionExecutionAsync(quickAction, Program.Collector.InfrastructureConfig.HistoryDB.Connection, _requestInfo, 1, CancellationToken.None);
}
}
catch (Exception E)
{
LogException(E);
}
finally
{
if (CM != null) LogMethodEnd(CM);
Cursor = Cursors.Default;
}
}
private async void ctrlMainFunction_Load(object sender, EventArgs e)
{
btnCloseSession.Enabled = false;
grpBoxCase.Visible = false;
grpBoxQA.Visible = false;
if (Program.mainForm == null)
return;
var _requestInfo = new cF4sdWebRequestInfo("ctrlMainFunction_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());
SessionCheck = new System.Timers.Timer(60.0 * 1000 * Program.Collector.InfrastructureConfig.F4SDAnalyticsDB.SessionCheckInterval);
SessionCheck.Elapsed += Program.Collector.CheckSessionsAsync;
SessionCheck.Start();
CaseCheck = new System.Timers.Timer(60.0 * 1000 * Program.Collector.InfrastructureConfig.F4SDAnalyticsDB.CaseCheckInterval);
CaseCheck.Elapsed += Program.Collector.CheckCasesAsync;
CaseCheck.Start();
}
}
}