using System; using System.Collections.Generic; using System.Linq; using System.Runtime.Serialization; namespace BizTalkApplicationCatalog.Models { /// /// Arbeitsmodell eines lokalen, ausschließlich lesenden Inventarlaufs. /// internal sealed class InventoryDocument { public InventoryDocument() { Applications = new List(); Endpoints = new List(); Findings = new List(); SectionStatuses = new List(); } public string EnvironmentName { get; set; } public string ComputerName { get; set; } public DateTime StartedUtc { get; set; } public DateTime CompletedUtc { get; set; } public List Applications { get; private set; } public List Endpoints { get; private set; } public List Findings { get; private set; } public List SectionStatuses { get; private set; } public bool HasRequiredFailure { get { return SectionStatuses.Any(item => item.Required && item.Status != "Erfolgreich") || Findings.Any(item => item.Severity == "Fehler"); } } } internal sealed class ApplicationRecord { public string Name { get; set; } } internal sealed class EndpointRecord { public string ApplicationName { get; set; } public string AdapterType { get; set; } } internal sealed class Finding { public string Severity { get; set; } public string Area { get; set; } public string Message { get; set; } public string RecommendedAction { get; set; } } internal sealed class SectionStatus { public string Name { get; set; } public string Status { get; set; } public string Message { get; set; } public bool Required { get; set; } public long DurationMilliseconds { get; set; } } /// /// Kleines, transportierbares JSON-Modell für den ACC/PRD-Abgleich. /// [DataContract] internal sealed class CatalogSnapshot { public CatalogSnapshot() { SchemaVersion = 1; Applications = new List(); } [DataMember(Order = 1)] public int SchemaVersion { get; set; } [DataMember(Order = 2)] public string EnvironmentName { get; set; } [DataMember(Order = 3)] public string ComputerName { get; set; } [DataMember(Order = 4)] public string CreatedUtc { get; set; } [DataMember(Order = 5)] public bool IsComplete { get; set; } [DataMember(Order = 6)] public List Applications { get; set; } } [DataContract] internal sealed class CatalogApplication { public CatalogApplication() { AdapterCounts = new List(); } [DataMember(Order = 1)] public string Name { get; set; } [DataMember(Order = 2)] public int EndpointCount { get; set; } [DataMember(Order = 3)] public List AdapterCounts { get; set; } } [DataContract] internal sealed class AdapterCount { [DataMember(Order = 1)] public string AdapterType { get; set; } [DataMember(Order = 2)] public int Count { get; set; } } }