aktueller Stand

This commit is contained in:
Meik
2026-02-04 17:52:39 +01:00
parent c1f600bc0d
commit 5a9e58dcfb
14 changed files with 18393 additions and 18415 deletions

View File

@@ -240,13 +240,12 @@ namespace C4IT.FASD.Cockpit.Communication
Name = record.DisplayName, Name = record.DisplayName,
Summary = record.Summary, Summary = record.Summary,
Status = status, Status = status,
AffectedUser = detail.AffectedUser ?? record.UserDisplayName, AffectedUser = detail.AffectedUser ?? record.UserDisplayName,
Asset = detail.Asset, Asset = detail.Asset,
Category = detail.Category, Category = detail.Category,
Classification = detail.Classification, Description = detail.Description,
Description = detail.Description, DescriptionHtml = detail.DescriptionHtml,
DescriptionHtml = detail.DescriptionHtml, Solution = detail.Solution,
Solution = detail.Solution,
SolutionHtml = detail.SolutionHtml, SolutionHtml = detail.SolutionHtml,
CreationDate = createdAt.ToLocalTime(), CreationDate = createdAt.ToLocalTime(),
CreationDaysSinceNow = Math.Max(0, (int)(DateTime.UtcNow - createdAt).TotalDays), CreationDaysSinceNow = Math.Max(0, (int)(DateTime.UtcNow - createdAt).TotalDays),
@@ -1442,9 +1441,6 @@ namespace C4IT.FASD.Cockpit.Communication
if (writeParams.Values.TryGetValue("Category", out var category)) if (writeParams.Values.TryGetValue("Category", out var category))
output.Category = category.ToString(); output.Category = category.ToString();
if (writeParams.Values.TryGetValue("Classification", out var classification))
output.Classification = classification.ToString();
if (writeParams.Values.TryGetValue("CreationSource", out var creationSourceObj)) if (writeParams.Values.TryGetValue("CreationSource", out var creationSourceObj))
if (Enum.TryParse(creationSourceObj.ToString(), out cF4SDTicket.enumTicketCreationSource creationSource)) if (Enum.TryParse(creationSourceObj.ToString(), out cF4SDTicket.enumTicketCreationSource creationSource))
output.CreationSource = creationSource; output.CreationSource = creationSource;

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

@@ -77,21 +77,21 @@
"Name": { "Name": {
"ColumnName": "Name", "ColumnName": "Name",
"Values": [ "Values": [
"Anmeldung nicht möglich", "Anmeldung nicht m\u00f6glich",
"Bildschirm bleibt schwarz", "Bildschirm bleibt schwarz",
"CRM Störung", "CRM St\u00f6rung",
"Dateityp kann nicht gelesen werden", "Dateityp kann nicht gelesen werden",
"Druckerstörung", "Druckerst\u00f6rung",
"E-Mail-Versand nicht mehr möglich", "E-Mail-Versand nicht mehr m\u00f6glich",
"F4SD Störung", "F4SD St\u00f6rung",
"Internetverbindung gestört", "Internetverbindung gest\u00f6rt",
"Jalousiensteuerung defekt", "Jalousiensteuerung defekt",
"Klimatisierungsstörung - Raumtemperatur zu hoch", "Klimatisierungsst\u00f6rung - Raumtemperatur zu hoch",
"Lampe ist defekt", "Lampe ist defekt",
"Netzwerklaufwerk nicht erreichbar", "Netzwerklaufwerk nicht erreichbar",
"Passcode vergessen, Mobilgerät ist gesperrt", "Passcode vergessen, Mobilger\u00e4t ist gesperrt",
"Software-Service arbeitet nicht mehr korrekt", "Software-Service arbeitet nicht mehr korrekt",
"Telefonstörung" "Telefonst\u00f6rung"
], ],
"IsIncomplete": false, "IsIncomplete": false,
"IsWritable": false "IsWritable": false
@@ -101,19 +101,19 @@
"Values": [ "Values": [
"Der Anwender kann sich nicht mehr anmelden", "Der Anwender kann sich nicht mehr anmelden",
"Der Bildschirm bleibt schwarz, Computer startet nicht mehr", "Der Bildschirm bleibt schwarz, Computer startet nicht mehr",
"CRM Störung", "CRM St\u00f6rung",
"Ein bestimmter Dateityp kann nicht verarbeitet werden", "Ein bestimmter Dateityp kann nicht verarbeitet werden",
"Ein Drucker arbeitet nicht mehr zufriedenstellend oder ist kaputt", "Ein Drucker arbeitet nicht mehr zufriedenstellend oder ist kaputt",
"Der Versand von E-Mails ist nicht mehr möglich", "Der Versand von E-Mails ist nicht mehr m\u00f6glich",
"F4SD Störung", "F4SD St\u00f6rung",
"Der Anwender kommt nicht mehr ins Internet", "Der Anwender kommt nicht mehr ins Internet",
"Die automatischen Sonnenschutzvorrichtungen funktionieren nicht mehr", "Die automatischen Sonnenschutzvorrichtungen funktionieren nicht mehr",
"Die Raumklimatisierung funktioniert nicht mehr korrekt", "Die Raumklimatisierung funktioniert nicht mehr korrekt",
"Lampe ausgefallen oder schwach", "Lampe ausgefallen oder schwach",
"Ein Netzwerklaufwerk kann vom Anwender nicht mehr erreicht werden", "Ein Netzwerklaufwerk kann vom Anwender nicht mehr erreicht werden",
"Das mobile Endgerät des Anwenders ist gesperrt, der Passcode vergessen", "Das mobile Endger\u00e4t des Anwenders ist gesperrt, der Passcode vergessen",
"Ein Software-Service funktioniert nicht mehr richtig", "Ein Software-Service funktioniert nicht mehr richtig",
"Das Telefon des Anwenders ist gestört" "Das Telefon des Anwenders ist gest\u00f6rt"
], ],
"IsIncomplete": false, "IsIncomplete": false,
"IsWritable": false "IsWritable": false
@@ -183,28 +183,6 @@
], ],
"IsIncomplete": false, "IsIncomplete": false,
"IsWritable": false "IsWritable": false
},
"Classification": {
"ColumnName": "Classification",
"Values": [
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0
],
"IsIncomplete": false,
"IsWritable": false
} }
} }
} }

