using System; using System.Collections.Generic; using C4IT.FASD.Cockpit.Communication; using Newtonsoft.Json; namespace FasdCockpitCommunication.TicketOverview { internal sealed class TicketOverviewCountsResponse { [JsonProperty("counts")] public Dictionary Counts { get; set; } = new Dictionary(StringComparer.OrdinalIgnoreCase); [JsonProperty("capabilities")] public TicketOverviewCapabilitiesResponse Capabilities { get; set; } = new TicketOverviewCapabilitiesResponse(); public cF4sdTicketOverviewCountsResult ToResult(IEnumerable expectedKeys) { var comparer = StringComparer.OrdinalIgnoreCase; var output = new Dictionary(comparer); if (expectedKeys != null) { foreach (var key in expectedKeys) { if (string.IsNullOrWhiteSpace(key)) continue; if (Counts != null && Counts.TryGetValue(key, out var count)) output[key] = count; else output[key] = 0; } return CreateResult(output); } if (Counts != null) { foreach (var kvp in Counts) { if (string.IsNullOrWhiteSpace(kvp.Key)) continue; output[kvp.Key] = kvp.Value; } } return CreateResult(output); } private cF4sdTicketOverviewCountsResult CreateResult(Dictionary counts) { return new cF4sdTicketOverviewCountsResult { Counts = counts, Capabilities = new cF4sdTicketOverviewCapabilities { TicketAndServiceRequestsEnabled = Capabilities?.TicketAndServiceRequestsEnabled ?? true } }; } } internal sealed class TicketOverviewCapabilitiesResponse { [JsonProperty("ticketAndServiceRequestsEnabled")] public bool TicketAndServiceRequestsEnabled { get; set; } = true; } }