aktueller stand

This commit is contained in:
Meik
2026-02-12 08:42:41 +01:00
parent 7392454a63
commit 493e671b9f
30 changed files with 30212 additions and 30217 deletions

View File

@@ -125,4 +125,4 @@
<ErrorText>This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
</PropertyGroup>
</Target>
</Project>
</Project>

View File

@@ -119,9 +119,6 @@
<Content Include="Config\F4SD-MenuSection-Configuration.xml">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
<Content Include="Config\F4SD-Global-Configuration.xml">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
<Content Include="Config\F4SD-QuickAction-Configuration.xml">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
@@ -276,4 +273,4 @@
<PropertyGroup>
<PreBuildEvent>copy "$(ProjectDir)..\..\C4IT FASD\_Common\XmlSchemas\*" "$(ProjectDir)Config"</PreBuildEvent>
</PropertyGroup>
</Project>
</Project>

View File

@@ -2,17 +2,15 @@
using System.Collections.Generic;
using System.Linq;
using System.Reflection;
using System.IO;
using System.IO;
using System.Threading.Tasks;
using System.Threading;
using System.Diagnostics;
using System.Xml;
using Newtonsoft.Json;
using FasdCockpitBase.Models;
using FasdCockpitCommunicationDemo;
using C4IT.Configuration;
using C4IT.FASD.Base;
using static C4IT.Logging.cLogManager;
using FasdCockpitBase;
@@ -48,6 +46,7 @@ namespace C4IT.FASD.Cockpit.Communication
BuildCategoryLookup();
LoadTicketOverviewRelations();
LoadGeneratedTickets();
ApplyMissingDemoTicketActivityTypes();
EnsureOverviewTicketJournalEntries();
}
@@ -276,6 +275,72 @@ namespace C4IT.FASD.Cockpit.Communication
}
}
private void ApplyMissingDemoTicketActivityTypes()
{
try
{
var activityTypesByTicketId = new Dictionary<Guid, string>();
foreach (var tileEntry in TicketOverviewRelations.Values)
{
if (tileEntry == null)
continue;
foreach (var scopeEntry in tileEntry.Values)
{
if (scopeEntry == null)
continue;
foreach (var definition in scopeEntry)
{
if (definition == null || definition.TicketId == Guid.Empty)
continue;
var activityType = NormalizeActivityType(definition.ActivityType);
if (string.IsNullOrWhiteSpace(activityType))
continue;
activityTypesByTicketId[definition.TicketId] = activityType;
}
}
}
foreach (var sampleData in MockupData)
{
if (sampleData?.Tickets == null)
continue;
foreach (var ticket in sampleData.Tickets)
{
if (ticket == null)
continue;
ticket.ActivityType = NormalizeActivityType(ticket.ActivityType);
if (!string.IsNullOrWhiteSpace(ticket.ActivityType))
continue;
if (ticket.Id != Guid.Empty && activityTypesByTicketId.TryGetValue(ticket.Id, out var mappedActivityType))
{
ticket.ActivityType = mappedActivityType;
continue;
}
ticket.ActivityType = NormalizeActivityType(TryGetActivityTypeFromTicketLinks(ticket));
}
}
}
catch (Exception E)
{
LogException(E);
}
}
private static string NormalizeActivityType(string activityType)
{
return string.IsNullOrWhiteSpace(activityType) ? null : activityType.Trim();
}
private void EnsureOverviewTicketJournalEntries()
{
try
@@ -396,10 +461,11 @@ namespace C4IT.FASD.Cockpit.Communication
AffectedUser = detail.AffectedUser ?? record.UserDisplayName,
Asset = detail.Asset,
Category = detail.Category,
ActivityType = NormalizeActivityType(record.ActivityType),
Description = detail.Description,
DescriptionHtml = detail.DescriptionHtml,
Solution = detail.Solution,
SolutionHtml = detail.SolutionHtml,
SolutionHtml = detail.SolutionHtml,
CreationDate = createdAt.ToLocalTime(),
CreationDaysSinceNow = Math.Max(0, (int)(DateTime.UtcNow - createdAt).TotalDays),
Priority = detail.Priority ?? 0,
@@ -562,34 +628,16 @@ namespace C4IT.FASD.Cockpit.Communication
return fallbackData.Tickets.FirstOrDefault(ticket => ticket.Id == definition.TicketId);
}
private static string ResolveTicketActivityType(string displayName, cF4SDTicket detailTicket = null)
private static string ResolveTicketActivityType(cF4SDTicket detailTicket = null)
{
var configuredType = NormalizeActivityType(detailTicket?.ActivityType);
if (!string.IsNullOrWhiteSpace(configuredType))
return configuredType;
var linkType = TryGetActivityTypeFromTicketLinks(detailTicket);
if (!string.IsNullOrWhiteSpace(linkType))
return linkType;
var ticketName = displayName ?? detailTicket?.Name;
if (string.IsNullOrWhiteSpace(ticketName))
return "SPSActivityTypeTicket";
if (ticketName.StartsWith("INC", StringComparison.OrdinalIgnoreCase))
return "SPSActivityTypeIncident";
if (ticketName.StartsWith("SRQ", StringComparison.OrdinalIgnoreCase))
return "SPSActivityTypeServiceRequest";
if (ticketName.StartsWith("PRB", StringComparison.OrdinalIgnoreCase))
return "SPSActivityTypeGroupTicket";
if (ticketName.StartsWith("ALT", StringComparison.OrdinalIgnoreCase))
return "SPSActivityTypeAlert";
if (ticketName.StartsWith("CHG", StringComparison.OrdinalIgnoreCase))
return "SVMChangeRequestType";
if (ticketName.StartsWith("TSK", StringComparison.OrdinalIgnoreCase))
return "SPSActivityTypeBase";
return "SPSActivityTypeTicket";
}
@@ -1258,7 +1306,7 @@ namespace C4IT.FASD.Cockpit.Communication
foreach (var demoTicket in demoTickets)
{
output.Add(new cF4sdApiSearchResultRelation() { id = demoTicket.Id, Name = demoTicket.Name, DisplayName = demoTicket.Name, Infos = new Dictionary<string, string>() { ["Summary"] = demoTicket.Summary, ["Status"] = demoTicket.Status.ToString(), ["StatusId"] = ((int)demoTicket.Status).ToString(), ["Asset"] = demoTicket.Asset, ["ActivityType"] = ResolveTicketActivityType(demoTicket.Name, demoTicket) }, Type = enumF4sdSearchResultClass.Ticket, Identities = new cF4sdIdentityList() { new cF4sdIdentityEntry() { Class = enumFasdInformationClass.User, Id = Guid.Parse(constGuidTimoTicket) }, new cF4sdIdentityEntry() { Class = enumFasdInformationClass.Ticket, Id = demoTicket.Id } } });
output.Add(new cF4sdApiSearchResultRelation() { id = demoTicket.Id, Name = demoTicket.Name, DisplayName = demoTicket.Name, Infos = new Dictionary<string, string>() { ["Summary"] = demoTicket.Summary, ["Status"] = demoTicket.Status.ToString(), ["StatusId"] = ((int)demoTicket.Status).ToString(), ["Asset"] = demoTicket.Asset, ["ActivityType"] = ResolveTicketActivityType(demoTicket) }, Type = enumF4sdSearchResultClass.Ticket, Identities = new cF4sdIdentityList() { new cF4sdIdentityEntry() { Class = enumFasdInformationClass.User, Id = Guid.Parse(constGuidTimoTicket) }, new cF4sdIdentityEntry() { Class = enumFasdInformationClass.Ticket, Id = demoTicket.Id } } });
}
break;
@@ -1318,7 +1366,7 @@ namespace C4IT.FASD.Cockpit.Communication
["Status"] = demoTicket.Status.ToString(),
["StatusId"] = ((int)demoTicket.Status).ToString(),
["Asset"] = demoTicket.Asset ?? string.Empty,
["ActivityType"] = ResolveTicketActivityType(demoTicket.Name, demoTicket)
["ActivityType"] = ResolveTicketActivityType(demoTicket)
},
Identities = new cF4sdIdentityList()
{
@@ -1901,12 +1949,15 @@ namespace C4IT.FASD.Cockpit.Communication
if (writeParams.Values.TryGetValue("Asset", out var asset))
output.Asset = asset.ToString();
if (writeParams.Values.TryGetValue("Category", out var category))
output.Category = category.ToString();
if (writeParams.Values.TryGetValue("CreationSource", out var creationSourceObj))
if (Enum.TryParse(creationSourceObj.ToString(), out cF4SDTicket.enumTicketCreationSource creationSource))
output.CreationSource = creationSource;
if (writeParams.Values.TryGetValue("Category", out var category))
output.Category = category.ToString();
if (writeParams.Values.TryGetValue("ActivityType", out var activityType))
output.ActivityType = NormalizeActivityType(activityType?.ToString());
if (writeParams.Values.TryGetValue("CreationSource", out var creationSourceObj))
if (Enum.TryParse(creationSourceObj.ToString(), out cF4SDTicket.enumTicketCreationSource creationSource))
output.CreationSource = creationSource;
if (writeParams.Values.TryGetValue("Status", out var statusObj))
{
@@ -2143,37 +2194,11 @@ namespace C4IT.FASD.Cockpit.Communication
cCockpitConfiguration.Instance = new cCockpitConfiguration();
cCockpitConfiguration.Instance.agentApiConfiguration = new cAgentApiConfiguration() { ApiUrl = "", ClientId = "", ClientSecret = "", LogonUrl = "", OrganizationCode = 0 };
cCockpitConfiguration.Instance.m42ServerConfiguration = new cM42ServerConfiguration() { Server = ResolveDemoM42Server() };
cCockpitConfiguration.Instance.GlobalConfig = LoadDemoGlobalConfig();
cCockpitConfiguration.Instance.GlobalConfig = null;
await Task.CompletedTask;
return true;
}
private static cConfigHelperParameterList LoadDemoGlobalConfig()
{
try
{
var executingDirectory = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
var filePath = Path.Combine(executingDirectory, "Config", "F4SD-Global-Configuration.xml");
if (!File.Exists(filePath))
return null;
var xmlDocument = new XmlDocument();
xmlDocument.Load(filePath);
var root = xmlDocument.DocumentElement;
if (root == null || !string.Equals(root.Name, "F4SD-Global-Configuration", StringComparison.OrdinalIgnoreCase))
return null;
return cF4sdGlobalConfigParameterParser.Parse(root);
}
catch (Exception E)
{
LogException(E);
}
return null;
}
public override Task<bool> GetAgentOnlineStatus(int AgentDeviceId, int? AgentUserId = null) => Task.FromResult(true);
public override Task<cF4sdAgentScript> GetQuickActionOfAgent(int ScriptId) => Task.FromResult(new cF4sdAgentScript() { Id = ScriptId, Name = "AgentScript", Type = enumAgentScriptType.user, UserPermissionRequired = false });

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -1089,7 +1089,7 @@
{
"ColumnName": "DiskTotal",
"Values": [
511101108224,
511101108224.0,
null,
null,
null,
@@ -1122,7 +1122,7 @@
{
"ColumnName": "DiskFree",
"Values": [
3435973836,
3435973836.0,
null,
null,
null,
@@ -1155,7 +1155,7 @@
{
"ColumnName": "SystemDiskTotal",
"Values": [
274877906944,
274877906944.0,
null,
null,
null,
@@ -1188,7 +1188,7 @@
{
"ColumnName": "SystemDiskFree",
"Values": [
8589934592,
8589934592.0,
null,
null,
null,
@@ -1221,7 +1221,7 @@
{
"ColumnName": "MemoryTotal",
"Values": [
34037615820,
34037615820.0,
null,
null,
null,
@@ -1478,16 +1478,16 @@
null,
null,
null,
2,
1,
1,
1,
2.0,
1.0,
1.0,
1.0,
null,
null,
2,
1,
1,
1,
2.0,
1.0,
1.0,
1.0,
null,
null,
null,
@@ -1539,21 +1539,21 @@
{
"ColumnName": "DiskTotal",
"Values": [
511101108224,
511101108224,
511101108224,
511101108224,
511101108224,
511101108224,
511101108224,
511101108224,
511101108224,
511101108224,
511101108224,
511101108224,
511101108224,
511101108224,
511101108224,
511101108224.0,
511101108224.0,
511101108224.0,
511101108224.0,
511101108224.0,
511101108224.0,
511101108224.0,
511101108224.0,
511101108224.0,
511101108224.0,
511101108224.0,
511101108224.0,
511101108224.0,
511101108224.0,
511101108224.0,
null,
null,
null,
@@ -1572,21 +1572,21 @@
{
"ColumnName": "DiskFree",
"Values": [
3435973836,
26843545600,
84359738368,
105784247808,
105884247808,
105785247808,
105818914474,
105819414474,
105819914474,
105820414474,
105820914474,
105821414474,
105821914474,
105822414474,
105822914474,
3435973836.0,
26843545600.0,
84359738368.0,
105784247808.0,
105884247808.0,
105785247808.0,
105818914474.0,
105819414474.0,
105819914474.0,
105820414474.0,
105820914474.0,
105821414474.0,
105821914474.0,
105822414474.0,
105822914474.0,
null,
null,
null,
@@ -1605,21 +1605,21 @@
{
"ColumnName": "SystemDiskTotal",
"Values": [
274877906944,
274877906944,
274877906944,
274877906944,
274877906944,
274877906944,
274877906944,
274877906944,
274877906944,
274877906944,
274877906944,
274877906944,
274877906944,
274877906944,
274877906944,
274877906944.0,
274877906944.0,
274877906944.0,
274877906944.0,
274877906944.0,
274877906944.0,
274877906944.0,
274877906944.0,
274877906944.0,
274877906944.0,
274877906944.0,
274877906944.0,
274877906944.0,
274877906944.0,
274877906944.0,
null,
null,
null,
@@ -1638,21 +1638,21 @@
{
"ColumnName": "SystemDiskFree",
"Values": [
8589934592,
28600000000,
71203283968,
77893283968,
71232283968,
81203283968,
81217783968,
83551683968,
85885583968,
88219483968,
90553383968,
92887283968,
95221183968,
97555083968,
99888983968,
8589934592.0,
28600000000.0,
71203283968.0,
77893283968.0,
71232283968.0,
81203283968.0,
81217783968.0,
83551683968.0,
85885583968.0,
88219483968.0,
90553383968.0,
92887283968.0,
95221183968.0,
97555083968.0,
99888983968.0,
null,
null,
null,
@@ -1671,21 +1671,21 @@
{
"ColumnName": "MemoryTotal",
"Values": [
34037615820,
34037615820,
34037615820,
34037615820,
34037615820,
34037615820,
34037615820,
34037615820,
34037615820,
34037615820,
34037615820,
34037615820,
34037615820,
34037615820,
34037615820,
34037615820.0,
34037615820.0,
34037615820.0,
34037615820.0,
34037615820.0,
34037615820.0,
34037615820.0,
34037615820.0,
34037615820.0,
34037615820.0,
34037615820.0,
34037615820.0,
34037615820.0,
34037615820.0,
34037615820.0,
null,
null,
null,
@@ -1704,21 +1704,21 @@
{
"ColumnName": "MemoryFree",
"Values": [
21260088115,
21277781150,
24837781150,
18837781150,
26837781150,
26377781150,
14837781150,
24839981150,
24837781150,
24008141150,
24364329720,
24720518290,
25076706860,
25432895430,
25789084000,
21260088115.0,
21277781150.0,
24837781150.0,
18837781150.0,
26837781150.0,
26377781150.0,
14837781150.0,
24839981150.0,
24837781150.0,
24008141150.0,
24364329720.0,
24720518290.0,
25076706860.0,
25432895430.0,
25789084000.0,
null,
null,
null,
@@ -1737,21 +1737,21 @@
{
"ColumnName": "ProcessorUsage",
"Values": [
12,
20,
18,
15,
18,
19,
20,
26,
17,
11,
18,
16,
16,
14,
15,
12.0,
20.0,
18.0,
15.0,
18.0,
19.0,
20.0,
26.0,
17.0,
11.0,
18.0,
16.0,
16.0,
14.0,
15.0,
null,
null,
null,
@@ -1841,16 +1841,16 @@
null,
null,
null,
16000,
14000,
16000,
17000,
16000.0,
14000.0,
16000.0,
17000.0,
null,
null,
14000,
13000,
17000,
16000,
14000.0,
13000.0,
17000.0,
16000.0,
null,
null,
null,
@@ -1869,21 +1869,21 @@
{
"ColumnName": "NetworkRecievedTraffic",
"Values": [
107374182,
6120328396,
53687091,
193273528,
193273528,
193273528,
612032839,
193273528,
193273528,
612032839,
612032839,
193273528,
193273528,
612032839,
193273528,
107374182.0,
6120328396.0,
53687091.0,
193273528.0,
193273528.0,
193273528.0,
612032839.0,
193273528.0,
193273528.0,
612032839.0,
612032839.0,
193273528.0,
193273528.0,
612032839.0,
193273528.0,
null,
null,
null,
@@ -1902,21 +1902,21 @@
{
"ColumnName": "NetworkSentTraffic",
"Values": [
5368709,
5368709,
5368709,
189273528,
189298528,
82298528,
191530456,
223540266,
255550077,
287559887,
319569698,
351579509,
383589319,
415599130,
447608941,
5368709.0,
5368709.0,
5368709.0,
189273528.0,
189298528.0,
82298528.0,
191530456.0,
223540266.0,
255550077.0,
287559887.0,
319569698.0,
351579509.0,
383589319.0,
415599130.0,
447608941.0,
null,
null,
null,
@@ -2340,21 +2340,21 @@
{
"ColumnName": "LogonCount",
"Values": [
2,
1,
2.0,
1.0,
null,
null,
null,
2,
1,
1,
1,
2.0,
1.0,
1.0,
1.0,
null,
null,
2,
1,
1,
1,
2.0,
1.0,
1.0,
1.0,
null,
null,
null,
@@ -2440,7 +2440,7 @@
"ColumnName": "HardReset",
"Values": [
null,
1,
1.0,
null,
null,
null,
@@ -2474,7 +2474,7 @@
"Values": [
null,
null,
1,
1.0,
null,
null,
null,
@@ -2506,7 +2506,7 @@
"ColumnName": "ApplicationHang",
"Values": [
null,
3,
3.0,
null,
null,
null,
@@ -2538,7 +2538,7 @@
{
"ColumnName": "ApplicationCrash",
"Values": [
2,
2.0,
null,
null,
null,
@@ -2771,57 +2771,57 @@
"5": [
[
"2022-05-14T00:55:15.34",
16000
16000.0
],
[
"2022-05-14T01:24:03.34",
16000
16000.0
]
],
"6": [
[
"2022-05-13T01:24:03.34",
14000
14000.0
]
],
"7": [
[
"2022-05-12T01:24:03.34",
16000
16000.0
]
],
"8": [
[
"2022-05-11T01:24:03.34",
17000
17000.0
]
],
"11": [
[
"2022-05-08T01:09:39.34",
14000
14000.0
],
[
"2022-05-08T03:33:39.34",
14000
14000.0
]
],
"12": [
[
"2022-05-08T05:57:39.34",
13000
13000.0
]
],
"13": [
[
"2022-05-06T03:19:15.34",
17000
17000.0
]
],
"14": [
[
"2022-05-05T03:33:39.34",
16000
16000.0
]
]
}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -540,7 +540,7 @@
{
"ColumnName": "id",
"Values": [
2,
2.0,
null,
null,
null,
@@ -707,57 +707,57 @@
"5": [
[
"2023-02-17T06:19:38",
160000
160000.0
],
[
"2023-02-17T06:48:26",
16000
16000.0
]
],
"6": [
[
"2023-02-16T06:48:26",
14000
14000.0
]
],
"7": [
[
"2023-02-15T06:48:26",
16000
16000.0
]
],
"8": [
[
"2023-02-14T06:48:26",
17000
17000.0
]
],
"11": [
[
"2023-02-11T06:34:02",
14000
14000.0
],
[
"2023-02-11T08:58:02",
14000
14000.0
]
],
"12": [
[
"2023-02-11T11:22:02",
13000
13000.0
]
],
"13": [
[
"2023-02-09T08:43:38",
17000
17000.0
]
],
"14": [
[
"2023-02-08T08:58:02",
16000
16000.0
]
]
}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -1089,7 +1089,7 @@
{
"ColumnName": "DiskTotal",
"Values": [
511101108224,
511101108224.0,
null,
null,
null,
@@ -1122,7 +1122,7 @@
{
"ColumnName": "DiskFree",
"Values": [
3435973836,
3435973836.0,
null,
null,
null,
@@ -1155,7 +1155,7 @@
{
"ColumnName": "SystemDiskTotal",
"Values": [
274877906944,
274877906944.0,
null,
null,
null,
@@ -1188,7 +1188,7 @@
{
"ColumnName": "SystemDiskFree",
"Values": [
8589934592,
8589934592.0,
null,
null,
null,
@@ -1221,7 +1221,7 @@
{
"ColumnName": "MemoryTotal",
"Values": [
34037615820,
34037615820.0,
null,
null,
null,
@@ -1478,16 +1478,16 @@
null,
null,
null,
2,
1,
1,
1,
2.0,
1.0,
1.0,
1.0,
null,
null,
2,
1,
1,
1,
2.0,
1.0,
1.0,
1.0,
null,
null,
null,
@@ -1539,21 +1539,21 @@
{
"ColumnName": "DiskTotal",
"Values": [
511101108224,
511101108224,
511101108224,
511101108224,
511101108224,
511101108224,
511101108224,
511101108224,
511101108224,
511101108224,
511101108224,
511101108224,
511101108224,
511101108224,
511101108224,
511101108224.0,
511101108224.0,
511101108224.0,
511101108224.0,
511101108224.0,
511101108224.0,
511101108224.0,
511101108224.0,
511101108224.0,
511101108224.0,
511101108224.0,
511101108224.0,
511101108224.0,
511101108224.0,
511101108224.0,
null,
null,
null,
@@ -1572,21 +1572,21 @@
{
"ColumnName": "DiskFree",
"Values": [
3435973836,
26843545600,
84359738368,
105784247808,
105884247808,
105785247808,
105818914474,
105819414474,
105819914474,
105820414474,
105820914474,
105821414474,
105821914474,
105822414474,
105822914474,
3435973836.0,
26843545600.0,
84359738368.0,
105784247808.0,
105884247808.0,
105785247808.0,
105818914474.0,
105819414474.0,
105819914474.0,
105820414474.0,
105820914474.0,
105821414474.0,
105821914474.0,
105822414474.0,
105822914474.0,
null,
null,
null,
@@ -1605,21 +1605,21 @@
{
"ColumnName": "SystemDiskTotal",
"Values": [
274877906944,
274877906944,
274877906944,
274877906944,
274877906944,
274877906944,
274877906944,
274877906944,
274877906944,
274877906944,
274877906944,
274877906944,
274877906944,
274877906944,
274877906944,
274877906944.0,
274877906944.0,
274877906944.0,
274877906944.0,
274877906944.0,
274877906944.0,
274877906944.0,
274877906944.0,
274877906944.0,
274877906944.0,
274877906944.0,
274877906944.0,
274877906944.0,
274877906944.0,
274877906944.0,
null,
null,
null,
@@ -1638,21 +1638,21 @@
{
"ColumnName": "SystemDiskFree",
"Values": [
8589934592,
28600000000,
71203283968,
77893283968,
71232283968,
81203283968,
81217783968,
83551683968,
85885583968,
88219483968,
90553383968,
92887283968,
95221183968,
97555083968,
99888983968,
8589934592.0,
28600000000.0,
71203283968.0,
77893283968.0,
71232283968.0,
81203283968.0,
81217783968.0,
83551683968.0,
85885583968.0,
88219483968.0,
90553383968.0,
92887283968.0,
95221183968.0,
97555083968.0,
99888983968.0,
null,
null,
null,
@@ -1671,21 +1671,21 @@
{
"ColumnName": "MemoryTotal",
"Values": [
34037615820,
34037615820,
34037615820,
34037615820,
34037615820,
34037615820,
34037615820,
34037615820,
34037615820,
34037615820,
34037615820,
34037615820,
34037615820,
34037615820,
34037615820,
34037615820.0,
34037615820.0,
34037615820.0,
34037615820.0,
34037615820.0,
34037615820.0,
34037615820.0,
34037615820.0,
34037615820.0,
34037615820.0,
34037615820.0,
34037615820.0,
34037615820.0,
34037615820.0,
34037615820.0,
null,
null,
null,
@@ -1704,21 +1704,21 @@
{
"ColumnName": "MemoryFree",
"Values": [
21260088115,
21277781150,
24837781150,
18837781150,
26837781150,
26377781150,
14837781150,
24839981150,
24837781150,
24008141150,
24364329720,
24720518290,
25076706860,
25432895430,
25789084000,
21260088115.0,
21277781150.0,
24837781150.0,
18837781150.0,
26837781150.0,
26377781150.0,
14837781150.0,
24839981150.0,
24837781150.0,
24008141150.0,
24364329720.0,
24720518290.0,
25076706860.0,
25432895430.0,
25789084000.0,
null,
null,
null,
@@ -1737,21 +1737,21 @@
{
"ColumnName": "ProcessorUsage",
"Values": [
12,
20,
18,
15,
18,
19,
20,
26,
17,
11,
18,
16,
16,
14,
15,
12.0,
20.0,
18.0,
15.0,
18.0,
19.0,
20.0,
26.0,
17.0,
11.0,
18.0,
16.0,
16.0,
14.0,
15.0,
null,
null,
null,
@@ -1841,16 +1841,16 @@
null,
null,
null,
16000,
14000,
16000,
17000,
16000.0,
14000.0,
16000.0,
17000.0,
null,
null,
14000,
13000,
17000,
16000,
14000.0,
13000.0,
17000.0,
16000.0,
null,
null,
null,
@@ -1869,21 +1869,21 @@
{
"ColumnName": "NetworkRecievedTraffic",
"Values": [
107374182,
6120328396,
53687091,
193273528,
193273528,
193273528,
612032839,
193273528,
193273528,
612032839,
612032839,
193273528,
193273528,
612032839,
193273528,
107374182.0,
6120328396.0,
53687091.0,
193273528.0,
193273528.0,
193273528.0,
612032839.0,
193273528.0,
193273528.0,
612032839.0,
612032839.0,
193273528.0,
193273528.0,
612032839.0,
193273528.0,
null,
null,
null,
@@ -1902,21 +1902,21 @@
{
"ColumnName": "NetworkSentTraffic",
"Values": [
5368709,
5368709,
5368709,
189273528,
189298528,
82298528,
191530456,
223540266,
255550077,
287559887,
319569698,
351579509,
383589319,
415599130,
447608941,
5368709.0,
5368709.0,
5368709.0,
189273528.0,
189298528.0,
82298528.0,
191530456.0,
223540266.0,
255550077.0,
287559887.0,
319569698.0,
351579509.0,
383589319.0,
415599130.0,
447608941.0,
null,
null,
null,
@@ -2340,21 +2340,21 @@
{
"ColumnName": "LogonCount",
"Values": [
2,
1,
2.0,
1.0,
null,
null,
null,
2,
1,
1,
1,
2.0,
1.0,
1.0,
1.0,
null,
null,
2,
1,
1,
1,
2.0,
1.0,
1.0,
1.0,
null,
null,
null,
@@ -2440,7 +2440,7 @@
"ColumnName": "HardReset",
"Values": [
null,
1,
1.0,
null,
null,
null,
@@ -2474,7 +2474,7 @@
"Values": [
null,
null,
1,
1.0,
null,
null,
null,
@@ -2506,7 +2506,7 @@
"ColumnName": "ApplicationHang",
"Values": [
null,
3,
3.0,
null,
null,
null,
@@ -2538,7 +2538,7 @@
{
"ColumnName": "ApplicationCrash",
"Values": [
2,
2.0,
null,
null,
null,
@@ -2771,57 +2771,57 @@
"5": [
[
"2022-05-14T00:56:05.48",
16000
16000.0
],
[
"2022-05-14T01:24:53.48",
16000
16000.0
]
],
"6": [
[
"2022-05-13T01:24:53.48",
14000
14000.0
]
],
"7": [
[
"2022-05-12T01:24:53.48",
16000
16000.0
]
],
"8": [
[
"2022-05-11T01:24:53.48",
17000
17000.0
]
],
"11": [
[
"2022-05-08T01:10:29.48",
14000
14000.0
],
[
"2022-05-08T03:34:29.48",
14000
14000.0
]
],
"12": [
[
"2022-05-08T05:58:29.48",
13000
13000.0
]
],
"13": [
[
"2022-05-06T03:20:05.48",
17000
17000.0
]
],
"14": [
[
"2022-05-05T03:34:29.48",
16000
16000.0
]
]
}

View File

@@ -207,4 +207,4 @@
"IsWritable": false
}
}
}
}

View File

@@ -49,9 +49,10 @@ namespace FasdCockpitCommunicationDemo
public string DescriptionHtml { get; set; }
public int Priority { get; set; }
public string Category { get; set; } //todo: replace with tree structure
public string ActivityType { get; set; }
public string Solution { get; set; }
public string SolutionHtml { get; set; }
public Dictionary<string, string> DirectLinks { get; set; }
public string SolutionHtml { get; set; }
public Dictionary<string, string> DirectLinks { get; set; }
public List<cTicketJournalItem> JournalItems { get; set; }

View File

@@ -12,7 +12,7 @@ using static C4IT.Logging.cLogManager;
namespace FasdDesktopUi.Basics.Services.SupportCase.Controllers
{
/// <summary>
/// Used to manage the <see cref="ISupportCase"/> for the UI via the <see cref="SupportCaseProcessor"/>"
/// Used to manage the <see cref="ISupportCase"/> for the UI via the <see cref="SupportCaseProcessor"/>
/// </summary>
public class SupportCaseController
{
@@ -81,8 +81,8 @@ namespace FasdDesktopUi.Basics.Services.SupportCase.Controllers
}
}
private void HandleAvailableCaseRelationsAdded(object sender, RelationEventArgs e)
=> AvailableCaseRelationsAdded?.Invoke(this, e);
private void HandleAvailableCaseRelationsAdded(object sender, RelationEventArgs e)
=> AvailableCaseRelationsAdded?.Invoke(this, e);
private void HandleCaseDataChanged(object sender, SupportCaseDataEventArgs e)
{
@@ -127,13 +127,16 @@ namespace FasdDesktopUi.Basics.Services.SupportCase.Controllers
SupportCaseDataProviderArtifact.HealthCardDataHelper.TrySetSelectedHealthcard(requiredInformationClasses);
_focusedRelation = relation;
if (!_selectedRelations.Values.Contains(relation))
_hasDirectionConnection = false;
_selectedRelations[cF4sdIdentityEntry.GetFromSearchResult(relation.Type)] = relation;
_ = Task.Run(async () => await UpdateStatusOfSelectedRelations());
_focusedRelation = relation;
if (!_selectedRelations.Values.Contains(relation) || relation.Type == enumF4sdSearchResultClass.Computer)
{
_hasDirectionConnection = false;
SupportCaseDataProviderArtifact.DirectConnectionHelper.Reset();
}
_selectedRelations[cF4sdIdentityEntry.GetFromSearchResult(relation.Type)] = relation;
_ = Task.Run(async () => await UpdateStatusOfSelectedRelations());
var focusedRelations = new cF4sdApiSearchResultRelation[1] { _focusedRelation };
FocusedRelationsChanged?.Invoke(this, new RelationEventArgs()
@@ -147,7 +150,7 @@ namespace FasdDesktopUi.Basics.Services.SupportCase.Controllers
}
}
private async Task UpdateStatusOfSelectedRelations()
private async Task UpdateStatusOfSelectedRelations()
{
const string StatusString = "Status";
@@ -220,9 +223,8 @@ namespace FasdDesktopUi.Basics.Services.SupportCase.Controllers
catch (Exception ex)
{
LogException(ex);
}
}
}
}
public async Task RefreshDataForCurrentlyFocusedRelationAsync()
{

View File

@@ -65,18 +65,19 @@ namespace FasdDesktopUi.Basics.Services.SupportCase
if (relations is null)
return;
foreach (var relationType in relations)
{
if (_caseRelations.TryGetValue(relationType.Key, out var caseRelation))
caseRelation = caseRelation.Union(relationType).ToList();
else
_caseRelations.Add(relationType.Key, relationType.ToList());
if (SupportCaseDataProviderArtifact?.CaseRelations?.TryGetValue(relationType.Key, out var caseRelations) ?? false)
caseRelations = caseRelations.Union(relationType).ToList();
else
SupportCaseDataProviderArtifact?.CaseRelations?.Add(relationType.Key, relationType.ToList());
}
foreach (var relationType in relations)
{
//TODO Max fragen obs passt! Bug: in den Ticketrelations (Header Ticketauswahl) sind nur zwei Tickets sichtbar anstatt 5 oder mehr..
if (_caseRelations.TryGetValue(relationType.Key, out var caseRelation))
_caseRelations[relationType.Key] = caseRelation.Union(relationType).ToList();
else
_caseRelations.Add(relationType.Key, relationType.ToList());
if (SupportCaseDataProviderArtifact?.CaseRelations?.TryGetValue(relationType.Key, out var caseRelations) ?? false)
SupportCaseDataProviderArtifact.CaseRelations[relationType.Key] = caseRelations.Union(relationType).ToList();
else
SupportCaseDataProviderArtifact?.CaseRelations?.Add(relationType.Key, relationType.ToList());
}
CaseRelationsAdded?.Invoke(this, new RelationEventArgs() { Relations = relations });
}

View File

@@ -68,8 +68,6 @@ namespace FasdDesktopUi.Basics.UserControls
};
private const string CategoryTableNamePrimary = "M42Wpm-Ticket-Categories";
private const string CategoryTableNameLegacy = "M42Wpm-Ticket-CloseCase-Categories";
private string activeCategoryTableName = CategoryTableNamePrimary;
private static readonly Brush SharedValidationBorderBrush = CreateValidationBrush();
private static readonly Brush DefaultTextBoxBorderBrush = CreateDefaultTextBoxBorderBrush();
@@ -1009,20 +1007,7 @@ namespace FasdDesktopUi.Basics.UserControls
isCategoryLoading = true;
var tableCandidates = new[] { CategoryTableNamePrimary, CategoryTableNameLegacy };
bool initialized = false;
foreach (var tableName in tableCandidates)
{
if (await TryPopulateCategoryHierarchyAsync(tableName))
{
activeCategoryTableName = tableName;
initialized = true;
break;
}
}
if (initialized)
if (await TryPopulateCategoryHierarchyAsync(CategoryTableNamePrimary))
{
CategorySelectionControl.ItemsSource = categoryHierarchy;
TrySelectTicketCategoryFromTicketInfos();

View File

@@ -70,10 +70,8 @@ namespace FasdDesktopUi.Basics.UserControls
};
private const string CategoryTableNamePrimary = "M42Wpm-Ticket-Categories";
private const string CategoryTableNameLegacy = "M42Wpm-Ticket-CloseCase-Categories";
private const string TicketDetailsTableName = "M42Wpm-Tickets";
private const string TicketDetailsCategoryIdColumnName = "CategoryId";
private string activeCategoryTableName = CategoryTableNamePrimary;
private static readonly Brush SharedValidationBorderBrush = CreateValidationBrush();
private static readonly Brush DefaultTextBoxBorderBrush = CreateDefaultTextBoxBorderBrush();
@@ -1014,20 +1012,7 @@ namespace FasdDesktopUi.Basics.UserControls
isCategoryLoading = true;
var tableCandidates = new[] { CategoryTableNamePrimary, CategoryTableNameLegacy };
bool initialized = false;
foreach (var tableName in tableCandidates)
{
if (await TryPopulateCategoryHierarchyAsync(tableName))
{
activeCategoryTableName = tableName;
initialized = true;
break;
}
}
if (initialized)
if (await TryPopulateCategoryHierarchyAsync(CategoryTableNamePrimary))
{
CategorySelectionControl.ItemsSource = categoryHierarchy;
TrySelectTicketCategoryFromTicketInfos();

View File

@@ -880,33 +880,33 @@
</UIItem>
<UIItem Name="QuickAction.Remote.Copy.Description">
<Language Lang="EN">The Quick Action '{0}' was {3}executed remotely by F4SD on the device '{1}' at {2}.</Language>
<Language Lang="DE">Die Quick Action "{0}" wurde durch F4SD remote auf dem Gerät "{1}" am {2} {3}ausgeführt.</Language>
<Language Lang="EN">The Quick Action '{0}' was {3}executed remotely by F4SD on the device '{1}' at {2} UTC.</Language>
<Language Lang="DE">Die Quick Action "{0}" wurde durch F4SD remote auf dem Gerät "{1}" am {2} UTC {3}ausgeführt.</Language>
</UIItem>
<UIItem Name="QuickAction.Remote.Copy.Description.Html">
<Language Lang="EN">The Quick Action &lt;b&gt;'{0}'&lt;/b&gt; was &lt;b&gt;{3}&lt;/b&gt;executed remotely by F4SD on the device &lt;b&gt;'{1}'&lt;/b&gt; at {2}.</Language>
<Language Lang="DE">Die Quick Action &lt;b&gt;"{0}"&lt;/b&gt; wurde durch F4SD remote auf dem Gerät &lt;b&gt;"{1}"&lt;/b&gt; am {2} &lt;b&gt;{3}&lt;/b&gt;ausgeführt.</Language>
<Language Lang="EN">The Quick Action &lt;b&gt;'{0}'&lt;/b&gt; was &lt;b&gt;{3}&lt;/b&gt;executed remotely by F4SD on the device &lt;b&gt;'{1}'&lt;/b&gt; at {2} UTC.</Language>
<Language Lang="DE">Die Quick Action &lt;b&gt;"{0}"&lt;/b&gt; wurde durch F4SD remote auf dem Gerät &lt;b&gt;"{1}"&lt;/b&gt; am {2} UTC &lt;b&gt;{3}&lt;/b&gt;ausgeführt.</Language>
</UIItem>
<UIItem Name="QuickAction.RemoteSession.Copy.Description">
<Language Lang="EN">The Quick Action '{0}' was {3}executed remotely by F4SD for the session '{1}' at {2}.</Language>
<Language Lang="DE">Die Quick Action "{0}" wurde durch F4SD remote für die Session "{1}" am {2} {3}ausgeführt.</Language>
<Language Lang="EN">The Quick Action '{0}' was {3}executed remotely by F4SD for the session '{1}' at {2} UTC.</Language>
<Language Lang="DE">Die Quick Action "{0}" wurde durch F4SD remote für die Session "{1}" am {2} UTC {3}ausgeführt.</Language>
</UIItem>
<UIItem Name="QuickAction.RemoteSession.Copy.Description.Html">
<Language Lang="EN">The Quick Action &lt;b&gt;'{0}'&lt;/b&gt; was &lt;b&gt;{3}&lt;/b&gt;executed remotely by F4SD on the session &lt;b&gt;'{1}'&lt;/b&gt; at {2}.</Language>
<Language Lang="DE">Die Quick Action &lt;b&gt;"{0}"&lt;/b&gt; wurde durch F4SD remote für die Session &lt;b&gt;"{1}"&lt;/b&gt; am {2} &lt;b&gt;{3}&lt;/b&gt;ausgeführt.</Language>
<Language Lang="EN">The Quick Action &lt;b&gt;'{0}'&lt;/b&gt; was &lt;b&gt;{3}&lt;/b&gt;executed remotely by F4SD on the session &lt;b&gt;'{1}'&lt;/b&gt; at {2} UTC.</Language>
<Language Lang="DE">Die Quick Action &lt;b&gt;"{0}"&lt;/b&gt; wurde durch F4SD remote für die Session &lt;b&gt;"{1}"&lt;/b&gt; am {2} UTC &lt;b&gt;{3}&lt;/b&gt;ausgeführt.</Language>
</UIItem>
<UIItem Name="QuickAction.Local.Copy.Description">
<Language Lang="EN">The Quick Action '{0}' was {3}executed local by F4SD for the device '{1}' at {2}.</Language>
<Language Lang="DE">Die Quick Action "{0}" wurde durch F4SD lokal für das Gerät "{1}" am {2} {3}ausgeführt.</Language>
<Language Lang="EN">The Quick Action '{0}' was {3}executed local by F4SD for the device '{1}' at {2} UTC.</Language>
<Language Lang="DE">Die Quick Action "{0}" wurde durch F4SD lokal für das Gerät "{1}" am {2} UTC {3}ausgeführt.</Language>
</UIItem>
<UIItem Name="QuickAction.Local.Copy.Description.Html">
<Language Lang="EN">The Quick Action &lt;b&gt;'{0}'&lt;/b&gt; was &lt;b&gt;{3}&lt;/b&gt;executed local by F4SD for the device &lt;b&gt;'{1}'&lt;/b&gt; at {2}.</Language>
<Language Lang="DE">Die Quick Action &lt;b&gt;"{0}"&lt;/b&gt; wurde durch F4SD lokal für Gerät &lt;b&gt;"{1}"&lt;/b&gt; am {2} &lt;b&gt;{3}&lt;/b&gt;ausgeführt.</Language>
<Language Lang="EN">The Quick Action &lt;b&gt;'{0}'&lt;/b&gt; was &lt;b&gt;{3}&lt;/b&gt;executed local by F4SD for the device &lt;b&gt;'{1}'&lt;/b&gt; at {2} UTC.</Language>
<Language Lang="DE">Die Quick Action &lt;b&gt;"{0}"&lt;/b&gt; wurde durch F4SD lokal für Gerät &lt;b&gt;"{1}"&lt;/b&gt; am {2} UTC&lt;b&gt;{3}&lt;/b&gt;ausgeführt.</Language>
</UIItem>
<UIItem Name="QuickAction.Copy.RevisionStatus.Successfull">

View File

@@ -106,5 +106,4 @@
</Setter.Value>
</Setter>
</Style>
</ResourceDictionary>
</ResourceDictionary>

View File

@@ -1461,4 +1461,4 @@
<!--#endregion-->
</ResourceDictionary>
</ResourceDictionary>