View File

@@ -14,7 +14,6 @@
"AffectedUser": "Ticket, Timo", "AffectedUser": "Ticket, Timo",
"Asset": "C4-NB00015", "Asset": "C4-NB00015",
"Category": "Demo / Ticketsystem", "Category": "Demo / Ticketsystem",
"Classification": "Incident",
"Description": "Der Benutzer meldet, dass die VPN-Verbindung spätestens nach zwei Minuten getrennt wird. Eine stabile Remote-Arbeit ist aktuell nicht möglich.", "Description": "Der Benutzer meldet, dass die VPN-Verbindung spätestens nach zwei Minuten getrennt wird. Eine stabile Remote-Arbeit ist aktuell nicht möglich.",
"DescriptionHtml": "<p>Der Benutzer meldet, dass die VPN-Verbindung spätestens nach zwei Minuten getrennt wird. Eine stabile Remote-Arbeit ist aktuell nicht möglich.</p>", "DescriptionHtml": "<p>Der Benutzer meldet, dass die VPN-Verbindung spätestens nach zwei Minuten getrennt wird. Eine stabile Remote-Arbeit ist aktuell nicht möglich.</p>",
"Priority": 2, "Priority": 2,
@@ -42,7 +41,6 @@
"AffectedUser": "Ticket, Timo", "AffectedUser": "Ticket, Timo",
"Asset": "C4-NB00015", "Asset": "C4-NB00015",
"Category": "Demo / Kommunikation", "Category": "Demo / Kommunikation",
"Classification": "Incident",
"Description": "Teams-Nachrichten und Meetings starten mit deutlicher Verzögerung. Laut Rückmeldung wirkt der Client zeitweise eingefroren.", "Description": "Teams-Nachrichten und Meetings starten mit deutlicher Verzögerung. Laut Rückmeldung wirkt der Client zeitweise eingefroren.",
"DescriptionHtml": "<p>Teams-Nachrichten und Meetings starten mit deutlicher Verzögerung. Laut Rückmeldung wirkt der Client zeitweise eingefroren.</p>", "DescriptionHtml": "<p>Teams-Nachrichten und Meetings starten mit deutlicher Verzögerung. Laut Rückmeldung wirkt der Client zeitweise eingefroren.</p>",
"Priority": 2, "Priority": 2,
@@ -70,7 +68,6 @@
"AffectedUser": "Ticket, Timo", "AffectedUser": "Ticket, Timo",
"Asset": "C4-NB00015", "Asset": "C4-NB00015",
"Category": "Demo / Hardware", "Category": "Demo / Hardware",
"Classification": "Request",
"Description": "Das bereitgestellte Notebook startet nur unregelmäßig. An manchen Tagen benötigt es mehrere Versuche bis zur Anmeldung.", "Description": "Das bereitgestellte Notebook startet nur unregelmäßig. An manchen Tagen benötigt es mehrere Versuche bis zur Anmeldung.",
"DescriptionHtml": "<p>Das bereitgestellte Notebook startet nur unregelmäßig. An manchen Tagen benötigt es mehrere Versuche bis zur Anmeldung.</p>", "DescriptionHtml": "<p>Das bereitgestellte Notebook startet nur unregelmäßig. An manchen Tagen benötigt es mehrere Versuche bis zur Anmeldung.</p>",
"Priority": 3, "Priority": 3,
@@ -98,7 +95,6 @@
"AffectedUser": "Ticket, Timo", "AffectedUser": "Ticket, Timo",
"Asset": "C4-NB00015", "Asset": "C4-NB00015",
"Category": "Demo / Service", "Category": "Demo / Service",
"Classification": "Incident",
"Description": "Das Ticketsystem reagiert auffallend träge. Ansichten benötigen bis zu 30 Sekunden zum Laden.", "Description": "Das Ticketsystem reagiert auffallend träge. Ansichten benötigen bis zu 30 Sekunden zum Laden.",
"DescriptionHtml": "<p>Das Ticketsystem reagiert auffallend träge. Ansichten benötigen bis zu 30 Sekunden zum Laden.</p>", "DescriptionHtml": "<p>Das Ticketsystem reagiert auffallend träge. Ansichten benötigen bis zu 30 Sekunden zum Laden.</p>",
"Priority": 1, "Priority": 1,
@@ -129,7 +125,6 @@
"AffectedUser": "Ticket, Timo", "AffectedUser": "Ticket, Timo",
"Asset": "C4-NB00015", "Asset": "C4-NB00015",
"Category": "Demo / Account", "Category": "Demo / Account",
"Classification": "Request",
"Description": "Der Benutzer hat sein Passwort vergessen und benötigt einen Reset sowie die Aktualisierung am Diensthandy (Outlook/Teams).", "Description": "Der Benutzer hat sein Passwort vergessen und benötigt einen Reset sowie die Aktualisierung am Diensthandy (Outlook/Teams).",
"DescriptionHtml": "<p>Der Benutzer hat sein Passwort vergessen und benötigt einen Reset sowie die Aktualisierung am Diensthandy (Outlook/Teams).</p>", "DescriptionHtml": "<p>Der Benutzer hat sein Passwort vergessen und benötigt einen Reset sowie die Aktualisierung am Diensthandy (Outlook/Teams).</p>",
"Priority": 3, "Priority": 3,
@@ -157,7 +152,6 @@
"AffectedUser": "Ticket, Timo", "AffectedUser": "Ticket, Timo",
"Asset": "PRN-3OG-HP-LJ", "Asset": "PRN-3OG-HP-LJ",
"Category": "Demo / Drucker", "Category": "Demo / Drucker",
"Classification": "Incident",
"Description": "Beim Druck auf den HP-LaserJet im 3. OG kommen nur leere Seiten heraus. Testseite aus Windows zeigt dasselbe Verhalten.", "Description": "Beim Druck auf den HP-LaserJet im 3. OG kommen nur leere Seiten heraus. Testseite aus Windows zeigt dasselbe Verhalten.",
"DescriptionHtml": "<p>Beim Druck auf den HP-LaserJet im 3. OG kommen nur leere Seiten heraus. Testseite aus Windows zeigt dasselbe Verhalten.</p>", "DescriptionHtml": "<p>Beim Druck auf den HP-LaserJet im 3. OG kommen nur leere Seiten heraus. Testseite aus Windows zeigt dasselbe Verhalten.</p>",
"Priority": 2, "Priority": 2,
@@ -185,7 +179,6 @@
"AffectedUser": "Ticket, Timo", "AffectedUser": "Ticket, Timo",
"Asset": "C4-NB00015", "Asset": "C4-NB00015",
"Category": "Demo / Mail", "Category": "Demo / Mail",
"Classification": "Incident",
"Description": "Der Benutzer kann keine E-Mails mehr senden oder empfangen. Outlook meldet, dass das Postfachkontingent überschritten ist.", "Description": "Der Benutzer kann keine E-Mails mehr senden oder empfangen. Outlook meldet, dass das Postfachkontingent überschritten ist.",
"DescriptionHtml": "<p>Der Benutzer kann keine E-Mails mehr senden oder empfangen. Outlook meldet, dass das Postfachkontingent überschritten ist.</p>", "DescriptionHtml": "<p>Der Benutzer kann keine E-Mails mehr senden oder empfangen. Outlook meldet, dass das Postfachkontingent überschritten ist.</p>",
"Priority": 2, "Priority": 2,
@@ -213,7 +206,6 @@
"AffectedUser": "Ticket, Timo", "AffectedUser": "Ticket, Timo",
"Asset": "C4-NB00016", "Asset": "C4-NB00016",
"Category": "Demo / Software", "Category": "Demo / Software",
"Classification": "Request",
"Description": "Benötigt Visio Standard für Prozessdiagramme. Bitte Installation via Softwareverteilung und Lizenzzuweisung im M365 Admin Center.", "Description": "Benötigt Visio Standard für Prozessdiagramme. Bitte Installation via Softwareverteilung und Lizenzzuweisung im M365 Admin Center.",
"DescriptionHtml": "<p>Benötigt Visio Standard für Prozessdiagramme. Bitte Installation via Softwareverteilung und Lizenzzuweisung im M365 Admin Center.</p>", "DescriptionHtml": "<p>Benötigt Visio Standard für Prozessdiagramme. Bitte Installation via Softwareverteilung und Lizenzzuweisung im M365 Admin Center.</p>",
"Priority": 3, "Priority": 3,
@@ -241,7 +233,6 @@
"AffectedUser": "Ticket, Timo", "AffectedUser": "Ticket, Timo",
"Asset": "C4-NB00016", "Asset": "C4-NB00016",
"Category": "Demo / Account", "Category": "Demo / Account",
"Classification": "Incident",
"Description": "Nach mehreren falschen Passworteingaben ist das AD-Konto gesperrt. Benutzer kann sich weder am Notebook noch an M365 anmelden.", "Description": "Nach mehreren falschen Passworteingaben ist das AD-Konto gesperrt. Benutzer kann sich weder am Notebook noch an M365 anmelden.",
"DescriptionHtml": "<p>Nach mehreren falschen Passworteingaben ist das AD-Konto gesperrt. Benutzer kann sich weder am Notebook noch an M365 anmelden.</p>", "DescriptionHtml": "<p>Nach mehreren falschen Passworteingaben ist das AD-Konto gesperrt. Benutzer kann sich weder am Notebook noch an M365 anmelden.</p>",
"Priority": 1, "Priority": 1,

