From af679472db22313b6e94e77e2625bda2ad65d090 Mon Sep 17 00:00:00 2001 From: Meik Date: Mon, 20 Jul 2026 09:34:40 +0200 Subject: [PATCH] Separate ticket overview capabilities from counts --- F4SDM42WebApi/F4SDHelperService.UserId.cs | 2 +- F4SDM42WebApi/F4SDHelperService.cs | 43 +++++++++++++------ Legacy/F4SDM42WebApi/F4SDHelperService.cs | 31 ++++++++++--- ...4IT-F4SD-M42WebApi.postman_collection.json | 2 +- 4 files changed, 56 insertions(+), 22 deletions(-) diff --git a/F4SDM42WebApi/F4SDHelperService.UserId.cs b/F4SDM42WebApi/F4SDHelperService.UserId.cs index 6e50578..9fbd131 100644 --- a/F4SDM42WebApi/F4SDHelperService.UserId.cs +++ b/F4SDM42WebApi/F4SDHelperService.UserId.cs @@ -120,7 +120,7 @@ namespace C4IT.F4SD counts[key] = CountTicketOverviewEntries(source, key); } - return new TicketOverviewCountsResult { Counts = counts }; + return CreateTicketOverviewCountsResult(counts); } catch (Exception exception) { diff --git a/F4SDM42WebApi/F4SDHelperService.cs b/F4SDM42WebApi/F4SDHelperService.cs index 70d0e8d..aad51af 100644 --- a/F4SDM42WebApi/F4SDHelperService.cs +++ b/F4SDM42WebApi/F4SDHelperService.cs @@ -314,15 +314,23 @@ namespace C4IT.F4SD "ServiceRequestsCritical", "ServiceRequestsNewInfo", "UnassignedTickets", - "UnassignedTicketsCritical", - "TicketAndServiceRequestsEnabled" - }; - - public class TicketOverviewCountsResult - { - [JsonProperty("counts")] - public Dictionary Counts { get; set; } = new Dictionary(StringComparer.OrdinalIgnoreCase); - } + "UnassignedTicketsCritical" + }; + + public class TicketOverviewCapabilities + { + [JsonProperty("ticketAndServiceRequestsEnabled")] + public bool TicketAndServiceRequestsEnabled { get; set; } = true; + } + + public class TicketOverviewCountsResult + { + [JsonProperty("counts")] + public Dictionary Counts { get; set; } = new Dictionary(StringComparer.OrdinalIgnoreCase); + + [JsonProperty("capabilities")] + public TicketOverviewCapabilities Capabilities { get; set; } = new TicketOverviewCapabilities(); + } public class TicketOverviewCountsByRoleResult { @@ -409,7 +417,7 @@ namespace C4IT.F4SD } } - return new TicketOverviewCountsResult { Counts = counts }; + return CreateTicketOverviewCountsResult(counts); } catch (Exception E) { @@ -985,12 +993,21 @@ namespace C4IT.F4SD private static int CountTicketOverviewEntries(IEnumerable entries, string key) { - if (string.Equals(key?.Trim(), "TicketAndServiceRequestsEnabled", StringComparison.OrdinalIgnoreCase)) - return ticketAndServiceRequestEnabled() ? 1 : 0; - return (entries ?? Enumerable.Empty()) .Count(entry => MatchesTicketOverviewKey(entry, key)); } + + private static TicketOverviewCountsResult CreateTicketOverviewCountsResult(Dictionary counts) + { + return new TicketOverviewCountsResult + { + Counts = counts ?? new Dictionary(StringComparer.OrdinalIgnoreCase), + Capabilities = new TicketOverviewCapabilities + { + TicketAndServiceRequestsEnabled = ticketAndServiceRequestEnabled() + } + }; + } private static bool GetBoolValue(object value) { diff --git a/Legacy/F4SDM42WebApi/F4SDHelperService.cs b/Legacy/F4SDM42WebApi/F4SDHelperService.cs index 40c66b5..ccabb2d 100644 --- a/Legacy/F4SDM42WebApi/F4SDHelperService.cs +++ b/Legacy/F4SDM42WebApi/F4SDHelperService.cs @@ -393,8 +393,7 @@ namespace C4IT.F4SD "ServiceRequestsCritical", "ServiceRequestsNewInfo", "UnassignedTickets", - "UnassignedTicketsCritical", - "TicketAndServiceRequestsEnabled" + "UnassignedTicketsCritical" }; public class cF4SDTicket : cF4SDTicketSummary @@ -453,10 +452,19 @@ namespace C4IT.F4SD } + public class TicketOverviewCapabilities + { + [JsonProperty("ticketAndServiceRequestsEnabled")] + public bool TicketAndServiceRequestsEnabled { get; set; } = true; + } + public class TicketOverviewCountsResult { [JsonProperty("counts")] public Dictionary Counts { get; set; } = new Dictionary(StringComparer.OrdinalIgnoreCase); + + [JsonProperty("capabilities")] + public TicketOverviewCapabilities Capabilities { get; set; } = new TicketOverviewCapabilities(); } public class TicketOverviewCountsByRoleResult @@ -545,7 +553,7 @@ namespace C4IT.F4SD } } - return new TicketOverviewCountsResult { Counts = counts }; + return CreateTicketOverviewCountsResult(counts); } catch (Exception E) { @@ -601,7 +609,7 @@ namespace C4IT.F4SD } } - return new TicketOverviewCountsResult { Counts = counts }; + return CreateTicketOverviewCountsResult(counts); } catch (Exception E) { @@ -1424,13 +1432,22 @@ namespace C4IT.F4SD private static int CountTicketOverviewEntries(IEnumerable entries, string key) { - if (string.Equals(key?.Trim(), "TicketAndServiceRequestsEnabled", StringComparison.OrdinalIgnoreCase)) - return ticketAndServiceRequestEnabled() ? 1 : 0; - return (entries ?? Enumerable.Empty()) .Count(entry => MatchesTicketOverviewKey(entry, key)); } + private static TicketOverviewCountsResult CreateTicketOverviewCountsResult(Dictionary counts) + { + return new TicketOverviewCountsResult + { + Counts = counts ?? new Dictionary(StringComparer.OrdinalIgnoreCase), + Capabilities = new TicketOverviewCapabilities + { + TicketAndServiceRequestsEnabled = ticketAndServiceRequestEnabled() + } + }; + } + private static bool GetBoolValue(object value) { if (value == null || value is DBNull) diff --git a/docs/postman/C4IT-F4SD-M42WebApi.postman_collection.json b/docs/postman/C4IT-F4SD-M42WebApi.postman_collection.json index 09c4e2d..ef929a5 100644 --- a/docs/postman/C4IT-F4SD-M42WebApi.postman_collection.json +++ b/docs/postman/C4IT-F4SD-M42WebApi.postman_collection.json @@ -119,7 +119,7 @@ }, { "key": "overviewKeys", - "value": "TicketsNew,TicketsActive,TicketsCritical,TicketsNewInfo,IncidentNew,IncidentActive,IncidentCritical,IncidentNewInfo,ServiceRequestsNew,ServiceRequestsActive,ServiceRequestsCritical,ServiceRequestsNewInfo,UnassignedTickets,UnassignedTicketsCritical,TicketAndServiceRequestsEnabled" + "value": "TicketsNew,TicketsActive,TicketsCritical,TicketsNewInfo,IncidentNew,IncidentActive,IncidentCritical,IncidentNewInfo,ServiceRequestsNew,ServiceRequestsActive,ServiceRequestsCritical,ServiceRequestsNewInfo,UnassignedTickets,UnassignedTicketsCritical" }, { "key": "queueOption",