View File

@@ -45,12 +45,11 @@ namespace FasdCockpitCommunicationDemo
public DateTime? ClosingDate { get; set; } public DateTime? ClosingDate { get; set; }
public enumTicketCreationSource CreationSource { get; set; } public enumTicketCreationSource CreationSource { get; set; }
public string Description { get; set; } public string Description { get; set; }
public string DescriptionHtml { get; set; } public string DescriptionHtml { get; set; }
public int Priority { get; set; } public int Priority { get; set; }
public string Classification { get; set; } //todo: replace with enum public string Category { get; set; } //todo: replace with tree structure
public string Category { get; set; } //todo: replace with tree structure public string Solution { get; set; }
public string Solution { get; set; }
public string SolutionHtml { get; set; } public string SolutionHtml { get; set; }
public Dictionary<string, string> DirectLinks { get; set; } public Dictionary<string, string> DirectLinks { get; set; }

View File

@@ -21,7 +21,6 @@ namespace FasdCockpitCommunicationDemo
public string AffectedUser { get; set; } public string AffectedUser { get; set; }
public string Asset { get; set; } public string Asset { get; set; }
public string Category { get; set; } public string Category { get; set; }
public string Classification { get; set; }
public string Description { get; set; } public string Description { get; set; }
public string DescriptionHtml { get; set; } public string DescriptionHtml { get; set; }
public int? Priority { get; set; } public int? Priority { get; set; }
@@ -149,7 +148,6 @@ namespace FasdCockpitCommunicationDemo
AffectedUser = source.AffectedUser, AffectedUser = source.AffectedUser,
Asset = source.Asset, Asset = source.Asset,
Category = source.Category, Category = source.Category,
Classification = source.Classification,
Description = source.Description, Description = source.Description,
DescriptionHtml = source.DescriptionHtml, DescriptionHtml = source.DescriptionHtml,
Priority = source.Priority, Priority = source.Priority,

View File

@@ -584,15 +584,14 @@ namespace FasdDesktopUi.Basics.Services
if (source == null) if (source == null)
return new DemoTicketDetail(); return new DemoTicketDetail();
return new DemoTicketDetail return new DemoTicketDetail
{ {
AffectedUser = source.AffectedUser, AffectedUser = source.AffectedUser,
Asset = source.Asset, Asset = source.Asset,
Category = source.Category, Category = source.Category,
Classification = source.Classification, Description = source.Description,
Description = source.Description, DescriptionHtml = source.DescriptionHtml,
DescriptionHtml = source.DescriptionHtml, Priority = source.Priority,
Priority = source.Priority,
Solution = source.Solution, Solution = source.Solution,
SolutionHtml = source.SolutionHtml, SolutionHtml = source.SolutionHtml,
Journal = source.Journal?.Select(entry => new DemoTicketJournalEntry Journal = source.Journal?.Select(entry => new DemoTicketJournalEntry

View File

@@ -1209,8 +1209,7 @@ namespace FasdDesktopUi.Basics.UserControls
if (quickCallsTable == null) return; if (quickCallsTable == null) return;
if (!quickCallsTable.Columns.TryGetValue("Name", out var namesColumn) || if (!quickCallsTable.Columns.TryGetValue("Name", out var namesColumn) ||
!quickCallsTable.Columns.TryGetValue("id", out var idsColumn) || !quickCallsTable.Columns.TryGetValue("id", out var idsColumn))
!quickCallsTable.Columns.TryGetValue("Classification", out var classificationColumn))
{ {
return; return;
} }
@@ -1222,17 +1221,10 @@ namespace FasdDesktopUi.Basics.UserControls
var id = idsColumn.Values[i].ToString(); var id = idsColumn.Values[i].ToString();
var name = namesColumn.Values[i].ToString(); var name = namesColumn.Values[i].ToString();
Guid? classification = null;
var classificationValue = classificationColumn.Values[i]?.ToString();
if (Guid.TryParse(classificationValue, out var parsedClassification))
classification = parsedClassification;
quickCallListe.Add(new QuickCallEntry quickCallListe.Add(new QuickCallEntry
{ {
ID = id, ID = id,
DisplayName = name, DisplayName = name
Classification = classification
}); });
} }
@@ -1252,7 +1244,6 @@ namespace FasdDesktopUi.Basics.UserControls
{ {
public string ID { get; set; } public string ID { get; set; }
public string DisplayName { get; set; } public string DisplayName { get; set; }
public Guid? Classification { get; set; }
public override string ToString() public override string ToString()
{ {
return DisplayName.ToString(); return DisplayName.ToString();
@@ -1622,17 +1613,11 @@ namespace FasdDesktopUi.Basics.UserControls
["Priority"] = 2, ["Priority"] = 2,
}; };
Guid quickcallId = Guid.Empty; Guid quickcallId = Guid.Empty;
Guid? quickCallClassificationId = null;
if (QuickTicketSelection.SelectedItem is QuickCallEntry selectedQuickTicketItem) if (QuickTicketSelection.SelectedItem is QuickCallEntry selectedQuickTicketItem)
{ {
//ticketValues.Add("Category", selectedQuickTicketItem.DisplayName); //ticketValues.Add("Category", selectedQuickTicketItem.DisplayName);
ticketValues.Add("QuickCallId", selectedQuickTicketItem.ID); ticketValues.Add("QuickCallId", selectedQuickTicketItem.ID);
Guid.TryParse(selectedQuickTicketItem.ID?.ToString(), out quickcallId); Guid.TryParse(selectedQuickTicketItem.ID?.ToString(), out quickcallId);
if (selectedQuickTicketItem.Classification.HasValue)
{
quickCallClassificationId = selectedQuickTicketItem.Classification;
ticketValues["Classification"] = quickCallClassificationId.Value;
}
} }
var selectedCategoryId = GetSelectedCategoryGuid(); var selectedCategoryId = GetSelectedCategoryGuid();
if (selectedCategoryId.HasValue) if (selectedCategoryId.HasValue)
@@ -1901,7 +1886,6 @@ namespace FasdDesktopUi.Basics.UserControls
Summary = TicketSummaryTextBox.Text, Summary = TicketSummaryTextBox.Text,
DescriptionHtml = htmlCaseNotes.ToString(), DescriptionHtml = htmlCaseNotes.ToString(),
Quickcall = quickcallId, Quickcall = quickcallId,
Classification = quickCallClassificationId,
CopyTemplates = string.IsNullOrWhiteSpace(copyStringHtml) ? copyString : copyStringHtml, CopyTemplates = string.IsNullOrWhiteSpace(copyStringHtml) ? copyString : copyStringHtml,
SolutionHtml = solutionHtmlString, SolutionHtml = solutionHtmlString,
ErrorType = errorType, ErrorType = errorType,

View File

@@ -169,8 +169,28 @@
<StackPanel x:Name="TicketSelectionContainer" /> <StackPanel x:Name="TicketSelectionContainer" />
</Border> </Border>
</Popup> </Popup>
</StackPanel> </StackPanel>
<StackPanel x:Name="MainStack"> <StackPanel x:Name="MainStack">
<StackPanel>
<TextBlock Text="{Binding Converter={StaticResource LanguageConverter}, ConverterParameter=Dialog.CloseCase.Template}"
Style="{StaticResource MandatoryFieldLabelStyle}" />
<Border x:Name="QuickTicketValidationBorder"
Style="{StaticResource MandatoryFieldBorderStyle}">
<ComboBox x:Name="QuickTicketSelection"
Background="{Binding Background, RelativeSource={RelativeSource AncestorType=Border}}"
BorderBrush="Transparent"
BorderThickness="0"
SelectedIndex="0"
SelectionChanged="QuickTicketSelection_SelectionChanged"
PreviewKeyDown="Combobox_PreviewKeyDown"
DropDownOpened="DropDownOpened"
DropDownClosed="DropDownClosed"
AutomationProperties.IsRequiredForForm="True"
AutomationProperties.HelpText="{Binding Converter={StaticResource LanguageConverter}, ConverterParameter=Dialog.CloseCase.ValidationErrorQuickCallEmpty}">
</ComboBox>
</Border>
</StackPanel>
<StackPanel x:Name="CategoryLabelPanel"> <StackPanel x:Name="CategoryLabelPanel">
<TextBlock Text="{Binding Converter={StaticResource LanguageConverter}, ConverterParameter=Dialog.CloseCase.Category}" <TextBlock Text="{Binding Converter={StaticResource LanguageConverter}, ConverterParameter=Dialog.CloseCase.Category}"
Style="{StaticResource MandatoryFieldLabelStyle}" /> Style="{StaticResource MandatoryFieldLabelStyle}" />
@@ -189,26 +209,6 @@
AutomationProperties.IsRequiredForForm="True" AutomationProperties.IsRequiredForForm="True"
AutomationProperties.HelpText="{Binding Converter={StaticResource LanguageConverter}, ConverterParameter=Dialog.CloseCase.ValidationErrorCategoryEmpty}" /> AutomationProperties.HelpText="{Binding Converter={StaticResource LanguageConverter}, ConverterParameter=Dialog.CloseCase.ValidationErrorCategoryEmpty}" />
</Border> </Border>
<StackPanel>
<TextBlock Text="{Binding Converter={StaticResource LanguageConverter}, ConverterParameter=Dialog.CloseCase.Template}"
Style="{StaticResource MandatoryFieldLabelStyle}" />
<Border x:Name="QuickTicketValidationBorder"
Style="{StaticResource MandatoryFieldBorderStyle}">
<ComboBox x:Name="QuickTicketSelection"
Background="{Binding Background, RelativeSource={RelativeSource AncestorType=Border}}"
BorderBrush="Transparent"
BorderThickness="0"
SelectedIndex="0"
SelectionChanged="QuickTicketSelection_SelectionChanged"
PreviewKeyDown="Combobox_PreviewKeyDown"
DropDownOpened="DropDownOpened"
DropDownClosed="DropDownClosed"
AutomationProperties.IsRequiredForForm="True"
AutomationProperties.HelpText="{Binding Converter={StaticResource LanguageConverter}, ConverterParameter=Dialog.CloseCase.ValidationErrorQuickCallEmpty}">
</ComboBox>
</Border>
</StackPanel>
<StackPanel Orientation="Horizontal"> <StackPanel Orientation="Horizontal">
<TextBlock x:Name="SetOrUpdateComputerInTicketLabel" <TextBlock x:Name="SetOrUpdateComputerInTicketLabel"
Text="{Binding Converter={StaticResource LanguageConverter}, ConverterParameter=Dialog.CloseCase.SetAffectedAssetLabel}" Text="{Binding Converter={StaticResource LanguageConverter}, ConverterParameter=Dialog.CloseCase.SetAffectedAssetLabel}"

View File

@@ -1282,12 +1282,13 @@ namespace FasdDesktopUi.Basics.UserControls
if (quickCallsTable == null) return; if (quickCallsTable == null) return;
if (!quickCallsTable.Columns.TryGetValue("Name", out var namesColumn) || if (!quickCallsTable.Columns.TryGetValue("Name", out var namesColumn) ||
!quickCallsTable.Columns.TryGetValue("id", out var idsColumn) || !quickCallsTable.Columns.TryGetValue("id", out var idsColumn))
!quickCallsTable.Columns.TryGetValue("Classification", out var classificationColumn))
{ {
return; return;
} }
quickCallsTable.Columns.TryGetValue("Category", out var categoryColumn);
var quickCallListe = new List<QuickCallEntry>(); var quickCallListe = new List<QuickCallEntry>();
for (int i = 0; i < idsColumn.Values.Count; i++) for (int i = 0; i < idsColumn.Values.Count; i++)
@@ -1295,17 +1296,19 @@ namespace FasdDesktopUi.Basics.UserControls
var id = idsColumn.Values[i].ToString(); var id = idsColumn.Values[i].ToString();
var name = namesColumn.Values[i].ToString(); var name = namesColumn.Values[i].ToString();
Guid? classification = null; Guid? categoryId = null;
var classificationValue = classificationColumn.Values[i]?.ToString(); if (categoryColumn?.Values != null && i < categoryColumn.Values.Count)
if (Guid.TryParse(classificationValue, out var parsedClassification)) {
classification = parsedClassification; var categoryValue = categoryColumn.Values[i]?.ToString();
if (Guid.TryParse(categoryValue, out var parsedCategory))
categoryId = parsedCategory;
}
quickCallListe.Add(new QuickCallEntry quickCallListe.Add(new QuickCallEntry
{ {
ID = id, ID = id,
DisplayName = name, DisplayName = name,
Classification = classification CategoryId = categoryId
}); });
} }
@@ -1314,6 +1317,7 @@ namespace FasdDesktopUi.Basics.UserControls
QuickTicketSelection.SelectedItem = quickCallListe QuickTicketSelection.SelectedItem = quickCallListe
.FirstOrDefault(x => x.ID == "7bbe64e2-94d0-ee11-4285-00155d010a04"); .FirstOrDefault(x => x.ID == "7bbe64e2-94d0-ee11-4285-00155d010a04");
ValidateProperty(ValidationPropertyNames.QuickTicketSelection); ValidateProperty(ValidationPropertyNames.QuickTicketSelection);
ApplyQuickCallCategorySelection();
} }
catch (Exception e) catch (Exception e)
{ {
@@ -1325,13 +1329,47 @@ namespace FasdDesktopUi.Basics.UserControls
{ {
public string ID { get; set; } public string ID { get; set; }
public string DisplayName { get; set; } public string DisplayName { get; set; }
public Guid? Classification { get; set; } public Guid? CategoryId { get; set; }
public override string ToString() public override string ToString()
{ {
return DisplayName.ToString(); return DisplayName.ToString();
} }
} }
private void ApplyQuickCallCategorySelection()
{
try
{
if (!NewTicketPillSelected)
return;
if (!(QuickTicketSelection?.SelectedItem is QuickCallEntry quickCall))
return;
if (!quickCall.CategoryId.HasValue || quickCall.CategoryId.Value == Guid.Empty)
return;
var targetTicket = SelectedTicket ?? _selectTicketRelation;
if (targetTicket.Infos == null)
targetTicket.Infos = new Dictionary<string, string>(StringComparer.OrdinalIgnoreCase);
targetTicket.Infos[TicketInfoKeys.Category] = quickCall.CategoryId.Value.ToString();
if (ReferenceEquals(targetTicket, SelectedTicket))
{
TrySelectTicketCategoryFromTicketInfos();
}
else if (SelectedTicket == null && ReferenceEquals(targetTicket, _selectTicketRelation))
{
SelectedTicket = targetTicket;
}
}
catch (Exception ex)
{
LogException(ex);
}
}
private void UpdateTicketSelection() private void UpdateTicketSelection()
{ {
@@ -1467,6 +1505,7 @@ namespace FasdDesktopUi.Basics.UserControls
if (selectionPill.IsSelected) if (selectionPill.IsSelected)
{ {
SelectedTicket = _selectTicketRelation; SelectedTicket = _selectTicketRelation;
ApplyQuickCallCategorySelection();
} }
ValidateProperty(ValidationPropertyNames.SelectedTicket); ValidateProperty(ValidationPropertyNames.SelectedTicket);
ValidateProperty(ValidationPropertyNames.TicketSummaryTextBox); ValidateProperty(ValidationPropertyNames.TicketSummaryTextBox);
@@ -1695,17 +1734,11 @@ namespace FasdDesktopUi.Basics.UserControls
["Priority"] = 2, ["Priority"] = 2,
}; };
Guid quickcallId = Guid.Empty; Guid quickcallId = Guid.Empty;
Guid? quickCallClassificationId = null;
if (QuickTicketSelection.SelectedItem is QuickCallEntry selectedQuickTicketItem) if (QuickTicketSelection.SelectedItem is QuickCallEntry selectedQuickTicketItem)
{ {
//ticketValues.Add("Category", selectedQuickTicketItem.DisplayName); //ticketValues.Add("Category", selectedQuickTicketItem.DisplayName);
ticketValues.Add("QuickCallId", selectedQuickTicketItem.ID); ticketValues.Add("QuickCallId", selectedQuickTicketItem.ID);
Guid.TryParse(selectedQuickTicketItem.ID?.ToString(), out quickcallId); Guid.TryParse(selectedQuickTicketItem.ID?.ToString(), out quickcallId);
if (selectedQuickTicketItem.Classification.HasValue)
{
quickCallClassificationId = selectedQuickTicketItem.Classification;
ticketValues["Classification"] = quickCallClassificationId.Value;
}
} }
var selectedCategoryId = GetSelectedCategoryGuid(); var selectedCategoryId = GetSelectedCategoryGuid();
if (selectedCategoryId.HasValue) if (selectedCategoryId.HasValue)
@@ -1974,7 +2007,6 @@ namespace FasdDesktopUi.Basics.UserControls
Summary = TicketSummaryTextBox.Text, Summary = TicketSummaryTextBox.Text,
DescriptionHtml = htmlCaseNotes.ToString(), DescriptionHtml = htmlCaseNotes.ToString(),
Quickcall = quickcallId, Quickcall = quickcallId,
Classification = quickCallClassificationId,
CopyTemplates = string.IsNullOrWhiteSpace(copyStringHtml) ? copyString : copyStringHtml, CopyTemplates = string.IsNullOrWhiteSpace(copyStringHtml) ? copyString : copyStringHtml,
SolutionHtml = solutionHtmlString, SolutionHtml = solutionHtmlString,
ErrorType = errorType, ErrorType = errorType,
@@ -2727,6 +2759,7 @@ namespace FasdDesktopUi.Basics.UserControls
private void QuickTicketSelection_SelectionChanged(object sender, SelectionChangedEventArgs e) private void QuickTicketSelection_SelectionChanged(object sender, SelectionChangedEventArgs e)
{ {
ValidateProperty(ValidationPropertyNames.QuickTicketSelection); ValidateProperty(ValidationPropertyNames.QuickTicketSelection);
ApplyQuickCallCategorySelection();
} }
private void TransferCaseNotesCheck_Unchecked(object sender, RoutedEventArgs e) private void TransferCaseNotesCheck_Unchecked(object sender, RoutedEventArgs e)

View File

@@ -13,9 +13,9 @@ using static C4IT.Logging.cLogManager;
namespace FasdDesktopUi.Pages.TicketCompletion namespace FasdDesktopUi.Pages.TicketCompletion
{ {
public partial class TicketCompletion : Window, IBlurInvoker, INotifyPropertyChanged public partial class TicketCompletion : Window, IBlurInvoker, INotifyPropertyChanged
{ {
private bool isCanceled = false; private bool isCanceled = false;
private bool _WaitForClosing = false; private bool _WaitForClosing = false;
public bool WaitForClosing public bool WaitForClosing
@@ -101,20 +101,32 @@ namespace FasdDesktopUi.Pages.TicketCompletion
return null; return null;
} }
#region Close_Click #region Close_Click
private void Close_Click()
{
isCanceled = true;
TrySetDialogResult(null);
Close();
}
private void Close_Click() private void CloseButton_Click(object sender, InputEventArgs e) => Close_Click();
{
DialogResult = null; #endregion
isCanceled = true;
Close(); private void TrySetDialogResult(bool? result)
} {
try
private void CloseButton_Click(object sender, InputEventArgs e) => Close_Click(); {
DialogResult = result;
#endregion }
catch (InvalidOperationException)
#region Internal Focus Events {
// Window was not shown as dialog; ignore.
}
}
#region Internal Focus Events
private void ElementGotFocus(object sender, EventArgs e) private void ElementGotFocus(object sender, EventArgs e)
{ {
@@ -200,15 +212,15 @@ namespace FasdDesktopUi.Pages.TicketCompletion
bool closedSuccessfull = await CloseCaseDialogUc.CloseCaseAsync(_dataProvider.Identities.FirstOrDefault(identity => identity.Class == enumFasdInformationClass.User).Id); bool closedSuccessfull = await CloseCaseDialogUc.CloseCaseAsync(_dataProvider.Identities.FirstOrDefault(identity => identity.Class == enumFasdInformationClass.User).Id);
if (closedSuccessfull) if (closedSuccessfull)
{ {
SuccessPage.SuccessPage successPage = new SuccessPage.SuccessPage(); SuccessPage.SuccessPage successPage = new SuccessPage.SuccessPage();
successPage.Show(); successPage.Show();
await _dataProvider?.CloseCaseAsync(); await _dataProvider?.CloseCaseAsync();
DialogResult = true; TrySetDialogResult(true);
Close(); Close();
} }
} }
catch (Exception E) catch (Exception E)
{ {
LogException(E); LogException(E);