aktueller stand

This commit is contained in:
Meik
2026-01-28 12:24:39 +01:00
parent 8b7c4ce480
commit 82984f769b
48 changed files with 1122 additions and 495 deletions

View File

@@ -62,39 +62,45 @@
<ErrorReport>prompt</ErrorReport>
</PropertyGroup>
<ItemGroup>
<Reference Include="C4IT.F4SD.DisplayFormatting, Version=1.0.9509.21303, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\C4IT.F4SD.DisplayFormatting.1.0.0\lib\netstandard2.0\C4IT.F4SD.DisplayFormatting.dll</HintPath>
</Reference>
<Reference Include="C4IT.F4SD.SupportCaseProtocoll, Version=1.0.9516.21165, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\C4IT.F4SD.SupportCaseProtocoll.1.0.0\lib\netstandard2.0\C4IT.F4SD.SupportCaseProtocoll.dll</HintPath>
</Reference>
<Reference Include="MaterialIcons, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\MaterialIcons.1.0.3\lib\MaterialIcons.dll</HintPath>
</Reference>
<Reference Include="Microsoft.Bcl.AsyncInterfaces, Version=9.0.0.7, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.Bcl.AsyncInterfaces.9.0.7\lib\net462\Microsoft.Bcl.AsyncInterfaces.dll</HintPath>
<Reference Include="Microsoft.Bcl.AsyncInterfaces, Version=10.0.0.2, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.Bcl.AsyncInterfaces.10.0.2\lib\net462\Microsoft.Bcl.AsyncInterfaces.dll</HintPath>
</Reference>
<Reference Include="Microsoft.Bcl.TimeProvider, Version=9.0.0.7, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.Bcl.TimeProvider.9.0.7\lib\net462\Microsoft.Bcl.TimeProvider.dll</HintPath>
<Reference Include="Microsoft.Bcl.TimeProvider, Version=10.0.0.2, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.Bcl.TimeProvider.10.0.2\lib\net462\Microsoft.Bcl.TimeProvider.dll</HintPath>
</Reference>
<Reference Include="Microsoft.Extensions.DependencyInjection.Abstractions, Version=9.0.0.7, Culture=neutral, PublicKeyToken=adb9793829ddae60, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.Extensions.DependencyInjection.Abstractions.9.0.7\lib\net462\Microsoft.Extensions.DependencyInjection.Abstractions.dll</HintPath>
<Reference Include="Microsoft.Extensions.DependencyInjection.Abstractions, Version=10.0.0.2, Culture=neutral, PublicKeyToken=adb9793829ddae60, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.Extensions.DependencyInjection.Abstractions.10.0.2\lib\net462\Microsoft.Extensions.DependencyInjection.Abstractions.dll</HintPath>
</Reference>
<Reference Include="Microsoft.Extensions.Logging.Abstractions, Version=9.0.0.7, Culture=neutral, PublicKeyToken=adb9793829ddae60, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.Extensions.Logging.Abstractions.9.0.7\lib\net462\Microsoft.Extensions.Logging.Abstractions.dll</HintPath>
<Reference Include="Microsoft.Extensions.Logging.Abstractions, Version=10.0.0.2, Culture=neutral, PublicKeyToken=adb9793829ddae60, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.Extensions.Logging.Abstractions.10.0.2\lib\net462\Microsoft.Extensions.Logging.Abstractions.dll</HintPath>
</Reference>
<Reference Include="Microsoft.IdentityModel.Abstractions, Version=8.13.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.IdentityModel.Abstractions.8.13.0\lib\net472\Microsoft.IdentityModel.Abstractions.dll</HintPath>
<Reference Include="Microsoft.IdentityModel.Abstractions, Version=8.15.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.IdentityModel.Abstractions.8.15.0\lib\net472\Microsoft.IdentityModel.Abstractions.dll</HintPath>
</Reference>
<Reference Include="Microsoft.IdentityModel.JsonWebTokens, Version=8.13.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.IdentityModel.JsonWebTokens.8.13.0\lib\net472\Microsoft.IdentityModel.JsonWebTokens.dll</HintPath>
<Reference Include="Microsoft.IdentityModel.JsonWebTokens, Version=8.15.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.IdentityModel.JsonWebTokens.8.15.0\lib\net472\Microsoft.IdentityModel.JsonWebTokens.dll</HintPath>
</Reference>
<Reference Include="Microsoft.IdentityModel.Logging, Version=8.13.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.IdentityModel.Logging.8.13.0\lib\net472\Microsoft.IdentityModel.Logging.dll</HintPath>
<Reference Include="Microsoft.IdentityModel.Logging, Version=8.15.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.IdentityModel.Logging.8.15.0\lib\net472\Microsoft.IdentityModel.Logging.dll</HintPath>
</Reference>
<Reference Include="Microsoft.IdentityModel.Tokens, Version=8.13.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.IdentityModel.Tokens.8.13.0\lib\net472\Microsoft.IdentityModel.Tokens.dll</HintPath>
<Reference Include="Microsoft.IdentityModel.Tokens, Version=8.15.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.IdentityModel.Tokens.8.15.0\lib\net472\Microsoft.IdentityModel.Tokens.dll</HintPath>
</Reference>
<Reference Include="Microsoft.Web.Administration, Version=7.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>.\Microsoft.Web.Administration.dll</HintPath>
</Reference>
<Reference Include="Newtonsoft.Json, Version=13.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
<HintPath>..\packages\Newtonsoft.Json.13.0.3\lib\net45\Newtonsoft.Json.dll</HintPath>
<HintPath>..\packages\Newtonsoft.Json.13.0.4\lib\net45\Newtonsoft.Json.dll</HintPath>
</Reference>
<Reference Include="System" />
<Reference Include="System.Buffers, Version=4.0.5.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
@@ -102,18 +108,18 @@
</Reference>
<Reference Include="System.Configuration" />
<Reference Include="System.Core" />
<Reference Include="System.Diagnostics.DiagnosticSource, Version=9.0.0.7, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>..\packages\System.Diagnostics.DiagnosticSource.9.0.7\lib\net462\System.Diagnostics.DiagnosticSource.dll</HintPath>
<Reference Include="System.Diagnostics.DiagnosticSource, Version=10.0.0.2, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>..\packages\System.Diagnostics.DiagnosticSource.10.0.2\lib\net462\System.Diagnostics.DiagnosticSource.dll</HintPath>
</Reference>
<Reference Include="System.DirectoryServices" />
<Reference Include="System.DirectoryServices.AccountManagement" />
<Reference Include="System.DirectoryServices.Protocols" />
<Reference Include="System.Drawing" />
<Reference Include="System.IdentityModel.Tokens.Jwt, Version=8.13.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<HintPath>..\packages\System.IdentityModel.Tokens.Jwt.8.13.0\lib\net472\System.IdentityModel.Tokens.Jwt.dll</HintPath>
<Reference Include="System.IdentityModel.Tokens.Jwt, Version=8.15.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<HintPath>..\packages\System.IdentityModel.Tokens.Jwt.8.15.0\lib\net472\System.IdentityModel.Tokens.Jwt.dll</HintPath>
</Reference>
<Reference Include="System.IO.Pipelines, Version=9.0.0.7, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>..\packages\System.IO.Pipelines.9.0.7\lib\net462\System.IO.Pipelines.dll</HintPath>
<Reference Include="System.IO.Pipelines, Version=10.0.0.2, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>..\packages\System.IO.Pipelines.10.0.2\lib\net462\System.IO.Pipelines.dll</HintPath>
</Reference>
<Reference Include="System.Memory, Version=4.0.5.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>..\packages\System.Memory.4.6.3\lib\net462\System.Memory.dll</HintPath>
@@ -125,11 +131,11 @@
<Reference Include="System.Runtime.CompilerServices.Unsafe, Version=6.0.3.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\System.Runtime.CompilerServices.Unsafe.6.1.2\lib\net462\System.Runtime.CompilerServices.Unsafe.dll</HintPath>
</Reference>
<Reference Include="System.Text.Encodings.Web, Version=9.0.0.7, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>..\packages\System.Text.Encodings.Web.9.0.7\lib\net462\System.Text.Encodings.Web.dll</HintPath>
<Reference Include="System.Text.Encodings.Web, Version=10.0.0.2, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>..\packages\System.Text.Encodings.Web.10.0.2\lib\net462\System.Text.Encodings.Web.dll</HintPath>
</Reference>
<Reference Include="System.Text.Json, Version=9.0.0.7, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>..\packages\System.Text.Json.9.0.7\lib\net462\System.Text.Json.dll</HintPath>
<Reference Include="System.Text.Json, Version=10.0.0.2, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>..\packages\System.Text.Json.10.0.2\lib\net462\System.Text.Json.dll</HintPath>
</Reference>
<Reference Include="System.Threading.Tasks.Extensions, Version=4.2.4.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>..\packages\System.Threading.Tasks.Extensions.4.6.3\lib\net462\System.Threading.Tasks.Extensions.dll</HintPath>
@@ -321,6 +327,7 @@
</ItemGroup>
<ItemGroup>
<None Include="app.config" />
<None Include="packages.config" />
</ItemGroup>
<ItemGroup>
<Content Include="C4IT_2016.ico" />

View File

@@ -8,7 +8,7 @@
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Text.Encodings.Web" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-9.0.0.7" newVersion="9.0.0.7" />
<bindingRedirect oldVersion="0.0.0.0-10.0.0.2" newVersion="10.0.0.2" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.ValueTuple" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
@@ -20,7 +20,7 @@
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="Microsoft.Bcl.AsyncInterfaces" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-9.0.0.7" newVersion="9.0.0.7" />
<bindingRedirect oldVersion="0.0.0.0-10.0.0.1" newVersion="10.0.0.1" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Buffers" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
@@ -32,7 +32,7 @@
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Text.Json" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-9.0.0.7" newVersion="9.0.0.7" />
<bindingRedirect oldVersion="0.0.0.0-10.0.0.2" newVersion="10.0.0.2" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Numerics.Vectors" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
@@ -40,15 +40,15 @@
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="Microsoft.Bcl.TimeProvider" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-9.0.0.7" newVersion="9.0.0.7" />
<bindingRedirect oldVersion="0.0.0.0-10.0.0.2" newVersion="10.0.0.2" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Diagnostics.DiagnosticSource" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-9.0.0.7" newVersion="9.0.0.7" />
<bindingRedirect oldVersion="0.0.0.0-10.0.0.2" newVersion="10.0.0.2" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="Microsoft.Extensions.Logging.Abstractions" publicKeyToken="adb9793829ddae60" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-9.0.0.7" newVersion="9.0.0.7" />
<bindingRedirect oldVersion="0.0.0.0-10.0.0.2" newVersion="10.0.0.2" />
</dependentAssembly>
</assemblyBinding>
</runtime>

View File

@@ -11,7 +11,7 @@
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Text.Encodings.Web" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-9.0.0.7" newVersion="9.0.0.7" />
<bindingRedirect oldVersion="0.0.0.0-10.0.0.2" newVersion="10.0.0.2" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.ValueTuple" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
@@ -23,7 +23,7 @@
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="Microsoft.Bcl.AsyncInterfaces" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-9.0.0.7" newVersion="9.0.0.7" />
<bindingRedirect oldVersion="0.0.0.0-10.0.0.1" newVersion="10.0.0.1" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Buffers" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
@@ -35,7 +35,7 @@
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Text.Json" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-9.0.0.7" newVersion="9.0.0.7" />
<bindingRedirect oldVersion="0.0.0.0-10.0.0.2" newVersion="10.0.0.2" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Numerics.Vectors" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
@@ -43,15 +43,15 @@
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="Microsoft.Bcl.TimeProvider" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-9.0.0.7" newVersion="9.0.0.7" />
<bindingRedirect oldVersion="0.0.0.0-10.0.0.2" newVersion="10.0.0.2" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Diagnostics.DiagnosticSource" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-9.0.0.7" newVersion="9.0.0.7" />
<bindingRedirect oldVersion="0.0.0.0-10.0.0.2" newVersion="10.0.0.2" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="Microsoft.Extensions.Logging.Abstractions" publicKeyToken="adb9793829ddae60" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-9.0.0.7" newVersion="9.0.0.7" />
<bindingRedirect oldVersion="0.0.0.0-10.0.0.2" newVersion="10.0.0.2" />
</dependentAssembly>
</assemblyBinding>
</runtime>

View File

@@ -762,6 +762,16 @@
<Table-Column Name="Description" Type="string" Cardinal="300" />
</Table-Columns>
</Table>
<Table Name="M42Wpm-Ticket-CloseCase-Categories" Type="Selection" Key="id">
<Matrix42-DataQueryItems-Template EntityClassName="SPSScCategoryClassBase" EntityTypeNames="SPSScCategoryType" OrderBy="" WhereExpression="Hidden = 0" />
<Table-Columns>
<Table-Column Name="id" SourceName="Id" Type="guid" />
<Table-Column Name="SysObjectId" SourceName="Sys-ObjectId" Type="guid" />
<Table-Column Name="SysName" SourceName="Sys-Name" Type="string" Cardinal="50" />
<Table-Column Name="Name" Type="string" Cardinal="300" />
<Table-Column Name="parent" SourceName="Parent_Value" Type="guid" />
</Table-Columns>
</Table>
<Table Name="M42Wpm-Ticket-Roles" Type="Selection" Key="id">
<Matrix42-DataQueryItems-Template EntityClassName="SPSScRoleClassBase" EntityTypeNames="SPSSecurityTypeRole" OrderBy="" WhereExpression="T(SPSSecurityClassRole).ShowInForwardAction = 1 AND T(SPSSecurityClassRole).Queue.ID IS NULL" />
<Table-Columns>

View File

@@ -16,7 +16,7 @@
<DisableAutomaticTimeTracking Policy="Mandatory" Value="true" />
<CompletitionPolicy Policy="Mandatory" Value="IfRequired" />
<NotesMandatory Policy="Mandatory" Value="true" />
<ShowOverview Policy="Mandatory" Value="true" />
<ShowOverview Policy="Mandatory" Value="false" />
<OverviewPollingPersonal Policy="Mandatory" Value="10" />
<OverviewPollingRole Policy="Mandatory" Value="5" />
</TicketConfiguration>

View File

@@ -948,7 +948,18 @@
</StateCategory>
<StateCategory Name="BshRegistryKeyExists" IsVisibleByParameter="BshRegistryKeyExists">
<State-Info Name="BshRegistryKeyExists" ValueTable="Computation_EmptyConstant" ValueColumn="default" />
</StateCategory>
<State-Info Name="Printers" ValueTable="agnt-computer-event-string" ValueColumn="BSH_Printers">
<Name Lang="DE">Drucker</Name>
<State-Details-Valued Format="json">
<State-Details-Column Name="Name" Description="Printer name" ValueColumn="Name" Display="STRING">
<Description Lang="DE">Druckername</Description>
</State-Details-Column>
<State-Details-Column Name="Is default" Description="Is selected default printer" ValueColumn="Default" Display="STRING">
<Description Lang="DE">Ist Standarddrucker</Description>
</State-Details-Column>
</State-Details-Valued>
</State-Info>
</StateCategory>
<StateCategory Name="BshRegistryKeyAbsent" IsVisibleByParameter="BshRegistryKeyAbsent">
<State-Info Name="BshRegistryKeyAbsent" ValueTable="Computation_EmptyConstant" ValueColumn="default" />
</StateCategory>
@@ -1051,7 +1062,7 @@
<State-Level Name="RAM/Memory free" Display="BYTES" ValueTable="agnt-computer-event-numerical" ValueColumn="MemoryFree" Warning="2147483648" Error="1073741824" Direction="down">
<Name Lang="DE">RAM/Arbeitsspeicher frei</Name>
</State-Level>
<State-Link Reference="RAM_Relative" Hidden="false" />
<State-Link Reference="RAM_Relative" />
</State-Aggregation>
<State-Aggregation Name="Hard disk storage">
<Name Lang="DE">Festplatten-Speicher</Name>

View File

@@ -102,6 +102,13 @@
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="ValuedFormat">
<xs:restriction base="xs:NCName">
<xs:enumeration value="csv" />
<xs:enumeration value="json" />
</xs:restriction>
</xs:simpleType>
<xs:attributeGroup name="ValuePointer">
<xs:attribute name="Name" type="xs:string" use="optional" />
<xs:attribute name="ParameterName" type="xs:NCName" use="optional" />
@@ -543,7 +550,8 @@
<xs:complexType>
<xs:complexContent>
<xs:extension base="State-Details-Base">
<xs:attribute name="RowSeparator" type="xs:string" use="required"/>
<xs:attribute name="Format" type="ValuedFormat" use="optional"/>
<xs:attribute name="RowSeparator" type="xs:string" use="optional"/>
<xs:attribute name="ColSeparator" type="xs:string" use="optional"/>
<xs:attribute name="StringDecorator" type="Separator" use="optional"/>
</xs:extension>

View File

@@ -76,7 +76,9 @@
</AD-Scans>
</Active-Directory>
<Azure-AD>
<Azure-Tenant Domain="c4it365.onmicrosoft.com" TenantID="8f773186-362b-4432-a3e9-d3ad4685f3f1" Credential="AzureAccess" ScanIntuneDevices = "true" WithMobileDevices="true"/>
<Azure-Tenant Domain="c4it365.onmicrosoft.com" TenantID="8f773186-362b-4432-a3e9-d3ad4685f3f1" Credential="AzureAccess" ScanIntuneDevices = "true" WithMobileDevices="true">
<Azure-Scan-Filter UseConsistencyLevelEventual="true">onPremisesExtensionAttributes/extensionAttribute8 in (&apos;C4IT&apos;, &apos;TS4U&apos;) and userType eq &apos;member&apos; and accountEnabled eq true</Azure-Scan-Filter>
</Azure-Tenant>
<!--<Azure-Tenant Domain="sd0024.onmicrosoft.com" TenantID="07362148-410e-4636-a9cb-795fba1a5452" Credential="AzureAccess_Dieter"/>-->
</Azure-AD>
<Matrix42-WPM Server="srvwsm001.imagoverum.com" Credential="M42API-Demo" ClosedTicketHistory="9999" DisplayName="M42 Demo server (imagoverum)" ApiTokenLifetime ="30 days" ActivityQueueFilter="ticketsAndListedQueues">

View File

@@ -366,7 +366,8 @@
<xs:element name="Azure-Tenant">
<xs:complexType>
<xs:sequence>
</xs:sequence>
<xs:element ref="Azure-Scan-Filter" maxOccurs="1" minOccurs="0"/>
</xs:sequence>
<xs:attribute name="Domain" type="xs:string" use="required"/>
<xs:attribute name="TenantID" type="guid" use="required"/>
<xs:attribute name="Credential" type="xs:NCName" use="required"/>
@@ -379,7 +380,11 @@
</xs:keyref>
</xs:element>
<xs:element name="Citrix">
<xs:element name="Azure-Scan-Filter">
</xs:element>
<xs:element name="Citrix">
<xs:complexType>
<xs:sequence>
<xs:element ref="Scan-Timing" maxOccurs="1" minOccurs="0"/>

View File

@@ -189,6 +189,9 @@
IF NOT EXISTS (SELECT * FROM [main-scans] WHERE [Scan] = &apos;Default&apos;)
INSERT INTO [main-scans] ([Scan], [LastTime]) VALUES (&apos;Default&apos;,&apos;1970-01-01 00:00:00&apos;);
IF NOT EXISTS (SELECT * FROM [main-scans] WHERE [Scan] = &apos;AgentScan-all&apos;)
INSERT INTO [main-scans] ([Scan], [LastTime]) VALUES (&apos;AgentScan-all&apos;,&apos;1971-01-01 00:00:00&apos;);
IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N&apos;[main-scan-history]&apos;) AND type in (N&apos;U&apos;))
BEGIN
PRINT N&apos;start creating table [main-scan-history]...&apos;;
@@ -372,6 +375,9 @@
IF NOT EXISTS (SELECT * FROM [main-scans] WHERE [Scan] = &apos;Default&apos;)
INSERT INTO [main-scans] ([Scan], [LastTime]) VALUES (&apos;Default&apos;,&apos;1970-01-01 00:00:00&apos;);
IF NOT EXISTS (SELECT * FROM [main-scans] WHERE [Scan] = &apos;AgentScan-all&apos;)
INSERT INTO [main-scans] ([Scan], [LastTime]) VALUES (&apos;AgentScan-all&apos;,&apos;1971-01-01 00:00:00&apos;);
IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N&apos;[main-scan-history]&apos;) AND type in (N&apos;U&apos;))
BEGIN
PRINT N&apos;start creating table [main-scan-history]...&apos;;
@@ -2424,48 +2430,56 @@
</Query>
<Query Name="CloseUserSession">
UPDATE [UserSessions]
SET [Finish] = @SessionDate
WHERE SessionId = @SessionId;
IF EXISTS (SELECT TOP 1 * FROM UserSessions WHERE SessionId = @SessionId)
BEGIN
UPDATE [UserSessions]
SET [Finish] = @SessionDate
WHERE SessionId = @SessionId;
END
IF NOT EXISTS (SELECT TOP 1 * FROM UserSessions WHERE SessionId = @SessionId) AND EXISTS (SELECT TOP 1 * FROM dbo.Cases WHERE SessionId = @SessionId)
BEGIN
DECLARE @CurrentTimeStamp DATETIME = GETUTCDATE();
INSERT INTO UserSessions
( UserId, SessionId, [Start], [Finish] )
SELECT TOP 1 UserId,SessionId,[Start],@CurrentTimeStamp FROM Cases
WHERE SessionId = @SessionId ORDER BY [Start] ASC;
END
IF EXISTS (SELECT TOP 1 * FROm dbo.Cases WHERE SessionId = @SessionId)
BEGIN
IF EXISTS (SELECT TOP 1 * FROM dbo.Cases WHERE SessionId = @SessionId)
BEGIN
INSERT INTO [CaseTime]
( CaseId, StatusId, [TimeStamp] )
SELECT CaseId, 4, @SessionDate
FROM dbo.Cases
WHERE SessionId = @SessionId AND Finish IS NULL;
INSERT INTO [CaseTime]
( CaseId, StatusId, [TimeStamp] )
SELECT CaseId, 4, @SessionDate
FROM dbo.Cases
WHERE SessionId = @SessionId AND Finish IS NULL;
UPDATE [Cases]
SET [Finish] = @SessionDate
WHERE SessionId = @SessionId AND Finish IS NULL;
END
UPDATE [Cases]
SET [Finish] = @SessionDate
WHERE SessionId = @SessionId AND Finish IS NULL;
END
</Query>
</Query>
<Query Name="UpdateCases">
DECLARE @CurrentTimeStamp DATETIME = GETUTCDATE();
IF EXISTS (SELECT TOP 1 * FROM dbo.Cases JOIN dbo.CaseTime ON Cases.CaseId = CaseTime.CaseId WHERE Cases.CaseId = @CaseId AND CaseTime.StatusId = 4 )
BEGIN
UPDATE [CaseTime]
SET Statusid = 2
FROM dbo.Cases
JOIN dbo.CaseTime ON Cases.CaseId = CaseTime.CaseId
WHERE Cases.CaseId = @CaseId AND
CaseTime.StatusId = 4
UPDATE [CaseTime]
SET Statusid = 2
FROM dbo.Cases
JOIN dbo.CaseTime ON Cases.CaseId = CaseTime.CaseId
WHERE Cases.CaseId = @CaseId AND
CaseTime.StatusId = 4
INSERT INTO [CaseTime]
( CaseId, StatusId, [TimeStamp] )
SELECT @CaseId, 3, @CurrentTimeStamp;
UPDATE [Cases]
SET [Finish] = NULL
WHERE CaseId = @CaseId;
INSERT INTO [CaseTime]
( CaseId, StatusId, [TimeStamp] )
SELECT @CaseId, 3, @CurrentTimeStamp;
UPDATE [Cases]
SET [Finish] = NULL
WHERE CaseId = @CaseId;
END
</Query>
<Query Name="InsertTicket">

View File

@@ -98,7 +98,7 @@
</PropertyGroup>
<ItemGroup>
<Reference Include="Newtonsoft.Json, Version=13.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
<HintPath>..\packages\Newtonsoft.Json.13.0.3\lib\net45\Newtonsoft.Json.dll</HintPath>
<HintPath>..\packages\Newtonsoft.Json.13.0.4\lib\net45\Newtonsoft.Json.dll</HintPath>
</Reference>
<Reference Include="System" />
<Reference Include="System.Core" />

View File

@@ -1,12 +1,12 @@
<?xml version="1.0" encoding="utf-8"?>
<C4IT-License-Info Product="First Aid Service Desk (F4SD)" Id="776D99A6-D341-4B70-BA4B-2CC55B76A079">
<License Id="FAE53860-0AE2-4A15-A5D5-7E56D4D29FDE" Revision="1.0" Type="PRODUCTIVE" Customer="Consulting4IT" CustomerId="A3A5E66E-6A91-44E2-9F3A-F04C67642BCB" StartDate="2024-12-01" EndDate="2025-12-31" Signature="SeNeSrKAq/rnvCVui7TMBHkTS4AnygizDBNdLe1w7EdMGaQ2xxTvOcsOrshwqznK/shgGvxofdux0YWV3XyxWeeGwfKqjPobWOnKhp5v3xfeVk+59dx29Yn3/4j+vcJrs8kBhOrZEAkeAHojFVZYsO/SbqWoOcqP5fDw673gjW8=">
<License Id="FAE53860-0AE2-4A15-A5D5-7E56D4D29FDE" Revision="1.0" Type="PRODUCTIVE" Customer="Consulting4IT" CustomerId="A3A5E66E-6A91-44E2-9F3A-F04C67642BCB" StartDate="2024-12-01" EndDate="2026-12-31" Signature="A3u3fZ5bU5p3CikLiOyCMdrsJCLtvQkdbUcIhPfo0gZruL4jvy/cXGeqwHgCNK4P+vVJi+7XtxfBvefTFVAs4QT2vSP+m7DPj1CB//zLOEhUHQVqim3KyQiIWtlMi/hruO+XKL6BAOYuNsSOR3eit95e9JPc60qNNL4gArdGe5I=">
<License-Metrics Type="ManagedUsers" Count="10000" />
<Modules>
<Module Name="F4SD client agent connector" Id="F8A3284C-E481-4D08-A921-949D2EBD4E0B" />
<Module Name="MS Active Directory connector" Id="B2D48023-56E8-44D5-AB77-BE1DCF4EA4EB" />
<Module Name="Matrix42 WPM conntector" Id="9CE1A6BE-6A0C-4A27-94A5-44AB997B8E62" />
<Module Name="Nexthink NXQL conntector" Id="51EA7764-3AD3-4F90-89DB-DEB0C60D655C" />
<Module Name="Nexthink NXQL conntector" Id="51EA7764-3AD3-4F90-89DB-DEB0C60D655C" />
</Modules>
</License>
</C4IT-License-Info>

View File

@@ -28,13 +28,59 @@
/// </summary>
private void InitializeComponent()
{
this.ctrlProtocolBox1 = new C4IT_DataHistoryProvider_Test.ctrlProtocolBox();
this.buttonCheckConnection = new System.Windows.Forms.Button();
this.btnGetUsers = new System.Windows.Forms.Button();
this.btnGetSessions = new System.Windows.Forms.Button();
this.btnScanUsers = new System.Windows.Forms.Button();
this.ctrlProtocolBox1 = new C4IT_DataHistoryProvider_Test.ctrlProtocolBox();
this.SuspendLayout();
//
// buttonCheckConnection
//
this.buttonCheckConnection.Location = new System.Drawing.Point(22, 38);
this.buttonCheckConnection.Margin = new System.Windows.Forms.Padding(5, 6, 5, 6);
this.buttonCheckConnection.Name = "buttonCheckConnection";
this.buttonCheckConnection.Size = new System.Drawing.Size(210, 46);
this.buttonCheckConnection.TabIndex = 14;
this.buttonCheckConnection.Text = "Check connection";
this.buttonCheckConnection.UseVisualStyleBackColor = true;
this.buttonCheckConnection.Click += new System.EventHandler(this.buttonCheckConnection_Click);
//
// btnGetUsers
//
this.btnGetUsers.Location = new System.Drawing.Point(462, 38);
this.btnGetUsers.Margin = new System.Windows.Forms.Padding(5, 6, 5, 6);
this.btnGetUsers.Name = "btnGetUsers";
this.btnGetUsers.Size = new System.Drawing.Size(210, 46);
this.btnGetUsers.TabIndex = 15;
this.btnGetUsers.Text = "Get users";
this.btnGetUsers.UseVisualStyleBackColor = true;
this.btnGetUsers.Visible = false;
this.btnGetUsers.Click += new System.EventHandler(this.btnGetUsers_Click);
//
// btnGetSessions
//
this.btnGetSessions.Location = new System.Drawing.Point(682, 38);
this.btnGetSessions.Margin = new System.Windows.Forms.Padding(5, 6, 5, 6);
this.btnGetSessions.Name = "btnGetSessions";
this.btnGetSessions.Size = new System.Drawing.Size(210, 46);
this.btnGetSessions.TabIndex = 16;
this.btnGetSessions.Text = "Get sessions";
this.btnGetSessions.UseVisualStyleBackColor = true;
this.btnGetSessions.Visible = false;
this.btnGetSessions.Click += new System.EventHandler(this.btnGetSessions_Click);
//
// btnScanUsers
//
this.btnScanUsers.Location = new System.Drawing.Point(242, 38);
this.btnScanUsers.Margin = new System.Windows.Forms.Padding(5, 6, 5, 6);
this.btnScanUsers.Name = "btnScanUsers";
this.btnScanUsers.Size = new System.Drawing.Size(210, 46);
this.btnScanUsers.TabIndex = 17;
this.btnScanUsers.Text = "Scan";
this.btnScanUsers.UseVisualStyleBackColor = true;
this.btnScanUsers.Click += new System.EventHandler(this.btnScanUsers_Click);
//
// ctrlProtocolBox1
//
this.ctrlProtocolBox1.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
@@ -46,50 +92,6 @@
this.ctrlProtocolBox1.Size = new System.Drawing.Size(1057, 418);
this.ctrlProtocolBox1.TabIndex = 13;
//
// buttonCheckConnection
//
this.buttonCheckConnection.Location = new System.Drawing.Point(22, 38);
this.buttonCheckConnection.Margin = new System.Windows.Forms.Padding(5, 6, 5, 6);
this.buttonCheckConnection.Name = "buttonCheckConnection";
this.buttonCheckConnection.Size = new System.Drawing.Size(210, 46);
this.buttonCheckConnection.TabIndex = 14;
this.buttonCheckConnection.Text = "Check Citrix connection";
this.buttonCheckConnection.UseVisualStyleBackColor = true;
this.buttonCheckConnection.Click += new System.EventHandler(this.buttonCheckConnection_Click);
//
// btnGetUsers
//
this.btnGetUsers.Location = new System.Drawing.Point(242, 38);
this.btnGetUsers.Margin = new System.Windows.Forms.Padding(5, 6, 5, 6);
this.btnGetUsers.Name = "btnGetUsers";
this.btnGetUsers.Size = new System.Drawing.Size(210, 46);
this.btnGetUsers.TabIndex = 15;
this.btnGetUsers.Text = "Get users";
this.btnGetUsers.UseVisualStyleBackColor = true;
this.btnGetUsers.Click += new System.EventHandler(this.btnGetUsers_Click);
//
// btnGetSessions
//
this.btnGetSessions.Location = new System.Drawing.Point(462, 38);
this.btnGetSessions.Margin = new System.Windows.Forms.Padding(5, 6, 5, 6);
this.btnGetSessions.Name = "btnGetSessions";
this.btnGetSessions.Size = new System.Drawing.Size(210, 46);
this.btnGetSessions.TabIndex = 16;
this.btnGetSessions.Text = "Get sessions";
this.btnGetSessions.UseVisualStyleBackColor = true;
this.btnGetSessions.Click += new System.EventHandler(this.btnGetSessions_Click);
//
// btnScanUsers
//
this.btnScanUsers.Location = new System.Drawing.Point(682, 38);
this.btnScanUsers.Margin = new System.Windows.Forms.Padding(5, 6, 5, 6);
this.btnScanUsers.Name = "btnScanUsers";
this.btnScanUsers.Size = new System.Drawing.Size(210, 46);
this.btnScanUsers.TabIndex = 17;
this.btnScanUsers.Text = "Scan Users";
this.btnScanUsers.UseVisualStyleBackColor = true;
this.btnScanUsers.Click += new System.EventHandler(this.btnScanUsers_Click);
//
// ctrlCitrix
//
this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 16F);

View File

@@ -361,9 +361,6 @@ namespace C4IT_DataHistoryProvider_Test
}
}
}
}
else
@@ -397,6 +394,9 @@ namespace C4IT_DataHistoryProvider_Test
ctrlProtocolBox1.ProcessMessage("Values:");
foreach (var Entry in _Table.Columns.Values)
{
if (Entry.ColumnName == "Printers")
{
}
ctrlProtocolBox1.ProcessMessage($" [{Entry.ColumnName}]: {getValueString(Entry.Values)}");
}
}

View File

@@ -9,14 +9,14 @@ using System.Runtime.InteropServices;
#endif
[assembly: AssemblyCompany("Consulting4IT GmbH, Germany")]
[assembly: AssemblyCopyright("Copyright <20> 2025, Consulting4IT GmbH, Germany")]
[assembly: AssemblyCopyright("Copyright <20> 2026, Consulting4IT GmbH, Germany")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
[assembly: AssemblyInformationalVersion("2.6.0.14")]
[assembly: AssemblyInformationalVersion("2.6.1.1")]
[assembly: AssemblyVersion("2.6.*")]
[assembly: AssemblyMinClientVersion("2.4.0.0")]
[assembly: AssemblyMinClientVersion("2.6.0.0")]

View File

@@ -1,6 +1,14 @@
<?xml version="1.0" encoding="utf-8" ?>
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7.2" />
</startup>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="Microsoft.Extensions.Logging.Abstractions" publicKeyToken="adb9793829ddae60" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-10.0.0.2" newVersion="10.0.0.2" />
</dependentAssembly>
</assemblyBinding>
</runtime>
</configuration>

View File

@@ -42,15 +42,49 @@
<ApplicationIcon>logo_FASD.ico</ApplicationIcon>
</PropertyGroup>
<ItemGroup>
<Reference Include="C4IT.F4SD.DisplayFormatting, Version=1.0.9509.21303, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\C4IT.F4SD.DisplayFormatting.1.0.0\lib\netstandard2.0\C4IT.F4SD.DisplayFormatting.dll</HintPath>
</Reference>
<Reference Include="C4IT.F4SD.SupportCaseProtocoll, Version=1.0.9516.21165, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\C4IT.F4SD.SupportCaseProtocoll.1.0.0\lib\netstandard2.0\C4IT.F4SD.SupportCaseProtocoll.dll</HintPath>
</Reference>
<Reference Include="MaterialIcons, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\MaterialIcons.1.0.3\lib\MaterialIcons.dll</HintPath>
</Reference>
<Reference Include="Microsoft.Bcl.AsyncInterfaces, Version=10.0.0.2, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.Bcl.AsyncInterfaces.10.0.2\lib\net462\Microsoft.Bcl.AsyncInterfaces.dll</HintPath>
</Reference>
<Reference Include="Microsoft.Extensions.DependencyInjection.Abstractions, Version=10.0.0.2, Culture=neutral, PublicKeyToken=adb9793829ddae60, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.Extensions.DependencyInjection.Abstractions.10.0.2\lib\net462\Microsoft.Extensions.DependencyInjection.Abstractions.dll</HintPath>
</Reference>
<Reference Include="Microsoft.Extensions.Logging.Abstractions, Version=10.0.0.2, Culture=neutral, PublicKeyToken=adb9793829ddae60, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.Extensions.Logging.Abstractions.10.0.2\lib\net462\Microsoft.Extensions.Logging.Abstractions.dll</HintPath>
</Reference>
<Reference Include="Newtonsoft.Json, Version=13.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
<HintPath>..\packages\Newtonsoft.Json.13.0.3\lib\net45\Newtonsoft.Json.dll</HintPath>
<HintPath>..\packages\Newtonsoft.Json.13.0.4\lib\net45\Newtonsoft.Json.dll</HintPath>
</Reference>
<Reference Include="System" />
<Reference Include="System.Buffers, Version=4.0.5.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>..\packages\System.Buffers.4.6.1\lib\net462\System.Buffers.dll</HintPath>
</Reference>
<Reference Include="System.Data" />
<Reference Include="System.Diagnostics.DiagnosticSource, Version=10.0.0.2, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>..\packages\System.Diagnostics.DiagnosticSource.10.0.2\lib\net462\System.Diagnostics.DiagnosticSource.dll</HintPath>
</Reference>
<Reference Include="System.Drawing" />
<Reference Include="System.Memory, Version=4.0.5.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>..\packages\System.Memory.4.6.3\lib\net462\System.Memory.dll</HintPath>
</Reference>
<Reference Include="System.Numerics" />
<Reference Include="System.Numerics.Vectors, Version=4.1.6.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\System.Numerics.Vectors.4.6.1\lib\net462\System.Numerics.Vectors.dll</HintPath>
</Reference>
<Reference Include="System.Runtime.CompilerServices.Unsafe, Version=6.0.3.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\System.Runtime.CompilerServices.Unsafe.6.1.2\lib\net462\System.Runtime.CompilerServices.Unsafe.dll</HintPath>
</Reference>
<Reference Include="System.Threading.Tasks.Extensions, Version=4.2.4.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>..\packages\System.Threading.Tasks.Extensions.4.6.3\lib\net462\System.Threading.Tasks.Extensions.dll</HintPath>
</Reference>
<Reference Include="System.Windows.Forms" />
<Reference Include="System.Xml" />
<Reference Include="Microsoft.CSharp" />

View File

@@ -46,21 +46,21 @@ namespace C4IT.DataHistoryProvider
public abstract class cDataHistoryCollectorModule
{
public cDataHistoryCollector Collector { get; protected set; }
public readonly List<eDataHistoryOrigin> Origins;
public readonly List<enumDataHistoryOrigin> Origins;
public readonly string Name = "";
public readonly Guid LicenseId = Guid.Empty;
public cDataHistoryCollectorModule(cDataHistoryCollector Collector, eDataHistoryOrigin Origin, string Name, string LicenseId)
public cDataHistoryCollectorModule(cDataHistoryCollector Collector, enumDataHistoryOrigin Origin, string Name, string LicenseId)
{
this.Name = Name;
Guid.TryParse(LicenseId, out this.LicenseId);
this.Collector = Collector;
this.Origins = new List<eDataHistoryOrigin>() { Origin };
this.Origins = new List<enumDataHistoryOrigin>() { Origin };
}
public cDataHistoryCollectorModule(cDataHistoryCollector Collector, List<eDataHistoryOrigin> Origin, string Name, string LicenseId)
public cDataHistoryCollectorModule(cDataHistoryCollector Collector, List<enumDataHistoryOrigin> Origin, string Name, string LicenseId)
{
this.Name = Name;
Guid.TryParse(LicenseId, out this.LicenseId);
@@ -251,7 +251,7 @@ namespace C4IT.DataHistoryProvider
private DateTime GlobalParametersConfigTimestamp = DateTime.MinValue;
private object GlobalParametersConfigLock = new object();
public readonly Dictionary<eDataHistoryOrigin, cDataHistoryCollectorModule> Connectors = new Dictionary<eDataHistoryOrigin, cDataHistoryCollectorModule>();
public readonly Dictionary<enumDataHistoryOrigin, cDataHistoryCollectorModule> Connectors = new Dictionary<enumDataHistoryOrigin, cDataHistoryCollectorModule>();
public readonly cDataHistoryCollectorActiveDirectory ActiveDirectory = null;
public readonly cDataHistoryCollectorClientAgent F4sdAgent = null;
public cDataHistoryCollectorM42Wpm M42WpmCollector { get; private set; } = null;
@@ -303,14 +303,14 @@ namespace C4IT.DataHistoryProvider
public cDataHistoryConfigSqlConnection mainDbConnection { get; private set; } = null;
public cDataHistoryCollector(bool autoConnectionCheck, cF4sdWebRequestInfo requestInfo, int LogDeep) : base(null, eDataHistoryOrigin.Main, constConnectorName, constLicenseId)
public cDataHistoryCollector(bool autoConnectionCheck, cF4sdWebRequestInfo requestInfo, int LogDeep) : base(null, enumDataHistoryOrigin.Main, constConnectorName, constLicenseId)
{
this.Collector = this;
this.autoConnectionCheck = autoConnectionCheck;
TokenCache = new cDataHistoryCollectorTokenCache(this, requestInfo, LogDeep + 1);
Connectors.Add(eDataHistoryOrigin.Main, this);
Connectors.Add(enumDataHistoryOrigin.Main, this);
try
{
@@ -329,14 +329,14 @@ namespace C4IT.DataHistoryProvider
if (cF4SDLicense.Instance.Modules.ContainsKey(_ActiveDirectory.LicenseId))
{
ActiveDirectory = _ActiveDirectory;
Connectors.Add(eDataHistoryOrigin.ActiveDirectory, ActiveDirectory);
Connectors.Add(enumDataHistoryOrigin.ActiveDirectory, ActiveDirectory);
}
var _F4sdAgent = new cDataHistoryCollectorClientAgent(this);
if (cF4SDLicense.Instance.Modules.ContainsKey(_F4sdAgent.LicenseId))
{
F4sdAgent = _F4sdAgent;
Connectors.Add(eDataHistoryOrigin.F4sdAgent, F4sdAgent);
Connectors.Add(enumDataHistoryOrigin.F4sdAgent, F4sdAgent);
}
}
@@ -489,7 +489,7 @@ namespace C4IT.DataHistoryProvider
if (cF4SDLicense.Instance.Modules.ContainsKey(_M42WpmCollector.LicenseId))
{
M42WpmCollector = _M42WpmCollector;
Connectors.Add(eDataHistoryOrigin.M42Wpm, M42WpmCollector);
Connectors.Add(enumDataHistoryOrigin.M42Wpm, M42WpmCollector);
RegisterSearchRelationProvider(_M42WpmCollector);
}
}
@@ -501,7 +501,7 @@ namespace C4IT.DataHistoryProvider
if (cF4SDLicense.Instance.Modules.ContainsKey(_NxqlCollector.LicenseId))
{
NxqlCollector = _NxqlCollector;
Connectors.Add(eDataHistoryOrigin.NexthinkNxql, NxqlCollector);
Connectors.Add(enumDataHistoryOrigin.NexthinkNxql, NxqlCollector);
}
}
@@ -512,14 +512,14 @@ namespace C4IT.DataHistoryProvider
//if (cF4SDLicense.Instance.Modules.ContainsKey(_CitrixCollector.LicenseId))
//{
CitrixCollector = _CitrixCollector;
Connectors.Add(eDataHistoryOrigin.Citrix, _CitrixCollector);
Connectors.Add(enumDataHistoryOrigin.Citrix, _CitrixCollector);
RegisterSearchRelationProvider(_CitrixCollector);
//}
}
if(HasIntuneConfig)
{
Connectors.Add(eDataHistoryOrigin.Intune, ActiveDirectory);
Connectors.Add(enumDataHistoryOrigin.Intune, ActiveDirectory);
RegisterSearchRelationProvider(ActiveDirectory);
}
@@ -4537,7 +4537,7 @@ namespace C4IT.DataHistoryProvider
var Ids = await getConntectorIds(Identities, Token, requestInfo, LogDeep + 1).ConfigureAwait(false);
var dicVirtualTables = new Dictionary<eDataHistoryOrigin, List<cDataHistoryConfigTable>>();
var dicVirtualTables = new Dictionary<enumDataHistoryOrigin, List<cDataHistoryConfigTable>>();
var lstDbTables = new List<cDataHistoryConfigTable>();
foreach (var strTable in _tables)
@@ -4729,7 +4729,7 @@ namespace C4IT.DataHistoryProvider
{
var Ids = await getConntectorIds(Identities, Token, requestInfo, LogDeep + 1).ConfigureAwait(false);
var dicVirtualTables = new Dictionary<eDataHistoryOrigin, List<cDataHistoryConfigTable>>();
var dicVirtualTables = new Dictionary<enumDataHistoryOrigin, List<cDataHistoryConfigTable>>();
var lstDbTables = new List<cDataHistoryConfigTable>();
foreach (var strTable in Tables)
{
@@ -4892,10 +4892,11 @@ namespace C4IT.DataHistoryProvider
if (_reader.FieldCount > 2)
{
var retVal = new cF4SDHealthCardRawData.cHealthCardTable
var retVal = new cF4SDHealthCardRawData.cHealthCardTable()
{
Name = tableConfig.Name,
InformationClass = tableConfig.ParentCluster.InformationClass,
Origin = tableConfig.ParentCluster.Origin,
StartingIndex = int.MaxValue,
IsStatic = false,
TableType = tableConfig.Type
@@ -4908,13 +4909,13 @@ namespace C4IT.DataHistoryProvider
var _propName = _reader.GetName(i);
if (tableConfig.Columns.TryGetValue(_propName, out var _col))
{
var _ci = new cF4SDHealthCardRawData.cHealthCardTableColumn() { ColumnName = _col.Name };
var _ci = new cF4SDHealthCardRawData.cHealthCardTableColumn(retVal) { ColumnName = _col.Name };
Cols[i] = _ci;
retVal.Columns[_col.Name] = _ci;
}
if (tableConfig.Columns.TryGetValue(_propName + "_bin", out var _col2))
{
var _ci = new cF4SDHealthCardRawData.cHealthCardTableColumn() { ColumnName = _col.Name + "_bin" };
var _ci = new cF4SDHealthCardRawData.cHealthCardTableColumn(retVal) { ColumnName = _col.Name + "_bin" };
Cols[i] = _ci;
retVal.Columns[_col.Name + "_bin"] = _ci;
}
@@ -5032,11 +5033,12 @@ namespace C4IT.DataHistoryProvider
{
var objVal = objValues[i] == DBNull.Value ? null : objValues[i];
var strCol = _reader.GetName(i);
RetVal.Columns.Add(strCol, new cF4SDHealthCardRawData.cHealthCardTableColumn() { ColumnName = strCol, Values = new List<object>() { objVal } });
RetVal.Columns.Add(strCol, new cF4SDHealthCardRawData.cHealthCardTableColumn(RetVal) { ColumnName = strCol, Values = new List<object>() { objVal } });
}
RetVal.Name = tableConfig.Name;
RetVal.InformationClass = tableConfig.ParentCluster.InformationClass;
RetVal.Origin = tableConfig.ParentCluster.Origin;
RetVal.IsStatic = tableConfig.Type == eDataHistoryTableType.Static;
RetVal.TableType = tableConfig.Type;
@@ -5116,10 +5118,11 @@ namespace C4IT.DataHistoryProvider
}
var RetValHistoric = new cF4SDHealthCardRawData.cHealthCardTable
var RetValHistoric = new cF4SDHealthCardRawData.cHealthCardTable()
{
Name = tableConfig.Name,
InformationClass = tableConfig.ParentCluster.InformationClass,
Origin = tableConfig.ParentCluster.Origin,
IsStatic = false,
TableType = eDataHistoryTableType.History
};
@@ -5129,7 +5132,7 @@ namespace C4IT.DataHistoryProvider
{
var agg = arrColAgg[i];
var col = new cF4SDHealthCardRawData.cHealthCardTableColumn()
var col = new cF4SDHealthCardRawData.cHealthCardTableColumn(RetValHistoric)
{
ColumnName = agg.Column.Name,
Values = agg.getValues()
@@ -5165,7 +5168,7 @@ namespace C4IT.DataHistoryProvider
var myTables = new List<cDataHistoryConfigTable>();
foreach (var Table in Tables)
{
if (Table.ParentCluster.Origin != eDataHistoryOrigin.Main)
if (Table.ParentCluster.Origin != enumDataHistoryOrigin.Main)
continue;
if (!Table.LateDelivery)
@@ -5207,6 +5210,7 @@ namespace C4IT.DataHistoryProvider
{
Name = tableConfig.Name,
InformationClass = enumFasdInformationClass.Ticket,
Origin = tableConfig.ParentCluster.Origin,
IsIncomplete = true
}
};

View File

@@ -30,7 +30,7 @@ namespace C4IT.DataHistoryProvider
public const string constConnectorName = "MS Active Directory, Entra ID & Intune connector";
public const string constLicenseId = "B2D48023-56E8-44D5-AB77-BE1DCF4EA4EB";
public const string constMsGraphUserList = "users?$top={0}&$select=id,displayName,onPremisesSyncEnabled,onPremisesSecurityIdentifier&$filter=onPremisesSyncEnabled eq true";
public const string constMsGraphUserList = "users?$top={0}&$count=true&$select=id,displayName,onPremisesSyncEnabled,onPremisesSecurityIdentifier&$filter=onPremisesSyncEnabled eq true";
public const string constMsGraphUserEntry = "users/{0}";
public const string constMsGraphUserDeviceEntry = "users/{0}";
public const int constMsGraphUserPaging = 100;
@@ -42,7 +42,7 @@ namespace C4IT.DataHistoryProvider
public const string constMsGraphManagedDeviceEntry = "deviceManagement/managedDevices/{0}?$select=id,complianceState,userPrincipalName,userDisplayName,managementState,lastSyncDateTime";
public const string constMsGraphManagedDeviceAllEntry = "deviceManagement/managedDevices/{0}";
public const string constMsGraphManagedDeviceSyncDevice = "deviceManagement/managedDevices/{0}/syncDevice";
public const string constMsGraphManagedDeviceDetectedApps = "deviceManagement/managedDevices/{0}?$select=id&$expand=detectedApps";
public const string constMsGraphManagedDeviceDetectedApps = "deviceManagement/managedDevices/{0}/detectedApps";
public const string constMsGraphManagedDeviceCount = "users/{0}/managedDevices?$select=operatingSystem";
public const string constMsGraphManagedUserDeviceEntry = "users/{0}/managedDevices?$select=id,deviceName,model,operatingSystem,manufacturer,serialNumber";
public const string constMsGraphManagedDeviceChangeManagedStatus = "deviceManagement/managedDevices/{0}/{1}";
@@ -102,7 +102,7 @@ namespace C4IT.DataHistoryProvider
}
public cDataHistoryCollectorActiveDirectory(cDataHistoryCollector Collector)
: base(Collector, new List<eDataHistoryOrigin>() { eDataHistoryOrigin.ActiveDirectory, eDataHistoryOrigin.Intune }, constConnectorName, constLicenseId)
: base(Collector, new List<enumDataHistoryOrigin>() { enumDataHistoryOrigin.ActiveDirectory, enumDataHistoryOrigin.Intune }, constConnectorName, constLicenseId)
{
_collector = Collector;
}
@@ -1289,7 +1289,7 @@ namespace C4IT.DataHistoryProvider
{
foreach (var DataCluster in Collector.ClusterConfig.Clusters.Values)
{
if (DataCluster.Origin != eDataHistoryOrigin.ActiveDirectory || DataCluster.InformationClass != InformationClass)
if (DataCluster.Origin != enumDataHistoryOrigin.ActiveDirectory || DataCluster.InformationClass != InformationClass)
continue;
foreach (var Table in DataCluster.Tables.Values)
@@ -1544,11 +1544,15 @@ namespace C4IT.DataHistoryProvider
}
var strUrl = string.Format(constMsGraphUserList, constMsGraphUserPaging);
var Result = await MsGraph.RequestListAsync(strUrl, UseBeta: false, retryForbidden: false, loadPaged: true);
if (!string.IsNullOrEmpty(Tenant.ScanFilter))
strUrl += " and (" + Tenant.ScanFilter + ")";
var Result = await MsGraph.RequestListAsync(strUrl, UseBeta: false, retryForbidden: false, loadPaged: true, ConsistencyLevelEventual: Tenant.UseConsistencyLevelEventual);
var Count = 0;
var Updated = 0;
while (Result != null == Result.Count > 0)
while (Result != null && Result.Count > 0)
{
foreach (var Entry in Result)
{
@@ -2073,9 +2077,9 @@ namespace C4IT.DataHistoryProvider
try
{
var bDeviceExists = Tables.Exists(v => v.Name == constTableNameIntuneDeviceDetails && v.ParentCluster?.Origin == eDataHistoryOrigin.Intune);
var bUserDeviceExists = Tables.Exists(v => v.Name == constTableNameIntuneUserDeviceCount && v.ParentCluster?.Origin == eDataHistoryOrigin.Intune);
var bMobileDeviceExists = Tables.Exists(v => v.Name == constTableNameIntuneMobileDeviceDetails && v.ParentCluster?.Origin == eDataHistoryOrigin.Intune);
var bDeviceExists = Tables.Exists(v => v.Name == constTableNameIntuneDeviceDetails && v.ParentCluster?.Origin == enumDataHistoryOrigin.Intune);
var bUserDeviceExists = Tables.Exists(v => v.Name == constTableNameIntuneUserDeviceCount && v.ParentCluster?.Origin == enumDataHistoryOrigin.Intune);
var bMobileDeviceExists = Tables.Exists(v => v.Name == constTableNameIntuneMobileDeviceDetails && v.ParentCluster?.Origin == enumDataHistoryOrigin.Intune);
if (!Identities.TryGetValue(enumFasdInformationClass.Computer, out var computer) && computer?.intuneId != Guid.Empty)
@@ -2101,6 +2105,7 @@ namespace C4IT.DataHistoryProvider
{
Name = constTableNameIntuneDeviceDetails,
InformationClass = enumFasdInformationClass.Computer,
Origin = enumDataHistoryOrigin.Intune,
IsIncomplete = true
});
@@ -2115,6 +2120,7 @@ namespace C4IT.DataHistoryProvider
{
Name = constTableNameIntuneMobileDeviceDetails,
InformationClass = enumFasdInformationClass.MobileDevice,
Origin = enumDataHistoryOrigin.Intune,
IsIncomplete = true
});
@@ -2129,6 +2135,7 @@ namespace C4IT.DataHistoryProvider
{
Name = constTableNameIntuneUserDeviceCount,
InformationClass = enumFasdInformationClass.User,
Origin = enumDataHistoryOrigin.Intune,
IsIncomplete = true
});
}
@@ -2168,7 +2175,7 @@ namespace C4IT.DataHistoryProvider
try
{
var bUserDeviceDetailExists = Tables.Exists(v => v.Name == constTableNameIntuneUserDeviceCountDetail && v.ParentCluster?.Origin == eDataHistoryOrigin.Intune);
var bUserDeviceDetailExists = Tables.Exists(v => v.Name == constTableNameIntuneUserDeviceCountDetail && v.ParentCluster?.Origin == enumDataHistoryOrigin.Intune);
if (!Identities.TryGetValue(enumFasdInformationClass.User, out var userIds))
{
@@ -2238,6 +2245,7 @@ namespace C4IT.DataHistoryProvider
{
Name = constTableNameIntuneDeviceDetails,
InformationClass = enumFasdInformationClass.Computer,
Origin = enumDataHistoryOrigin.Intune,
IsStatic = true,
TableType = eDataHistoryTableType.Static
};
@@ -2272,7 +2280,7 @@ namespace C4IT.DataHistoryProvider
objVal = ConvertToF4sdType(objVal, colInfo.ValueType);
var _col = new cF4SDHealthCardRawData.cHealthCardTableColumn() { ColumnName = colInfo.Name, Values = new List<object>(1) { objVal } };
var _col = new cF4SDHealthCardRawData.cHealthCardTableColumn(retVal) { ColumnName = colInfo.Name, Values = new List<object>(1) { objVal } };
retVal.Columns[colInfo.Name] = _col;
}
catch { }
@@ -2325,6 +2333,7 @@ namespace C4IT.DataHistoryProvider
{
Name = constTableNameIntuneUserDeviceCount,
InformationClass = enumFasdInformationClass.User,
Origin = enumDataHistoryOrigin.Intune,
IsStatic = true,
TableType = eDataHistoryTableType.Static
};
@@ -2385,7 +2394,7 @@ namespace C4IT.DataHistoryProvider
objVal = ConvertToF4sdType(objVal, colInfo.ValueType);
var _col = new cF4SDHealthCardRawData.cHealthCardTableColumn() { ColumnName = colInfo.Name, Values = new List<object>(1) { objVal } };
var _col = new cF4SDHealthCardRawData.cHealthCardTableColumn(retVal) { ColumnName = colInfo.Name, Values = new List<object>(1) { objVal } };
retVal.Columns[colInfo.Name] = _col;
}
catch { }
@@ -2598,6 +2607,7 @@ namespace C4IT.DataHistoryProvider
{
Name = constTableNameIntuneMobileDeviceDetails,
InformationClass = enumFasdInformationClass.MobileDevice,
Origin = enumDataHistoryOrigin.Intune,
IsStatic = true,
TableType = eDataHistoryTableType.Static
};
@@ -2632,7 +2642,7 @@ namespace C4IT.DataHistoryProvider
objVal = ConvertToF4sdType(objVal, colInfo.ValueType);
var _col = new cF4SDHealthCardRawData.cHealthCardTableColumn() { ColumnName = colInfo.Name, Values = new List<object>(1) { objVal } };
var _col = new cF4SDHealthCardRawData.cHealthCardTableColumn(retVal) { ColumnName = colInfo.Name, Values = new List<object>(1) { objVal } };
retVal.Columns[colInfo.Name] = _col;
}
catch { }
@@ -2831,7 +2841,7 @@ namespace C4IT.DataHistoryProvider
public async Task<dynamic> GetManagedApps(List<cF4sdIdentityEntry> identities, cF4sdWebRequestInfo requestInfo, CancellationToken Token)
{
var Ids = await Collector.getConntectorIds(identities, Token, requestInfo, 1);
if (!Ids.TryGetValue(enumFasdInformationClass.User, out var _ids))
if (!Ids.TryGetValue(enumFasdInformationClass.Computer, out var _ids))
return null;
var strUrl = string.Format(constMsGraphManagedDeviceDetectedApps, _ids.intuneId);
@@ -2842,7 +2852,7 @@ namespace C4IT.DataHistoryProvider
var Result = await MsGraph.RequestAsync(strUrl, UseBeta: true, retryForbidden: false);
if (Result != null)
{
var ResultJson = Result.Result["detectedApps"] as JArray;
var ResultJson = Result.Result["value"] as JArray;
if (ResultJson != null)
{
Collector.DoProcessUiMessage(3, $" properties of selected '{ResultJson}' with {ResultJson.Count} properties could be read.");
@@ -3417,7 +3427,7 @@ namespace C4IT.DataHistoryProvider
foreach (var DataCluster in Collector.ClusterConfig.Clusters.Values)
{
if (DataCluster.Origin != eDataHistoryOrigin.ActiveDirectory || DataCluster.InformationClass != InformationClass)
if (DataCluster.Origin != enumDataHistoryOrigin.ActiveDirectory || DataCluster.InformationClass != InformationClass)
continue;
foreach (var Table in DataCluster.Tables.Values)
@@ -3441,7 +3451,7 @@ namespace C4IT.DataHistoryProvider
public override bool CheckIfLateDelivery(cDataHistoryConfigTable Table)
{
if (Table?.ParentCluster?.Origin == eDataHistoryOrigin.Intune)
if (Table?.ParentCluster?.Origin == enumDataHistoryOrigin.Intune)
return true;
return false;
}

View File

@@ -45,6 +45,7 @@ namespace C4IT.DataHistoryProvider
public const string constCitrixSessionMachine = "monitorodata/Sessions?$select=SessionKey&$filter=SessionKey eq {0}&$expand=Machine($expand=CurrentLoadIndex,Catalog,DesktopGroup($select=Name)),Machine";
public const string constCitrixSessionCurrentConnection = "monitorodata/Sessions?$select=SessionKey&$filter=SessionKey eq {0}&$expand=CurrentConnection,LogOnMetrics";
public const string constCitrixSessionConnections = "monitorodata/Sessions?$select=SessionKey&$filter=SessionKey eq {0}&$expand=Connection";
public const string constCitrixUserConnections = "monitorodata/Sessions?$filter=UserId in ({0})&$expand=Connection";
public const string constCitrixSessionUser = "monitorodata/Sessions?$select=SessionKey&$filter=SessionKey eq {0}&$expand=User";
public const string constCitrixSessionLogoff = "cvad/manage/Sessions/{0}/$logoff";
public const string constCitrixSessionHide = "cvad/manage/Sessions/{0}/$hide";
@@ -75,7 +76,7 @@ namespace C4IT.DataHistoryProvider
};
private Dictionary<string, cCitrixCommunication> tenantCitrixCache = new Dictionary<string, cCitrixCommunication>();
private readonly cDataHistoryCollector _collector;
public cDataHistoryCollectorCitrix(cDataHistoryCollector Collector) : base(Collector, eDataHistoryOrigin.Citrix, constConnectorName, constLicenseId)
public cDataHistoryCollectorCitrix(cDataHistoryCollector Collector) : base(Collector, enumDataHistoryOrigin.Citrix, constConnectorName, constLicenseId)
{
_collector = Collector;
}
@@ -333,6 +334,7 @@ namespace C4IT.DataHistoryProvider
{
Name = constTableNameSessionMetrics,
InformationClass = enumFasdInformationClass.VirtualSession,
Origin = enumDataHistoryOrigin.Citrix,
IsStatic = true,
TableType = eDataHistoryTableType.Static
};
@@ -440,7 +442,7 @@ namespace C4IT.DataHistoryProvider
if (table.Columns.TryGetValue(columnName, out var columnValues))
columnValues.Values.Add(value);
else
table.Columns.Add(columnName, new cF4SDHealthCardRawData.cHealthCardTableColumn() { ColumnName = columnName, Values = new List<object>() { value } });
table.Columns.Add(columnName, new cF4SDHealthCardRawData.cHealthCardTableColumn(table) { ColumnName = columnName, Values = new List<object>() { value } });
}
}
@@ -1682,6 +1684,7 @@ namespace C4IT.DataHistoryProvider
{
Name = constTableNameSession,
InformationClass = enumFasdInformationClass.VirtualSession,
Origin = enumDataHistoryOrigin.Citrix,
IsStatic = true,
TableType = eDataHistoryTableType.Static
};
@@ -1714,7 +1717,7 @@ namespace C4IT.DataHistoryProvider
objVal = ConvertToF4sdType(objVal, colInfo.ValueType);
var _col = new cF4SDHealthCardRawData.cHealthCardTableColumn() { ColumnName = colInfo.Name, Values = new List<object>(1) { objVal } };
var _col = new cF4SDHealthCardRawData.cHealthCardTableColumn(retVal) { ColumnName = colInfo.Name, Values = new List<object>(1) { objVal } };
retVal.Columns[colInfo.Name] = _col;
}
catch { }
@@ -1764,6 +1767,7 @@ namespace C4IT.DataHistoryProvider
{
Name = constTableNameSessionUser,
InformationClass = enumFasdInformationClass.VirtualSession,
Origin = enumDataHistoryOrigin.Citrix,
IsStatic = true,
TableType = eDataHistoryTableType.Static
};
@@ -1804,7 +1808,7 @@ namespace C4IT.DataHistoryProvider
objVal = ConvertToF4sdType(objVal, colInfo.ValueType);
var _col = new cF4SDHealthCardRawData.cHealthCardTableColumn() { ColumnName = colInfo.Name, Values = new List<object>(1) { objVal } };
var _col = new cF4SDHealthCardRawData.cHealthCardTableColumn(retVal) { ColumnName = colInfo.Name, Values = new List<object>(1) { objVal } };
retVal.Columns[colInfo.Name] = _col;
}
catch { }
@@ -1855,6 +1859,7 @@ namespace C4IT.DataHistoryProvider
{
Name = constTableNameSessionMachine,
InformationClass = enumFasdInformationClass.VirtualSession,
Origin = enumDataHistoryOrigin.Citrix,
IsStatic = true,
TableType = eDataHistoryTableType.Static
};
@@ -1900,7 +1905,7 @@ namespace C4IT.DataHistoryProvider
}
objVal = ConvertToF4sdType(objVal, colInfo.ValueType);
var _col = new cF4SDHealthCardRawData.cHealthCardTableColumn() { ColumnName = colInfo.Name, Values = new List<object>(1) { objVal } };
var _col = new cF4SDHealthCardRawData.cHealthCardTableColumn(retVal) { ColumnName = colInfo.Name, Values = new List<object>(1) { objVal } };
retVal.Columns[colInfo.Name] = _col;
}
catch { }
@@ -1950,6 +1955,7 @@ namespace C4IT.DataHistoryProvider
{
Name = constTableNameSessionCurrentConnection,
InformationClass = enumFasdInformationClass.VirtualSession,
Origin = enumDataHistoryOrigin.Citrix,
IsStatic = true,
TableType = eDataHistoryTableType.Static
};
@@ -2020,7 +2026,7 @@ namespace C4IT.DataHistoryProvider
objVal = ConvertToF4sdType(objVal, colInfo.ValueType);
var _col = new cF4SDHealthCardRawData.cHealthCardTableColumn() { ColumnName = colInfo.Name, Values = new List<object>(1) { objVal } };
var _col = new cF4SDHealthCardRawData.cHealthCardTableColumn(retVal) { ColumnName = colInfo.Name, Values = new List<object>(1) { objVal } };
retVal.Columns[colInfo.Name] = _col;
}
catch { }
@@ -2070,6 +2076,7 @@ namespace C4IT.DataHistoryProvider
{
Name = constTableNameSessionConnection,
InformationClass = enumFasdInformationClass.VirtualSession,
Origin = enumDataHistoryOrigin.Citrix,
IsStatic = true,
TableType = eDataHistoryTableType.Static
};
@@ -2110,7 +2117,7 @@ namespace C4IT.DataHistoryProvider
objVal = ConvertToF4sdType(objVal, colInfo.ValueType);
var _col = new cF4SDHealthCardRawData.cHealthCardTableColumn() { ColumnName = colInfo.Name, Values = new List<object>(1) { objVal } };
var _col = new cF4SDHealthCardRawData.cHealthCardTableColumn(retVal) { ColumnName = colInfo.Name, Values = new List<object>(1) { objVal } };
retVal.Columns[colInfo.Name] = _col;
}
catch { }
@@ -2143,18 +2150,18 @@ namespace C4IT.DataHistoryProvider
try
{
var bIcaRttMSDetailExists = Tables.Exists(v => v.Name == constTableNameSessionDetailsIcaRttMS && v.ParentCluster?.Origin == eDataHistoryOrigin.Citrix);
var bIcaLatencyDetailExists = Tables.Exists(v => v.Name == constTableNameSessionDetailsIcaLatency && v.ParentCluster?.Origin == eDataHistoryOrigin.Citrix);
var bClientL7LatencyDetailExists = Tables.Exists(v => v.Name == constTableNameSessionDetailsClientL7Latency && v.ParentCluster?.Origin == eDataHistoryOrigin.Citrix);
var bServerL7LatencyDetailExists = Tables.Exists(v => v.Name == constTableNameSessionDetailsServerL7Latency && v.ParentCluster?.Origin == eDataHistoryOrigin.Citrix);
var bInputBandwidthUsedDetailExists = Tables.Exists(v => v.Name == constTableNameSessionDetailsInputBandwidthUsed && v.ParentCluster?.Origin == eDataHistoryOrigin.Citrix);
var bOutputBandwidthUsedDetailExists = Tables.Exists(v => v.Name == constTableNameSessionDetailsOutputBandwidthUsed && v.ParentCluster?.Origin == eDataHistoryOrigin.Citrix);
var bOutputBandwidthAvailableDetailExists = Tables.Exists(v => v.Name == constTableNameSessionDetailsOutputBandwidthAvailable && v.ParentCluster?.Origin == eDataHistoryOrigin.Citrix);
var bFpsDetailExists = Tables.Exists(v => v.Name == constTableNameSessionDetailsFps && v.ParentCluster?.Origin == eDataHistoryOrigin.Citrix);
var bInputFpsDetailExists = Tables.Exists(v => v.Name == constTableNameSessionDetailsInputFps && v.ParentCluster?.Origin == eDataHistoryOrigin.Citrix);
var bOutputFpsDetailExists = Tables.Exists(v => v.Name == constTableNameSessionDetailsOutputFps && v.ParentCluster?.Origin == eDataHistoryOrigin.Citrix);
var bWanLatencyDetailExists = Tables.Exists(v => v.Name == constTableNameSessionDetailsWanLatency && v.ParentCluster?.Origin == eDataHistoryOrigin.Citrix);
var bDcLatencyDetailExists = Tables.Exists(v => v.Name == constTableNameSessionDetailsDcLatency && v.ParentCluster?.Origin == eDataHistoryOrigin.Citrix);
var bIcaRttMSDetailExists = Tables.Exists(v => v.Name == constTableNameSessionDetailsIcaRttMS && v.ParentCluster?.Origin == enumDataHistoryOrigin.Citrix);
var bIcaLatencyDetailExists = Tables.Exists(v => v.Name == constTableNameSessionDetailsIcaLatency && v.ParentCluster?.Origin == enumDataHistoryOrigin.Citrix);
var bClientL7LatencyDetailExists = Tables.Exists(v => v.Name == constTableNameSessionDetailsClientL7Latency && v.ParentCluster?.Origin == enumDataHistoryOrigin.Citrix);
var bServerL7LatencyDetailExists = Tables.Exists(v => v.Name == constTableNameSessionDetailsServerL7Latency && v.ParentCluster?.Origin == enumDataHistoryOrigin.Citrix);
var bInputBandwidthUsedDetailExists = Tables.Exists(v => v.Name == constTableNameSessionDetailsInputBandwidthUsed && v.ParentCluster?.Origin == enumDataHistoryOrigin.Citrix);
var bOutputBandwidthUsedDetailExists = Tables.Exists(v => v.Name == constTableNameSessionDetailsOutputBandwidthUsed && v.ParentCluster?.Origin == enumDataHistoryOrigin.Citrix);
var bOutputBandwidthAvailableDetailExists = Tables.Exists(v => v.Name == constTableNameSessionDetailsOutputBandwidthAvailable && v.ParentCluster?.Origin == enumDataHistoryOrigin.Citrix);
var bFpsDetailExists = Tables.Exists(v => v.Name == constTableNameSessionDetailsFps && v.ParentCluster?.Origin == enumDataHistoryOrigin.Citrix);
var bInputFpsDetailExists = Tables.Exists(v => v.Name == constTableNameSessionDetailsInputFps && v.ParentCluster?.Origin == enumDataHistoryOrigin.Citrix);
var bOutputFpsDetailExists = Tables.Exists(v => v.Name == constTableNameSessionDetailsOutputFps && v.ParentCluster?.Origin == enumDataHistoryOrigin.Citrix);
var bWanLatencyDetailExists = Tables.Exists(v => v.Name == constTableNameSessionDetailsWanLatency && v.ParentCluster?.Origin == enumDataHistoryOrigin.Citrix);
var bDcLatencyDetailExists = Tables.Exists(v => v.Name == constTableNameSessionDetailsDcLatency && v.ParentCluster?.Origin == enumDataHistoryOrigin.Citrix);
if (!Identities.TryGetValue(enumFasdInformationClass.VirtualSession, out var session) || session?.Id is null)
return null;
@@ -2385,7 +2392,7 @@ namespace C4IT.DataHistoryProvider
if (!Identities.TryGetValue(enumFasdInformationClass.User, out var userIds) || userIds?.citrixTenantId is null)
return null;
var citrixTableNames = new HashSet<string>(Tables.Where(t => t?.ParentCluster?.Origin == eDataHistoryOrigin.Citrix).Select(t => t.Name), StringComparer.Ordinal);
var citrixTableNames = new HashSet<string>(Tables.Where(t => t?.ParentCluster?.Origin == enumDataHistoryOrigin.Citrix).Select(t => t.Name), StringComparer.Ordinal);
bool Has(string tableName) => tableName != null && citrixTableNames.Contains(tableName);
@@ -2569,7 +2576,7 @@ namespace C4IT.DataHistoryProvider
try
{
if (!Always)
if (Always)
{
var scanInfo = await Collector.CitrixCollector.GetScanTimeInfoAsync(requestInfo, LogDeep + 1, Token);
if (scanInfo == null)

View File

@@ -78,6 +78,19 @@ namespace C4IT.DataHistoryProvider
}
}
private class cMeasureCodeInformation
{
internal List<cHistoricAggregationEntry> Entries = new List<cHistoricAggregationEntry>();
internal bool needsJson = false;
internal void AddEntry(cHistoricAggregationEntry entry)
{
Entries.Add(entry);
if (entry.Column.SourceJsonColumn >=0 || !string.IsNullOrEmpty(entry.Column.SourceJsonField))
needsJson = true;
}
}
private cEventTablesInfo EventTablesInfo = new cEventTablesInfo();
public override void TablePostConfig(cDataHistoryConfigTable Table)
@@ -102,7 +115,7 @@ namespace C4IT.DataHistoryProvider
}
}
public cDataHistoryCollectorClientAgent(cDataHistoryCollector Collector) : base(Collector, eDataHistoryOrigin.F4sdAgent, constConnectorName, constLicenseId)
public cDataHistoryCollectorClientAgent(cDataHistoryCollector Collector) : base(Collector, enumDataHistoryOrigin.F4sdAgent, constConnectorName, constLicenseId)
{
}
@@ -863,15 +876,16 @@ namespace C4IT.DataHistoryProvider
if (!(userInfo?.agentId is int id))
return null;
var RetVal = new cF4SDHealthCardRawData.cHealthCardTable
var RetVal = new cF4SDHealthCardRawData.cHealthCardTable()
{
Name = constAgentUserTableName,
InformationClass = enumFasdInformationClass.Unknown,
InformationClass = enumFasdInformationClass.User,
Origin = enumDataHistoryOrigin.F4sdAgent,
IsStatic = true,
TableType = eDataHistoryTableType.Static
};
RetVal.Columns.Add("id", new cF4SDHealthCardRawData.cHealthCardTableColumn() { ColumnName = "id", Values = new List<object>() { id } });
RetVal.Columns.Add("accountType", new cF4SDHealthCardRawData.cHealthCardTableColumn() { ColumnName = "accountType", Values = new List<object>() { userInfo.accountType.ToString() } });
RetVal.Columns.Add("id", new cF4SDHealthCardRawData.cHealthCardTableColumn(RetVal) { ColumnName = "id", Values = new List<object>() { id } });
RetVal.Columns.Add("accountType", new cF4SDHealthCardRawData.cHealthCardTableColumn(RetVal) { ColumnName = "accountType", Values = new List<object>() { userInfo.accountType.ToString() } });
return RetVal;
}
@@ -922,8 +936,12 @@ namespace C4IT.DataHistoryProvider
if (Reader.HasRows)
{
var dicCols = Table.Columns.Values.Where(x => x.SourceName != null).ToDictionary<cDataHistoryConfigColumnBase, string>(x => x.SourceName);
var RetVal = new cF4SDHealthCardRawData.cHealthCardTable();
RetVal.Columns.Add("id", new cF4SDHealthCardRawData.cHealthCardTableColumn() { ColumnName = "id", Values = new List<object>() { id } });
var RetVal = new cF4SDHealthCardRawData.cHealthCardTable()
{
InformationClass = enumFasdInformationClass.Computer,
Origin = enumDataHistoryOrigin.F4sdAgent
};
RetVal.Columns.Add("id", new cF4SDHealthCardRawData.cHealthCardTableColumn(RetVal) { ColumnName = "id", Values = new List<object>() { id } });
while (await Reader.ReadAsync())
{
try
@@ -933,7 +951,7 @@ namespace C4IT.DataHistoryProvider
if (dicCols.TryGetValue(Name, out var Column))
{
var objValue = cDataHistoryCollector.getJsonValueFromString(JsonValue, Column.ValueType);
RetVal.Columns.Add(Column.Name, new cF4SDHealthCardRawData.cHealthCardTableColumn() { ColumnName = Column.Name, Values = new List<object>() { objValue } });
RetVal.Columns.Add(Column.Name, new cF4SDHealthCardRawData.cHealthCardTableColumn(RetVal) { ColumnName = Column.Name, Values = new List<object>() { objValue } });
}
}
catch (Exception E)
@@ -1257,7 +1275,7 @@ namespace C4IT.DataHistoryProvider
return retVal;
}
private static object GetValueFromDbField(object val)
private static object GetValueFromDbField(object val, bool needJsonDecode)
{
try
{
@@ -1267,9 +1285,9 @@ namespace C4IT.DataHistoryProvider
{
if (strValue.StartsWith("\""))
val = JsonConvert.DeserializeObject<string>(strValue);
else if (strValue.StartsWith("["))
else if (needJsonDecode && strValue.StartsWith("["))
val = JsonConvert.DeserializeObject<object[]>(strValue);
else if (strValue.StartsWith("{"))
else if (needJsonDecode &&strValue.StartsWith("{"))
val = JsonConvert.DeserializeObject<cDataHistoryCustomJsonMeasure>(strValue);
else
val = strValue;
@@ -1288,7 +1306,7 @@ namespace C4IT.DataHistoryProvider
return Table.HasLateDelivery;
}
private async Task getHistoricEventDataTotal(int AgentId, string TableType, string mcFilter, Dictionary<int, List<cHistoricAggregationEntry>> McColumns, int MaxAge, DateTime RefTime, CancellationToken Token, cF4sdWebRequestInfo requestInfo, int LogDeep)
private async Task getHistoricEventDataTotal(int AgentId, string TableType, string mcFilter, Dictionary<int, cMeasureCodeInformation> McColumns, int MaxAge, DateTime RefTime, CancellationToken Token, cF4sdWebRequestInfo requestInfo, int LogDeep)
{
MethodBase CM = null; if (cLogManager.DefaultLogger.IsDebug) { CM = MethodBase.GetCurrentMethod(); LogMethodBegin(CM); }
if (cPerformanceLogger.IsActive && requestInfo != null) { if (CM == null) CM = MethodBase.GetCurrentMethod(); cPerformanceLogger.LogPerformanceStart(LogDeep, CM, requestInfo.id, requestInfo.created); }
@@ -1329,11 +1347,11 @@ namespace C4IT.DataHistoryProvider
{
var _MC = Reader.GetInt32(0);
var _EventTime = Reader.GetDateTime(1);
object Value = GetValueFromDbField(Reader.GetValue(2));
var _EventDuration = Reader.IsDBNull(3) ? 1 : Reader.GetInt32(3);
if (McColumns.TryGetValue(_MC, out var aggEntry))
{
foreach (var aggValEntry in aggEntry)
object Value = GetValueFromDbField(Reader.GetValue(2), aggEntry.needsJson);
foreach (var aggValEntry in aggEntry.Entries)
aggValEntry.addValue(Value, _EventTime, RefTime, _EventDuration);
}
}
@@ -1368,7 +1386,7 @@ namespace C4IT.DataHistoryProvider
}
}
private async Task getHistoricEventDataDaily(int AgentId, string TableName, string mcFilter, Dictionary<int, List<cHistoricAggregationEntry>> McColumns, int MaxAge, DateTime RefTime, CancellationToken Token, cF4sdWebRequestInfo requestInfo, int LogDeep)
private async Task getHistoricEventDataDaily(int AgentId, string TableName, string mcFilter, Dictionary<int, cMeasureCodeInformation> McColumns, int MaxAge, DateTime RefTime, CancellationToken Token, cF4sdWebRequestInfo requestInfo, int LogDeep)
{
MethodBase CM = null; if (cLogManager.DefaultLogger.IsDebug) { CM = MethodBase.GetCurrentMethod(); LogMethodBegin(CM); }
if (cPerformanceLogger.IsActive && requestInfo != null) { if (CM == null) CM = MethodBase.GetCurrentMethod(); cPerformanceLogger.LogPerformanceStart(LogDeep, CM, requestInfo.id, requestInfo.created); }
@@ -1407,15 +1425,19 @@ namespace C4IT.DataHistoryProvider
while (await Reader.ReadAsync())
{
var _MC = Reader.GetInt32(0);
if (_MC == 24)
{
}
var _EventTime = Reader.GetDateTime(1);
if (_EventTime < RefTime - TimeSpan.FromDays(MaxAge))
continue;
object Value = GetValueFromDbField(Reader.GetValue(2));
var _EventDuration = Reader.IsDBNull(3) ? 1 : Reader.GetInt32(3);
if (McColumns.TryGetValue(_MC, out var aggEntry))
{
foreach (var aggValEntry in aggEntry)
object Value = GetValueFromDbField(Reader.GetValue(2), aggEntry.needsJson);
foreach (var aggValEntry in aggEntry.Entries)
aggValEntry.addValue(Value, _EventTime, RefTime, _EventDuration);
}
}
@@ -1452,7 +1474,7 @@ namespace C4IT.DataHistoryProvider
}
private async Task getHistoricEventDataDailyUsage(int AgentId, string TableName, List<cHistoricAggregationEntry> aggEntry, int MaxAge, DateTime RefTime, CancellationToken Token, cF4sdWebRequestInfo requestInfo, int LogDeep)
private async Task getHistoricEventDataDailyUsage(int AgentId, string TableName, cMeasureCodeInformation aggEntry, int MaxAge, DateTime RefTime, CancellationToken Token, cF4sdWebRequestInfo requestInfo, int LogDeep)
{
MethodBase CM = null; if (cLogManager.DefaultLogger.IsDebug) { CM = MethodBase.GetCurrentMethod(); LogMethodBegin(CM); }
if (cPerformanceLogger.IsActive && requestInfo != null) { if (CM == null) CM = MethodBase.GetCurrentMethod(); cPerformanceLogger.LogPerformanceStart(LogDeep, CM, requestInfo.id, requestInfo.created); }
@@ -1495,9 +1517,9 @@ namespace C4IT.DataHistoryProvider
if (_EventTime < RefTime - TimeSpan.FromDays(MaxAge))
continue;
object Value = GetValueFromDbField(Reader.GetValue(2));
var _EventDuration = Reader.IsDBNull(3) ? 1 : Reader.GetInt32(3);
foreach (var aggValEntry in aggEntry)
object Value = GetValueFromDbField(Reader.GetValue(2), aggEntry.needsJson);
foreach (var aggValEntry in aggEntry.Entries)
aggValEntry.addValue(Value, _EventTime, RefTime, _EventDuration);
}
}
@@ -1556,7 +1578,7 @@ namespace C4IT.DataHistoryProvider
try
{
var McColumns = new Dictionary<int, List<cHistoricAggregationEntry>>();
var McColumns = new Dictionary<int, cMeasureCodeInformation>();
foreach (var _Entry in Table.Columns.Values)
{
if (!(_Entry is cDataHistoryConfigColumn col))
@@ -1583,11 +1605,11 @@ namespace C4IT.DataHistoryProvider
if (!McColumns.TryGetValue(_mc.MeasureCode, out var _colList))
{
_colList = new List<cHistoricAggregationEntry>();
_colList = new cMeasureCodeInformation();
McColumns[_mc.MeasureCode] = _colList;
}
var AE = new cHistoricAggregationEntry(col, MaxAge + 1, JsonSettings);
_colList.Add(AE);
_colList.AddEntry(AE);
}
var mcFilter = "";
@@ -1647,18 +1669,20 @@ namespace C4IT.DataHistoryProvider
await Task.WhenAll(_listTask).ConfigureAwait(false);
var RetValLatest = new cF4SDHealthCardRawData.cHealthCardTable
var RetValLatest = new cF4SDHealthCardRawData.cHealthCardTable()
{
Name = Table.Name + "-latest",
InformationClass = Table.ParentCluster.InformationClass,
Origin = Table.ParentCluster.Origin,
IsStatic = true,
TableType = eDataHistoryTableType.Static
};
var RetValHistoric = new cF4SDHealthCardRawData.cHealthCardTable
var RetValHistoric = new cF4SDHealthCardRawData.cHealthCardTable()
{
Name = Table.Name,
InformationClass = Table.ParentCluster.InformationClass,
Origin = Table.ParentCluster.Origin,
IsStatic = false,
TableType = eDataHistoryTableType.History,
AlternateStaticTable = RetValLatest.Name
@@ -1669,9 +1693,9 @@ namespace C4IT.DataHistoryProvider
if (Entry.Key == 29)
{
}
foreach (var subEntry in Entry.Value)
foreach (var subEntry in Entry.Value.Entries)
{
var col = new cF4SDHealthCardRawData.cHealthCardTableColumn()
var col = new cF4SDHealthCardRawData.cHealthCardTableColumn(RetValHistoric)
{
ColumnName = subEntry.Column.Name,
Values = subEntry.getValues()
@@ -1684,7 +1708,7 @@ namespace C4IT.DataHistoryProvider
else
Value2 = subEntry.LatestValue;
var col2 = new cF4SDHealthCardRawData.cHealthCardTableColumn()
var col2 = new cF4SDHealthCardRawData.cHealthCardTableColumn(RetValLatest)
{
ColumnName = subEntry.Column.Name,
Values = new List<object> { Value2 }
@@ -1699,12 +1723,12 @@ namespace C4IT.DataHistoryProvider
{
if (_col.LateDelivery)
{
RetValHistoric.Columns.Add(_col.Name, new cF4SDHealthCardRawData.cHealthCardTableColumn()
RetValHistoric.Columns.Add(_col.Name, new cF4SDHealthCardRawData.cHealthCardTableColumn(RetValHistoric)
{
ColumnName = _col.Name,
IsIncomplete = true
});
RetValLatest.Columns.Add(_col.Name, new cF4SDHealthCardRawData.cHealthCardTableColumn()
RetValLatest.Columns.Add(_col.Name, new cF4SDHealthCardRawData.cHealthCardTableColumn(RetValLatest)
{
ColumnName = _col.Name,
IsIncomplete = true
@@ -1861,13 +1885,25 @@ namespace C4IT.DataHistoryProvider
return null;
}
internal class cHistoricEventRowInfos
{
internal List<cEventDetailsColumnInfo> rows = new List<cEventDetailsColumnInfo>();
internal bool needJson = false;
internal void AddEntry(cEventDetailsColumnInfo row)
{
rows.Add(row);
if (row.JsonIndex >= 0)
needJson = true;
}
}
internal class cHistoricEventDetailsInfo
{
internal cDataHistoryConfigTable Table;
internal cF4SDHealthCardRawData.cHealthCardDetailsTable Result;
internal SortedList<int, SortedDictionary<DateTime, object[]>> _values;
internal List<List<cEventDetailsColumnInfo>> rows;
internal List<cHistoricEventRowInfos> rows;
internal int valueCount;
internal string[] _jsonFields;
internal cDataHistoryConfigColumnBase colTime;
@@ -1904,7 +1940,7 @@ namespace C4IT.DataHistoryProvider
{
for (int i = 0; i < Reader.FieldCount; i++)
{
List<cEventDetailsColumnInfo> _rows = null;
cHistoricEventRowInfos _rows = null;
var colName = Reader.GetName(i);
if (!string.IsNullOrWhiteSpace(colName))
{
@@ -1923,7 +1959,7 @@ namespace C4IT.DataHistoryProvider
if (column.SourceName == colName)
{
if (_rows == null)
_rows = new List<cEventDetailsColumnInfo>();
_rows = new cHistoricEventRowInfos();
_info.Result.Columns.Add(column.Name);
var JsonIndex = -1;
@@ -1937,7 +1973,7 @@ namespace C4IT.DataHistoryProvider
}
}
_rows.Add(new cEventDetailsColumnInfo() { index = _info.Result.Columns.Count - 1, JsonIndex = JsonIndex, column = column });
_rows.AddEntry(new cEventDetailsColumnInfo() { index = _info.Result.Columns.Count - 1, JsonIndex = JsonIndex, column = column });
}
}
@@ -1967,11 +2003,11 @@ namespace C4IT.DataHistoryProvider
for (int i = 0; i < Reader.FieldCount; i++)
{
var listCols = _info.rows[i];
if (listCols != null && listCols.Count > 0)
if (listCols != null && listCols.rows.Count > 0)
{
var val = GetValueFromDbField(arrVals[i]);
var val = GetValueFromDbField(arrVals[i], listCols.needJson);
object resVal = null;
foreach (var Entry in listCols)
foreach (var Entry in listCols.rows)
{
if (Entry.column == _info.colTime && (val is DateTime evt))
EventTime = evt;
@@ -2073,7 +2109,7 @@ namespace C4IT.DataHistoryProvider
Values = new Dictionary<int, List<object[]>>()
},
_values = new SortedList<int, SortedDictionary<DateTime, object[]>>(),
rows = new List<List<cEventDetailsColumnInfo>>(),
rows = new List<cHistoricEventRowInfos>(),
valueCount = 0,
_jsonFields = _jsonFields,
colTime = colTime,

View File

@@ -1,5 +1,6 @@
using C4IT.FASD.Base;
using C4IT.Logging;
using C4IT.F4SD.SupportCaseProtocoll.Models;
using C4IT.FASD.Base;
using C4IT.Logging;
using C4IT.Matrix42.WebClient;
using C4IT.XML;
using C4IT_DataHistoryProvider_Base.DataSources;
@@ -27,16 +28,19 @@ namespace C4IT.DataHistoryProvider
public const string constLicenseId = "9CE1A6BE-6A0C-4A27-94A5-44AB997B8E62";
private const string constUrlIsAlive = "m42Services/api/c4itf4sdwebapi/isalive";
private const string constUrlGetTickets = "m42Services/api/c4itf4sdwebapi/getticketlist?sid={0}&hours={1}&queueoption={2}&queues={3}";
private const string constUrlGetTickets = "m42Services/api/c4itf4sdwebapi/getticketlist?sid={0}&hours={1}&queueoption={2}";
private const string constUrlGetTicketsQueuesParam = "&queues={0}";
private const string constUrlGetTicketDetails = "m42Services/api/c4itf4sdwebapi/getticketdetails?objectid={0}";
private const string constUrlGetTicketHistory = "m42Services/api/c4itf4sdwebapi/gettickethistory?objectid={0}";
private const string constUrlGetCreateTicket = "m42Services/api/c4itf4sdwebapi/getdirectlinkcreateticket?sid={0}{1}";
private const string constUrlGetCreateTicketAssetParam = "&assetname={0}";
private const string constUrlUpdateSolution = "m42Services/api/c4itf4sdwebapi/updateactivitysolution/{0}/";
private const string constUrlGetPickupValues = "m42Services/api/c4itf4sdwebapi/getpickup/{0}?group={1}";
private const string constUrlGetRoleMeberships = "m42services/api/c4itf4sdwebapi/getrolememberships/?sid={0}";
private const string constUrlGetDataQueryRelationItems = "m42Services/api/dataquery/relationitems";
private const string constUrlGetDataQueryRelationItemsCount = "m42Services/api/dataquery/relationitems/count";
private const string constUrlGetPickupValues = "m42Services/api/c4itf4sdwebapi/getpickup/{0}?group={1}";
private const string constUrlGetRoleMeberships = "m42services/api/c4itf4sdwebapi/getrolememberships/?sid={0}";
private const string constUrlGetTicketOverviewCounts = "m42Services/api/c4itf4sdwebapi/getticketoverviewcounts?sid={0}&scope={1}&keys={2}";
private const string constUrlGetTicketOverviewRelations = "m42Services/api/c4itf4sdwebapi/getticketoverviewrelations?sid={0}&scope={1}&key={2}&count={3}";
private const string constUrlGetDataQueryRelationItems = "m42Services/api/dataquery/relationitems";
private const string constUrlGetDataQueryRelationItemsCount = "m42Services/api/dataquery/relationitems/count";
private const string constUrlCreateTicket = "m42Services/api/ticket/create?activitytype={0}";
private const string constUrlActivityGetQuickCallTemplateInfo = "m42Services/api/activity/quickcalltemplateinfo/{0}";
private const string constUrlCreateJournalEntry = "m42Services/api/journal/Add";
@@ -106,7 +110,7 @@ namespace C4IT.DataHistoryProvider
public int ExpirationDays { get; set; }
}
public cDataHistoryCollectorM42Wpm(cDataHistoryCollector Collector) : base(Collector, eDataHistoryOrigin.M42Wpm, constConnectorName, constLicenseId)
public cDataHistoryCollectorM42Wpm(cDataHistoryCollector Collector) : base(Collector, enumDataHistoryOrigin.M42Wpm, constConnectorName, constLicenseId)
{
if (Collector.InfrastructureConfig.M42Wpm.Server == null)
return;
@@ -464,18 +468,26 @@ namespace C4IT.DataHistoryProvider
if (!await CheckOnline())
return null;
var objSid = new SecurityIdentifier(UserId.sid, 0);
var strSid = objSid.ToString();
string encodedQueues = string.Join("|",
Collector.InfrastructureConfig.M42Wpm.ActivityQueues.Select(q =>
string.Format("{0}:{1}",
HttpUtility.UrlEncode(q.QueueName),
HttpUtility.UrlEncode(q.QueueID.ToString())
)
)
);
var strUrl = string.Format(constUrlGetTickets, strSid, Collector.InfrastructureConfig.M42Wpm.ClosedTicketHistory, (int)Collector.InfrastructureConfig.M42Wpm.ActivityQueueFilterOption, encodedQueues);
var objSid = new SecurityIdentifier(UserId.sid, 0);
var strSid = objSid.ToString();
var queueOption = (int)Collector.InfrastructureConfig.M42Wpm.ActivityQueueFilterOption;
var strUrl = string.Format(constUrlGetTickets,
strSid,
Collector.InfrastructureConfig.M42Wpm.ClosedTicketHistory,
queueOption);
if (queueOption != 0)
{
var encodedQueues = string.Join("|",
Collector.InfrastructureConfig.M42Wpm.ActivityQueues.Select(q =>
string.Format("{0}:{1}",
HttpUtility.UrlEncode(q.QueueName),
HttpUtility.UrlEncode(q.QueueID.ToString())
)
)
);
strUrl += string.Format(constUrlGetTicketsQueuesParam, encodedQueues);
}
var _wc = await GetWebClient(requestInfo, Token);
var res = await _wc.HttpEnh.GetAsync(strUrl);
@@ -509,11 +521,11 @@ namespace C4IT.DataHistoryProvider
return null;
}
public async Task<List<cF4sdApiSearchResultRelation>> getTicketUsage(List<cF4sdConnectorIds> lstTicketIds, CancellationToken Token, cF4sdWebRequestInfo requestInfo, int LogDeep)
{
MethodBase CM = null; if (cLogManager.DefaultLogger.IsDebug) { CM = MethodBase.GetCurrentMethod(); LogMethodBegin(CM); }
if (cPerformanceLogger.IsActive && requestInfo != null) { if (CM == null) CM = MethodBase.GetCurrentMethod(); cPerformanceLogger.LogPerformanceStart(LogDeep, CM, requestInfo.id, requestInfo.created); }
var _startTime = DateTime.UtcNow;
public async Task<List<cF4sdApiSearchResultRelation>> getTicketUsage(List<cF4sdConnectorIds> lstTicketIds, CancellationToken Token, cF4sdWebRequestInfo requestInfo, int LogDeep)
{
MethodBase CM = null; if (cLogManager.DefaultLogger.IsDebug) { CM = MethodBase.GetCurrentMethod(); LogMethodBegin(CM); }
if (cPerformanceLogger.IsActive && requestInfo != null) { if (CM == null) CM = MethodBase.GetCurrentMethod(); cPerformanceLogger.LogPerformanceStart(LogDeep, CM, requestInfo.id, requestInfo.created); }
var _startTime = DateTime.UtcNow;
try
{
@@ -585,9 +597,136 @@ namespace C4IT.DataHistoryProvider
if (cPerformanceLogger.IsActive && requestInfo != null) { cPerformanceLogger.LogPerformanceEnd(LogDeep, CM, requestInfo.id, requestInfo.created, _startTime); }
if (CM != null) LogMethodEnd(CM);
}
return null;
}
return null;
}
public async Task<Dictionary<string, int>> GetTicketOverviewCountsAsync(IEnumerable<string> keys, bool useRoleScope, cF4sdWebRequestInfo requestInfo, int LogDeep, CancellationToken Token)
{
MethodBase CM = null; if (cLogManager.DefaultLogger.IsDebug) { CM = MethodBase.GetCurrentMethod(); LogMethodBegin(CM); }
if (cPerformanceLogger.IsActive && requestInfo != null) { if (CM == null) CM = MethodBase.GetCurrentMethod(); cPerformanceLogger.LogPerformanceStart(LogDeep, CM, requestInfo.id, requestInfo.created); }
var _startTime = DateTime.UtcNow;
try
{
if (!await CheckOnline())
return new Dictionary<string, int>(StringComparer.OrdinalIgnoreCase);
var sid = requestInfo?.userInfo?.AdSid;
if (string.IsNullOrWhiteSpace(sid))
return new Dictionary<string, int>(StringComparer.OrdinalIgnoreCase);
var scope = useRoleScope ? "role" : "personal";
var normalizedKeys = (keys ?? Enumerable.Empty<string>())
.Where(k => !string.IsNullOrWhiteSpace(k))
.Distinct(StringComparer.OrdinalIgnoreCase)
.ToList();
var keyParam = normalizedKeys.Count > 0
? HttpUtility.UrlEncode(string.Join(",", normalizedKeys))
: string.Empty;
var url = string.Format(constUrlGetTicketOverviewCounts, HttpUtility.UrlEncode(sid), scope, keyParam);
var wc = await GetWebClient(requestInfo, Token);
var res = await wc.HttpEnh.GetAsync(url, Token);
if (Token.IsCancellationRequested)
return new Dictionary<string, int>(StringComparer.OrdinalIgnoreCase);
if (res?.IsSuccessStatusCode == true)
{
var json = await res.Content.ReadAsStringAsync();
if (!string.IsNullOrWhiteSpace(json))
{
var root = JsonConvert.DeserializeObject<JObject>(json);
var countsToken = root?["counts"] as JObject;
var counts = new Dictionary<string, int>(StringComparer.OrdinalIgnoreCase);
if (countsToken != null)
{
foreach (var prop in countsToken.Properties())
{
if (prop?.Name == null)
continue;
var value = prop.Value?.Type == JTokenType.Integer
? prop.Value.Value<int>()
: int.TryParse(prop.Value?.ToString(), out var parsed) ? parsed : 0;
counts[prop.Name] = value;
}
}
return counts;
}
}
StartOnlineValidation();
}
catch (Exception E)
{
LogException(E);
}
finally
{
if (cPerformanceLogger.IsActive && requestInfo != null) { cPerformanceLogger.LogPerformanceEnd(LogDeep, CM, requestInfo.id, requestInfo.created, _startTime); }
if (CM != null) LogMethodEnd(CM);
}
return new Dictionary<string, int>(StringComparer.OrdinalIgnoreCase);
}
public async Task<List<cF4sdApiSearchResultRelation>> GetTicketOverviewRelationsAsync(string key, bool useRoleScope, int count, cF4sdWebRequestInfo requestInfo, int LogDeep, CancellationToken Token)
{
MethodBase CM = null; if (cLogManager.DefaultLogger.IsDebug) { CM = MethodBase.GetCurrentMethod(); LogMethodBegin(CM); }
if (cPerformanceLogger.IsActive && requestInfo != null) { if (CM == null) CM = MethodBase.GetCurrentMethod(); cPerformanceLogger.LogPerformanceStart(LogDeep, CM, requestInfo.id, requestInfo.created); }
var _startTime = DateTime.UtcNow;
try
{
if (!await CheckOnline())
return new List<cF4sdApiSearchResultRelation>();
if (string.IsNullOrWhiteSpace(key))
return new List<cF4sdApiSearchResultRelation>();
var sid = requestInfo?.userInfo?.AdSid;
if (string.IsNullOrWhiteSpace(sid))
return new List<cF4sdApiSearchResultRelation>();
var scope = useRoleScope ? "role" : "personal";
var url = string.Format(
constUrlGetTicketOverviewRelations,
HttpUtility.UrlEncode(sid),
scope,
HttpUtility.UrlEncode(key),
Math.Max(0, count)
);
var wc = await GetWebClient(requestInfo, Token);
var res = await wc.HttpEnh.GetAsync(url, Token);
if (Token.IsCancellationRequested)
return new List<cF4sdApiSearchResultRelation>();
if (res?.IsSuccessStatusCode == true)
{
var json = await res.Content.ReadAsStringAsync();
if (!string.IsNullOrWhiteSpace(json))
{
var relations = JsonConvert.DeserializeObject<List<cF4sdApiSearchResultRelation>>(json);
if (relations != null)
return relations;
}
}
StartOnlineValidation();
}
catch (Exception E)
{
LogException(E);
}
finally
{
if (cPerformanceLogger.IsActive && requestInfo != null) { cPerformanceLogger.LogPerformanceEnd(LogDeep, CM, requestInfo.id, requestInfo.created, _startTime); }
if (CM != null) LogMethodEnd(CM);
}
return new List<cF4sdApiSearchResultRelation>();
}
public override async Task<List<cF4SDHealthCardRawData.cHealthCardTable>> GetTableResultsVirtualAsync(List<cDataHistoryConfigTable> Tables, Dictionary<enumFasdInformationClass, cF4sdConnectorIds> Identities, DateTime RefTime, int MaxAge, bool instantly, Guid? CacheId, CancellationToken Token, cF4sdWebRequestInfo requestInfo, int LogDeep)
{
@@ -600,10 +739,10 @@ namespace C4IT.DataHistoryProvider
if (!await CheckOnline())
return null;
var bMainExists = Tables.Exists(v => v.Name == constTableNameTicketDetails && v.ParentCluster?.Origin == eDataHistoryOrigin.M42Wpm);
var bHistoryExists = Tables.Exists(v => v.Name == constTableNameTicketHistory && v.ParentCluster?.Origin == eDataHistoryOrigin.M42Wpm);
var bUserInfoExists = Tables.Exists(v => v.Name == constTableNameUserTicket && v.ParentCluster?.Origin == eDataHistoryOrigin.M42Wpm);
var bPickupsExists = Tables.Exists(v => v.ParentCluster?.Origin == eDataHistoryOrigin.M42Wpm && v.SubTables?.Count == 1 && v.SubTables.Values.First().Template is cDataHistoryConfigQueryTemplateM42Pickup);
var bMainExists = Tables.Exists(v => v.Name == constTableNameTicketDetails && v.ParentCluster?.Origin == enumDataHistoryOrigin.M42Wpm);
var bHistoryExists = Tables.Exists(v => v.Name == constTableNameTicketHistory && v.ParentCluster?.Origin == enumDataHistoryOrigin.M42Wpm);
var bUserInfoExists = Tables.Exists(v => v.Name == constTableNameUserTicket && v.ParentCluster?.Origin == enumDataHistoryOrigin.M42Wpm);
var bPickupsExists = Tables.Exists(v => v.ParentCluster?.Origin == enumDataHistoryOrigin.M42Wpm && v.SubTables?.Count == 1 && v.SubTables.Values.First().Template is cDataHistoryConfigQueryTemplateM42Pickup);
if (!bMainExists && !bHistoryExists && !bUserInfoExists && !bPickupsExists)
return null;
@@ -629,7 +768,7 @@ namespace C4IT.DataHistoryProvider
{
foreach (var _table in Tables)
{
if (_table.ParentCluster?.Origin != eDataHistoryOrigin.M42Wpm)
if (_table.ParentCluster?.Origin != enumDataHistoryOrigin.M42Wpm)
continue;
if (!(_table.SubTables.Values.First()?.Template is cDataHistoryConfigQueryTemplateM42Pickup))
continue;
@@ -653,12 +792,13 @@ namespace C4IT.DataHistoryProvider
{
Name = constTableNameTicketHistory,
InformationClass = enumFasdInformationClass.Ticket,
Origin = enumDataHistoryOrigin.M42Wpm,
IsIncomplete = true
});
foreach (var _table in Tables)
{
if (_table.ParentCluster?.Origin != eDataHistoryOrigin.M42Wpm)
if (_table.ParentCluster?.Origin != enumDataHistoryOrigin.M42Wpm)
continue;
if (!(_table.SubTables.Values.First()?.Template is cDataHistoryConfigQueryTemplateM42Pickup))
continue;
@@ -667,6 +807,7 @@ namespace C4IT.DataHistoryProvider
{
Name = _table.Name,
InformationClass = _table.ParentCluster.InformationClass,
Origin = _table.ParentCluster.Origin,
IsIncomplete = true
});
}
@@ -721,6 +862,7 @@ namespace C4IT.DataHistoryProvider
{
Name = constTableNameTicketDetails,
InformationClass = enumFasdInformationClass.Ticket,
Origin = enumDataHistoryOrigin.M42Wpm,
IsStatic = true,
TableType = eDataHistoryTableType.Static
};
@@ -757,7 +899,7 @@ namespace C4IT.DataHistoryProvider
objVal = ConvertToF4sdType(objVal, colInfo.ValueType);
var _col = new cF4SDHealthCardRawData.cHealthCardTableColumn() { ColumnName = colInfo.Name, Values = new List<object>(1) { objVal } };
var _col = new cF4SDHealthCardRawData.cHealthCardTableColumn(retVal) { ColumnName = colInfo.Name, Values = new List<object>(1) { objVal } };
if (colInfo.IsWritable && colInfo.SourceName == "SolutionHtml")
_col.IsWritable = true;
@@ -875,6 +1017,7 @@ namespace C4IT.DataHistoryProvider
{
Name = constTableNameTicketHistory,
InformationClass = enumFasdInformationClass.Ticket,
Origin = enumDataHistoryOrigin.M42Wpm,
IsStatic = false,
TableType = eDataHistoryTableType.HistoryEvents
};
@@ -884,7 +1027,7 @@ namespace C4IT.DataHistoryProvider
foreach (var colInfo in M42TableDetails.Columns.Values)
{
retVal.Columns[colInfo.Name] = new cF4SDHealthCardRawData.cHealthCardTableColumn()
retVal.Columns[colInfo.Name] = new cF4SDHealthCardRawData.cHealthCardTableColumn(retVal)
{
ColumnName = colInfo.Name,
Values = new List<object>(hLength)
@@ -989,6 +1132,7 @@ namespace C4IT.DataHistoryProvider
{
Name = constTableNameUserTicket,
InformationClass = enumFasdInformationClass.User,
Origin = enumDataHistoryOrigin.M42Wpm,
IsStatic = true,
TableType = eDataHistoryTableType.Static
};
@@ -1023,7 +1167,7 @@ namespace C4IT.DataHistoryProvider
objVal = ConvertToF4sdType(objVal, colInfo.ValueType);
retVal.Columns[colInfo.Name] = new cF4SDHealthCardRawData.cHealthCardTableColumn() { ColumnName = colInfo.Name, Values = new List<object>(1) { objVal } };
retVal.Columns[colInfo.Name] = new cF4SDHealthCardRawData.cHealthCardTableColumn(retVal) { ColumnName = colInfo.Name, Values = new List<object>(1) { objVal } };
}
catch { }
}
@@ -1088,6 +1232,7 @@ namespace C4IT.DataHistoryProvider
{
Name = TableConfig.Name,
InformationClass = enumFasdInformationClass.User,
Origin = enumDataHistoryOrigin.M42Wpm,
IsStatic = true,
TableType = eDataHistoryTableType.Static
};
@@ -1100,7 +1245,7 @@ namespace C4IT.DataHistoryProvider
var _i = 0;
foreach (var _colInfo in TableConfig.Columns.Values)
{
var _col = new cF4SDHealthCardRawData.cHealthCardTableColumn() { ColumnName = _colInfo.Name };
var _col = new cF4SDHealthCardRawData.cHealthCardTableColumn(retVal) { ColumnName = _colInfo.Name };
retVal.Columns[_colInfo.Name] = _col;
_dicColInfo[_colInfo.SourceName] = _colInfo;
_dicIndex[_colInfo.SourceName] = _i;
@@ -1693,6 +1838,7 @@ namespace C4IT.DataHistoryProvider
{
Name = Table.Name,
InformationClass = Table.ParentCluster.InformationClass,
Origin = Table.ParentCluster.Origin,
IsStatic = false,
TableType = Table.Type
};
@@ -1700,7 +1846,7 @@ namespace C4IT.DataHistoryProvider
var _dicColInfo = Table.Columns.ToDictionary(v => v.Value.SourceName, v => v.Value);
foreach (var colInfo in Table.Columns.Values)
{
retVal.Columns[colInfo.Name] = new cF4SDHealthCardRawData.cHealthCardTableColumn() { ColumnName = colInfo.Name, Values = new List<object>(_valueCount) };
retVal.Columns[colInfo.Name] = new cF4SDHealthCardRawData.cHealthCardTableColumn(retVal) { ColumnName = colInfo.Name, Values = new List<object>(_valueCount) };
}
foreach (var _entry in ticketInfos)
@@ -2114,22 +2260,124 @@ namespace C4IT.DataHistoryProvider
await CreateM42JournalAsync(journalEntry, requestInfo, LogDeep + 1, token);
if (token.IsCancellationRequested) return null;
if (ticketInfo.QuickActionHistory != null)
foreach (var entry in ticketInfo.QuickActionHistory)
try
{
if (ticketInfo.SupportCaseProtocollEntries != null)
{
cCreateJournalEntryInfo _entry = null;
switch (entry.ResultCode)
{
case -1:
case 1:
case 0:
var entryType = entry.wasRunningOnAffectedDevice ? 20602 : 20601;
_entry = new cCreateJournalEntryInfo()
await ProtocollSupportCaseProtocollEntries(ticketInfo.SupportCaseProtocollEntries, TicketId, requestInfo, LogDeep, token);
}
else if (ticketInfo.QuickActionHistory != null)
{
await ProtocollSupportCaseQuickActionHistory(ticketInfo.QuickActionHistory, TicketId, requestInfo, LogDeep, token);
}
if (token.IsCancellationRequested)
return null;
}
catch (TaskCanceledException)
{
return null;
}
ticketInfo.Ticket = TicketId;
await UpdateM42TicketUnreadAsync(ticketInfo, requestInfo, LogDeep + 1, token);
return TicketId.ToString();
}
}
catch (Exception e)
{
LogException(e);
}
finally
{
if (cPerformanceLogger.IsActive && requestInfo != null) { cPerformanceLogger.LogPerformanceEnd(LogDeep, CM, requestInfo.id, requestInfo.created, _startTime); }
if (CM != null) LogMethodEnd(CM);
}
return null;
}
private async Task ProtocollSupportCaseProtocollEntries(List<ProtocollEntryBase> supportCaseProtocollEntries, Guid ticketId, cF4sdWebRequestInfo requestInfo, int logDeep, CancellationToken token)
{
foreach (var protocollEntry in supportCaseProtocollEntries)
{
if (!(protocollEntry is QuickActionProtocollEntry entry))
continue;
cCreateJournalEntryInfo _entry = null;
switch (entry.ResultCode)
{
case -1:
case 1:
case 0:
var entryType = entry.WasRunningOnAffectedDevice ? 20602 : 20601;
_entry = new cCreateJournalEntryInfo()
{
Comments = "",
ObjectId = ticketId,
EntryType = entryType,
Parameters = new List<cCreateJournalEntryInfo.Parameter>() { new cCreateJournalEntryInfo.Parameter()
{
Comments = "",
ObjectId = TicketId,
EntryType = entryType,
Parameters = new List<cCreateJournalEntryInfo.Parameter>() { new cCreateJournalEntryInfo.Parameter()
Name = "result",
Value = entry.HtmlContent ?? entry.MeasureValues ?? entry.ErrorMessage
},
new cCreateJournalEntryInfo.Parameter()
{
Name = "quickActionName",
Value = entry.Name
},
new cCreateJournalEntryInfo.Parameter()
{
Name = "QuickActionId",
Value = entry.Id
},
new cCreateJournalEntryInfo.Parameter()
{
Name = "quickActionExecutionType",
Value = entry.ExecutionTypeId
},
new cCreateJournalEntryInfo.Parameter()
{
Name = "ExecutionTime",
Value = entry.Time
},
new cCreateJournalEntryInfo.Parameter()
{
Name = "AffectedDeviceName",
Value = entry.AffectedDeviceName
},}
};
break;
default:
break;
}
if (_entry != null)
{
await CreateM42JournalAsync(_entry, requestInfo, logDeep + 1, token);
if (token.IsCancellationRequested) return;
}
}
}
private async Task ProtocollSupportCaseQuickActionHistory(List<cQuickActionResult> quickActionHistory, Guid ticketId, cF4sdWebRequestInfo requestInfo, int logDeep, CancellationToken token)
{
foreach (var entry in quickActionHistory)
{
cCreateJournalEntryInfo _entry = null;
switch (entry.ResultCode)
{
case -1:
case 1:
case 0:
var entryType = entry.wasRunningOnAffectedDevice ? 20602 : 20601;
_entry = new cCreateJournalEntryInfo()
{
Comments = "",
ObjectId = ticketId,
EntryType = entryType,
Parameters = new List<cCreateJournalEntryInfo.Parameter>() { new cCreateJournalEntryInfo.Parameter()
{
Name = "result",
Value = entry.Output ?? entry.MeasureValues ?? entry.ErrorMessage
@@ -2159,35 +2407,17 @@ namespace C4IT.DataHistoryProvider
Name = "AffectedDeviceName",
Value = entry.AffectedDeviceName
},}
};
break;
default:
break;
}
if (_entry != null)
{
await CreateM42JournalAsync(_entry, requestInfo, LogDeep + 1, token);
if (token.IsCancellationRequested) return null;
}
}
ticketInfo.Ticket = TicketId;
await UpdateM42TicketUnreadAsync(ticketInfo, requestInfo, LogDeep + 1, token);
return TicketId.ToString();
};
break;
default:
break;
}
if (_entry != null)
{
await CreateM42JournalAsync(_entry, requestInfo, logDeep + 1, token);
if (token.IsCancellationRequested) return;
}
}
catch (Exception e)
{
LogException(e);
}
finally
{
if (cPerformanceLogger.IsActive && requestInfo != null) { cPerformanceLogger.LogPerformanceEnd(LogDeep, CM, requestInfo.id, requestInfo.created, _startTime); }
if (CM != null) LogMethodEnd(CM);
}
return null;
}
public async Task<string> UpdateM42TicketAsync(cApiM42Ticket ticketInfo, cF4sdWebRequestInfo requestInfo, int LogDeep, CancellationToken token)
@@ -2332,16 +2562,19 @@ namespace C4IT.DataHistoryProvider
await CreateM42JournalAsync(_entry, requestInfo, LogDeep + 1, token);
if (token.IsCancellationRequested) return null;
}
if (ticketInfo.QuickActionHistory != null)
if (ticketInfo.SupportCaseProtocollEntries != null)
{
foreach (var entry in ticketInfo.QuickActionHistory)
foreach (var protocollEntry in ticketInfo.SupportCaseProtocollEntries)
{
if (!(protocollEntry is QuickActionProtocollEntry entry))
continue;
switch (entry.ResultCode)
{
case -1:
case 1:
case 0:
var entryType = entry.wasRunningOnAffectedDevice ? 20602 : 20601;
var entryType = entry.WasRunningOnAffectedDevice ? 20602 : 20601;
_entry = new cCreateJournalEntryInfo()
{
Comments = "",
@@ -2350,27 +2583,27 @@ namespace C4IT.DataHistoryProvider
Parameters = new List<cCreateJournalEntryInfo.Parameter>() { new cCreateJournalEntryInfo.Parameter()
{
Name = "result",
Value = entry.Output ?? entry.MeasureValues ?? entry.ErrorMessage
Value = entry.HtmlContent ?? entry.MeasureValues ?? entry.ErrorMessage
},
new cCreateJournalEntryInfo.Parameter()
{
Name = "quickActionName",
Value = entry.QuickActionName
Value = entry.Name
},
new cCreateJournalEntryInfo.Parameter()
{
Name = "QuickActionId",
Value = entry.QuickActionId
Value = entry.Id
},
new cCreateJournalEntryInfo.Parameter()
{
Name = "quickActionExecutionType",
Value = entry.QuickActionExecutionType
Value = entry.ExecutionTypeId
},
new cCreateJournalEntryInfo.Parameter()
{
Name = "ExecutionTime",
Value = entry.ExecutionTime
Value = entry.Time
},
new cCreateJournalEntryInfo.Parameter()
{

View File

@@ -22,7 +22,7 @@ namespace C4IT.DataHistoryProvider
public cNxqlColumnsValidationResult LastValidationResults = null;
public cDataHistoryCollectorNxql(cDataHistoryCollector Collector) : base(Collector, eDataHistoryOrigin.NexthinkNxql, constConnectorName, constLicenseId)
public cDataHistoryCollectorNxql(cDataHistoryCollector Collector) : base(Collector, enumDataHistoryOrigin.NexthinkNxql, constConnectorName, constLicenseId)
{
}
@@ -644,6 +644,7 @@ namespace C4IT.DataHistoryProvider
{
Name = Table.Name,
InformationClass = Table.ParentCluster.InformationClass,
Origin = Table.ParentCluster.Origin,
IsIncomplete = true
}); ;
}
@@ -769,7 +770,7 @@ namespace C4IT.DataHistoryProvider
}
else
{
SqlValueEntry = new cF4SDHealthCardRawData.cHealthCardTableColumn()
SqlValueEntry = new cF4SDHealthCardRawData.cHealthCardTableColumn(SqlValues)
{
ColumnName = DailyValueEntry.Key,
Values = new List<object>(1) { DailyValueEntry.Value }
@@ -822,10 +823,11 @@ namespace C4IT.DataHistoryProvider
else
{
if (DefaultLogger.IsDebug) LogEntry($"No valid SQL data found for NXQL results for table '{TableName}', creating a new table result with todays values only", LogLevels.Debug);
var TableResult = new cF4SDHealthCardRawData.cHealthCardTable
var TableResult = new cF4SDHealthCardRawData.cHealthCardTable()
{
Name = TableName,
InformationClass = DailyValues.InformationClass,
Origin = enumDataHistoryOrigin.NexthinkNxql,
IsIncomplete = true,
IsStatic = false,
TableType = eDataHistoryTableType.History,
@@ -836,7 +838,7 @@ namespace C4IT.DataHistoryProvider
foreach (var ColEntry in DailyValues)
{
var _col = new cF4SDHealthCardRawData.cHealthCardTableColumn
var _col = new cF4SDHealthCardRawData.cHealthCardTableColumn(TableResult)
{
ColumnName = ColEntry.Key,
Values = new List<object>(1) { ColEntry.Value }
@@ -901,7 +903,7 @@ namespace C4IT.DataHistoryProvider
var indexServer = 0;
foreach (var Table in Collector.ClusterConfig.Tables.Values)
{
if (Table.ParentCluster.Origin != eDataHistoryOrigin.NexthinkNxql)
if (Table.ParentCluster.Origin != enumDataHistoryOrigin.NexthinkNxql)
continue;
foreach (var SubTable in Table.SubTables.Values)
@@ -1182,7 +1184,7 @@ namespace C4IT.DataHistoryProvider
foreach (var Table in Collector.ClusterConfig.Tables.Values)
{
if (Table.ParentCluster.Origin != eDataHistoryOrigin.NexthinkNxql)
if (Table.ParentCluster.Origin != enumDataHistoryOrigin.NexthinkNxql)
continue;
foreach (var SubTable in Table.SubTables.Values)
@@ -1435,7 +1437,7 @@ namespace C4IT.DataHistoryProvider
foreach (var Table in Tables)
{
if (!(Table.ParentCluster.Origin == eDataHistoryOrigin.NexthinkNxql))
if (!(Table.ParentCluster.Origin == enumDataHistoryOrigin.NexthinkNxql))
continue;
if (Table.ParentCluster.InformationClass != InfoClass)
@@ -1804,7 +1806,7 @@ namespace C4IT.DataHistoryProvider
{
foreach (var Table in Collector.ClusterConfig.Tables.Values)
{
if (!(Table.ParentCluster.Origin == eDataHistoryOrigin.NexthinkNxql))
if (!(Table.ParentCluster.Origin == enumDataHistoryOrigin.NexthinkNxql))
continue;
if (Table.Cached == eDataHistoryTableCached.No && FileSavePath == null)

View File

@@ -511,6 +511,9 @@ namespace C4IT.DataHistoryProvider
public bool ScanIntuneDevices { get; private set; } = false;
public bool WithMobileDevices { get; private set; } = false;
public string ScanFilter { get; private set; } = "";
public bool UseConsistencyLevelEventual { get; private set; } = false;
internal cDataHistoryAzureTenant(XmlElement XNode, Dictionary<string, cCredential> Credentials, cXmlParser Parser)
{
MethodBase CM = null; if (cLogManager.DefaultLogger.IsDebug) { CM = MethodBase.GetCurrentMethod(); LogMethodBegin(CM); }
@@ -544,6 +547,22 @@ namespace C4IT.DataHistoryProvider
ScanIntuneDevices = cXmlParser.GetBoolFromXmlAttribute(XNode, "ScanIntuneDevices");
WithMobileDevices = cXmlParser.GetBoolFromXmlAttribute(XNode, "WithMobileDevices");
var XFilterNode = XNode.SelectSingleNode("Azure-Scan-Filter");
if (XFilterNode is XmlElement XFilter)
{
Parser.EnterElement("Azure-AD");
try
{
ScanFilter = XFilter.SelectSingleNode("text()")?.Value;
UseConsistencyLevelEventual = cXmlParser.GetBoolFromXmlAttribute(XFilter, "UseConsistencyLevelEventual");
}
finally
{
Parser.LeaveElement("Azure-AD");
}
}
IsValid = true;
}
catch (Exception E)

View File

@@ -16,19 +16,6 @@ using static C4IT.Logging.cLogManager;
namespace C4IT.DataHistoryProvider
{
public enum eDataHistoryOrigin
{
Unknown = 0,
Main = 1,
F4sdAgent = 2,
NexthinkNxql = 3,
ActiveDirectory = 4,
AzureAD = 5,
M42Wpm = 6,
Intune= 7,
Citrix = 8
}
public enum eDataHistoryTableCached { Default = 0, Yes = 1, No = 2 };
public enum eDataHistoryQueryType { Query = 0, Static = 1 }
@@ -645,7 +632,7 @@ namespace C4IT.DataHistoryProvider
[JsonIgnore]
public cDataHistoryConfigClusters ParentConfig { get; protected set; } = null;
public eDataHistoryOrigin Origin { get; protected set; } = eDataHistoryOrigin.Unknown;
public enumDataHistoryOrigin Origin { get; protected set; } = enumDataHistoryOrigin.Unknown;
public enumFasdInformationClass InformationClass { get; protected set; } = enumFasdInformationClass.Unknown;
@@ -675,8 +662,8 @@ namespace C4IT.DataHistoryProvider
return;
}
Origin = cXmlParser.GetEnumFromAttribute<eDataHistoryOrigin>(XNode, "Origin", eDataHistoryOrigin.Unknown);
if (Origin == eDataHistoryOrigin.Unknown)
Origin = cXmlParser.GetEnumFromAttribute<enumDataHistoryOrigin>(XNode, "Origin", enumDataHistoryOrigin.Unknown);
if (Origin == enumDataHistoryOrigin.Unknown)
{
Parser.AddMessage(XNode, $"The <DataCluster> element with Name='{Name}' has no valid 'Type' attribute.", LogLevels.Error);
return;
@@ -787,7 +774,7 @@ namespace C4IT.DataHistoryProvider
IsValid = true;
Name = "Main";
Origin = eDataHistoryOrigin.Main;
Origin = enumDataHistoryOrigin.Main;
InformationClass = enumFasdInformationClass.Main;
ParentConfig = Config;
@@ -892,10 +879,10 @@ namespace C4IT.DataHistoryProvider
ParentCluster = Cluster;
if (Cluster.Origin == eDataHistoryOrigin.Main && XNode.Name == "InformationClass")
if (Cluster.Origin == enumDataHistoryOrigin.Main && XNode.Name == "InformationClass")
IsBuildInTable = true;
if (Cluster.Origin == eDataHistoryOrigin.F4sdAgent || Cluster.Origin == eDataHistoryOrigin.M42Wpm || Cluster.Origin == eDataHistoryOrigin.Intune || Cluster.Origin == eDataHistoryOrigin.Citrix)
if (Cluster.Origin == enumDataHistoryOrigin.F4sdAgent || Cluster.Origin == enumDataHistoryOrigin.M42Wpm || Cluster.Origin == enumDataHistoryOrigin.Intune || Cluster.Origin == enumDataHistoryOrigin.Citrix)
IsVirtual = true;
Name = cXmlParser.GetStringFromXmlAttribute(XNode, "Name");

View File

@@ -301,7 +301,7 @@ namespace C4IT.DataHistoryProvider
RetVal |= DoXmlInsertElement(XmlRoot
, "TicketConfiguration"
, "OverviewPollingRole"
, $"<OverviewPollingRole Policy=\"Hidden\" Value=\"{cF4sdTicketConfig.DefaultOverviewPollingRoles}\" />"
, $"<OverviewPollingRole Policy=\"Hidden\" Value=\"{cF4sdTicketConfig.DefaultOverviewPollingRole}\" />"
);
#pragma warning disable CS0618 // Type or member is obsolete
var oldShowDocumentCaseDialog = InfrastructureConfig?.M42Wpm?.ShowDocumentCaseDialog ?? enumShowDocumentCaseDialog.ifRequired;

View File

@@ -162,18 +162,25 @@
</COMReference>
</ItemGroup>
<ItemGroup>
<PackageReference Include="C4IT.F4SD.DisplayFormatting" Version="1.0.0" />
<PackageReference Include="C4IT.F4SD.SupportCaseProtocoll" Version="1.0.0" />
<PackageReference Include="MaterialIcons" Version="1.0.3" NoWarn="NU1701" />
<PackageReference Include="Microsoft.Data.SqlClient" Version="6.1.0" />
<PackageReference Include="Microsoft.Bcl.TimeProvider" Version="10.0.2" />
<PackageReference Include="Microsoft.Data.SqlClient" Version="6.1.4" />
<PackageReference Include="Microsoft.Win32.Registry" Version="5.0.0" />
<PackageReference Include="Newtonsoft.Json" Version="13.0.3" />
<PackageReference Include="System.DirectoryServices" Version="9.0.7" />
<PackageReference Include="System.DirectoryServices.AccountManagement" Version="9.0.7" />
<PackageReference Include="System.DirectoryServices.Protocols" Version="9.0.7" />
<PackageReference Include="System.Drawing.Common" Version="9.0.7" />
<PackageReference Include="System.IdentityModel.Tokens.Jwt" Version="8.13.0" />
<PackageReference Include="Newtonsoft.Json" Version="13.0.4" />
<PackageReference Include="System.DirectoryServices" Version="10.0.2" />
<PackageReference Include="System.DirectoryServices.AccountManagement" Version="10.0.2" />
<PackageReference Include="System.DirectoryServices.Protocols" Version="10.0.2" />
<PackageReference Include="System.Drawing.Common" Version="10.0.2" />
<PackageReference Include="System.IdentityModel.Tokens.Jwt" Version="8.15.0" />
<PackageReference Include="System.IO.Pipelines" Version="10.0.2" />
<PackageReference Include="System.Runtime.CompilerServices.Unsafe" Version="6.1.2" />
<PackageReference Include="System.Security.Permissions" Version="9.0.7" />
<PackageReference Include="System.Configuration.ConfigurationManager" Version="9.0.7" />
<PackageReference Include="System.Security.Permissions" Version="10.0.2" />
<PackageReference Include="System.Configuration.ConfigurationManager" Version="10.0.2" />
<PackageReference Include="System.Text.Encodings.Web" Version="10.0.2" />
<PackageReference Include="System.Text.Json" Version="10.0.2" />
<PackageReference Include="System.ValueTuple" Version="4.6.1" />
</ItemGroup>
<Target Name="AfterBuild" AfterTargets="Build">
<PropertyGroup>

View File

@@ -762,6 +762,16 @@
<Table-Column Name="Description" Type="string" Cardinal="300" />
</Table-Columns>
</Table>
<Table Name="M42Wpm-Ticket-CloseCase-Categories" Type="Selection" Key="id">
<Matrix42-DataQueryItems-Template EntityClassName="SPSScCategoryClassBase" EntityTypeNames="SPSScCategoryType" OrderBy="" WhereExpression="Hidden = 0" />
<Table-Columns>
<Table-Column Name="id" SourceName="Id" Type="guid" />
<Table-Column Name="SysObjectId" SourceName="Sys-ObjectId" Type="guid" />
<Table-Column Name="SysName" SourceName="Sys-Name" Type="string" Cardinal="50" />
<Table-Column Name="Name" Type="string" Cardinal="300" />
<Table-Column Name="parent" SourceName="Parent_Value" Type="guid" />
</Table-Columns>
</Table>
<Table Name="M42Wpm-Ticket-Roles" Type="Selection" Key="id">
<Matrix42-DataQueryItems-Template EntityClassName="SPSScRoleClassBase" EntityTypeNames="SPSSecurityTypeRole" OrderBy="" WhereExpression="T(SPSSecurityClassRole).ShowInForwardAction = 1 AND T(SPSSecurityClassRole).Queue.ID IS NULL" />
<Table-Columns>

View File

@@ -16,7 +16,7 @@
<DisableAutomaticTimeTracking Policy="Mandatory" Value="true" />
<CompletitionPolicy Policy="Mandatory" Value="IfRequired" />
<NotesMandatory Policy="Mandatory" Value="true" />
<ShowOverview Policy="Mandatory" Value="true" />
<ShowOverview Policy="Mandatory" Value="false" />
<OverviewPollingPersonal Policy="Mandatory" Value="10" />
<OverviewPollingRole Policy="Mandatory" Value="5" />
</TicketConfiguration>

View File

@@ -948,7 +948,18 @@
</StateCategory>
<StateCategory Name="BshRegistryKeyExists" IsVisibleByParameter="BshRegistryKeyExists">
<State-Info Name="BshRegistryKeyExists" ValueTable="Computation_EmptyConstant" ValueColumn="default" />
</StateCategory>
<State-Info Name="Printers" ValueTable="agnt-computer-event-string" ValueColumn="BSH_Printers">
<Name Lang="DE">Drucker</Name>
<State-Details-Valued Format="json">
<State-Details-Column Name="Name" Description="Printer name" ValueColumn="Name" Display="STRING">
<Description Lang="DE">Druckername</Description>
</State-Details-Column>
<State-Details-Column Name="Is default" Description="Is selected default printer" ValueColumn="Default" Display="STRING">
<Description Lang="DE">Ist Standarddrucker</Description>
</State-Details-Column>
</State-Details-Valued>
</State-Info>
</StateCategory>
<StateCategory Name="BshRegistryKeyAbsent" IsVisibleByParameter="BshRegistryKeyAbsent">
<State-Info Name="BshRegistryKeyAbsent" ValueTable="Computation_EmptyConstant" ValueColumn="default" />
</StateCategory>
@@ -1051,7 +1062,7 @@
<State-Level Name="RAM/Memory free" Display="BYTES" ValueTable="agnt-computer-event-numerical" ValueColumn="MemoryFree" Warning="2147483648" Error="1073741824" Direction="down">
<Name Lang="DE">RAM/Arbeitsspeicher frei</Name>
</State-Level>
<State-Link Reference="RAM_Relative" Hidden="false" />
<State-Link Reference="RAM_Relative" />
</State-Aggregation>
<State-Aggregation Name="Hard disk storage">
<Name Lang="DE">Festplatten-Speicher</Name>

View File

@@ -102,6 +102,13 @@
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="ValuedFormat">
<xs:restriction base="xs:NCName">
<xs:enumeration value="csv" />
<xs:enumeration value="json" />
</xs:restriction>
</xs:simpleType>
<xs:attributeGroup name="ValuePointer">
<xs:attribute name="Name" type="xs:string" use="optional" />
<xs:attribute name="ParameterName" type="xs:NCName" use="optional" />
@@ -543,7 +550,8 @@
<xs:complexType>
<xs:complexContent>
<xs:extension base="State-Details-Base">
<xs:attribute name="RowSeparator" type="xs:string" use="required"/>
<xs:attribute name="Format" type="ValuedFormat" use="optional"/>
<xs:attribute name="RowSeparator" type="xs:string" use="optional"/>
<xs:attribute name="ColSeparator" type="xs:string" use="optional"/>
<xs:attribute name="StringDecorator" type="Separator" use="optional"/>
</xs:extension>

View File

@@ -76,7 +76,9 @@
</AD-Scans>
</Active-Directory>
<Azure-AD>
<Azure-Tenant Domain="c4it365.onmicrosoft.com" TenantID="8f773186-362b-4432-a3e9-d3ad4685f3f1" Credential="AzureAccess" ScanIntuneDevices = "true" WithMobileDevices="true"/>
<Azure-Tenant Domain="c4it365.onmicrosoft.com" TenantID="8f773186-362b-4432-a3e9-d3ad4685f3f1" Credential="AzureAccess" ScanIntuneDevices = "true" WithMobileDevices="true">
<Azure-Scan-Filter UseConsistencyLevelEventual="true">onPremisesExtensionAttributes/extensionAttribute8 in (&apos;C4IT&apos;, &apos;TS4U&apos;) and userType eq &apos;member&apos; and accountEnabled eq true</Azure-Scan-Filter>
</Azure-Tenant>
<!--<Azure-Tenant Domain="sd0024.onmicrosoft.com" TenantID="07362148-410e-4636-a9cb-795fba1a5452" Credential="AzureAccess_Dieter"/>-->
</Azure-AD>
<Matrix42-WPM Server="srvwsm001.imagoverum.com" Credential="M42API-Demo" ClosedTicketHistory="9999" DisplayName="M42 Demo server (imagoverum)" ApiTokenLifetime ="30 days" ActivityQueueFilter="ticketsAndListedQueues">

View File

@@ -1,8 +1,9 @@
using C4IT.FASD.Base;
using F4SDwebService;
using System;
using System;
using System.Web.Http;
using C4IT.FASD.Base;
using F4SDwebService;
namespace FasdWebService.Controllers
{
public class CheckConnectionController : ApiController

View File

@@ -0,0 +1,122 @@
using C4IT.DataHistoryProvider;
using C4IT.FASD.Base;
using C4IT.Logging;
using F4SDwebService;
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Reflection;
using System.Threading;
using System.Threading.Tasks;
using System.Web.Http;
using static C4IT.Logging.cLogManager;
namespace FasdWebService.Controllers
{
[RoutePrefix("api/TicketOverview")]
public class TicketOverviewController : ApiController
{
private static bool IsTicketOverviewEnabled()
{
return WebApiApplication.Collector?.GetGlobalConfig()?.TicketConfiguration?.ShowOverview == true;
}
[HttpGet]
[Route("GetCounts")]
public async Task<IHttpActionResult> GetCounts(string scope = "personal", string keys = "")
{
MethodBase CM = null; if (cLogManager.DefaultLogger.IsDebug) { CM = MethodBase.GetCurrentMethod(); LogMethodBegin(CM); }
var requestInfo = new cF4sdWebRequestInfo("TicketOverview.GetCounts", scope ?? string.Empty, cAuthentication.GetUserInfo(ActionContext));
if (cPerformanceLogger.IsActive && requestInfo != null) { cPerformanceLogger.LogPerformanceStart(0, requestInfo.requestName, requestInfo.id, requestInfo.created); }
var apiError = 0;
try
{
if (!IsTicketOverviewEnabled())
{
return Ok(new TicketOverviewCountsResult());
}
var collector = WebApiApplication.Collector?.M42WpmCollector;
if (collector == null)
{
return Ok(new TicketOverviewCountsResult());
}
var useRoleScope = string.Equals(scope, "role", StringComparison.OrdinalIgnoreCase);
var normalizedKeys = (keys ?? string.Empty)
.Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries)
.Select(k => k.Trim())
.Where(k => !string.IsNullOrWhiteSpace(k))
.Distinct(StringComparer.OrdinalIgnoreCase)
.ToList();
var counts = await collector.GetTicketOverviewCountsAsync(normalizedKeys, useRoleScope, requestInfo, 1, CancellationToken.None);
return Ok(new TicketOverviewCountsResult { Counts = counts });
}
catch (Exception E)
{
apiError = E.HResult;
LogException(E);
}
finally
{
if (WebApiApplication.Debug_apiTiming) WebApiApplication.SaveApiTimingEntry(requestInfo.requestName, requestInfo.id, requestInfo.created, apiError);
if (cPerformanceLogger.IsActive && requestInfo != null) { cPerformanceLogger.LogPerformanceEnd(0, requestInfo.requestName, requestInfo.id, requestInfo.created, requestInfo.created, ErrorCode: apiError); }
if (CM != null) LogMethodEnd(CM);
}
return Ok(new TicketOverviewCountsResult());
}
[HttpGet]
[Route("GetRelations")]
public async Task<IHttpActionResult> GetRelations(string key, string scope = "personal", int count = 0)
{
MethodBase CM = null; if (cLogManager.DefaultLogger.IsDebug) { CM = MethodBase.GetCurrentMethod(); LogMethodBegin(CM); }
var requestInfo = new cF4sdWebRequestInfo("TicketOverview.GetRelations", key ?? string.Empty, cAuthentication.GetUserInfo(ActionContext));
if (cPerformanceLogger.IsActive && requestInfo != null) { cPerformanceLogger.LogPerformanceStart(0, requestInfo.requestName, requestInfo.id, requestInfo.created); }
var apiError = 0;
try
{
if (!IsTicketOverviewEnabled())
{
return Ok(new List<cF4sdApiSearchResultRelation>());
}
var collector = WebApiApplication.Collector?.M42WpmCollector;
if (collector == null)
{
return Ok(new List<cF4sdApiSearchResultRelation>());
}
var useRoleScope = string.Equals(scope, "role", StringComparison.OrdinalIgnoreCase);
var relations = await collector.GetTicketOverviewRelationsAsync(key, useRoleScope, Math.Max(0, count), requestInfo, 1, CancellationToken.None);
return Ok(relations ?? new List<cF4sdApiSearchResultRelation>());
}
catch (Exception E)
{
apiError = E.HResult;
LogException(E);
}
finally
{
if (WebApiApplication.Debug_apiTiming) WebApiApplication.SaveApiTimingEntry(requestInfo.requestName, requestInfo.id, requestInfo.created, apiError);
if (cPerformanceLogger.IsActive && requestInfo != null) { cPerformanceLogger.LogPerformanceEnd(0, requestInfo.requestName, requestInfo.id, requestInfo.created, requestInfo.created, ErrorCode: apiError); }
if (CM != null) LogMethodEnd(CM);
}
return Ok(new List<cF4sdApiSearchResultRelation>());
}
}
public class TicketOverviewCountsResult
{
[JsonProperty("counts")]
public Dictionary<string, int> Counts { get; set; } = new Dictionary<string, int>(StringComparer.OrdinalIgnoreCase);
}
}

View File

@@ -50,75 +50,78 @@
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<ItemGroup>
<Reference Include="Azure.Core, Version=1.47.1.0, Culture=neutral, PublicKeyToken=92742159e12e44c8, processorArchitecture=MSIL">
<HintPath>..\packages\Azure.Core.1.47.1\lib\net472\Azure.Core.dll</HintPath>
<Reference Include="Azure.Core, Version=1.50.0.0, Culture=neutral, PublicKeyToken=92742159e12e44c8, processorArchitecture=MSIL">
<HintPath>..\packages\Azure.Core.1.50.0\lib\net472\Azure.Core.dll</HintPath>
</Reference>
<Reference Include="Azure.Identity, Version=1.14.2.0, Culture=neutral, PublicKeyToken=92742159e12e44c8, processorArchitecture=MSIL">
<HintPath>..\packages\Azure.Identity.1.14.2\lib\netstandard2.0\Azure.Identity.dll</HintPath>
<Reference Include="Azure.Identity, Version=1.17.1.0, Culture=neutral, PublicKeyToken=92742159e12e44c8, processorArchitecture=MSIL">
<HintPath>..\packages\Azure.Identity.1.17.1\lib\netstandard2.0\Azure.Identity.dll</HintPath>
</Reference>
<Reference Include="Microsoft.Bcl.AsyncInterfaces, Version=9.0.0.7, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.Bcl.AsyncInterfaces.9.0.7\lib\net462\Microsoft.Bcl.AsyncInterfaces.dll</HintPath>
<Reference Include="C4IT.F4SD.DisplayFormatting, Version=1.0.9509.21303, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\C4IT.F4SD.DisplayFormatting.1.0.0\lib\netstandard2.0\C4IT.F4SD.DisplayFormatting.dll</HintPath>
</Reference>
<Reference Include="Microsoft.Bcl.Cryptography, Version=9.0.0.7, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.Bcl.Cryptography.9.0.7\lib\net462\Microsoft.Bcl.Cryptography.dll</HintPath>
<Reference Include="Microsoft.Bcl.AsyncInterfaces, Version=10.0.0.2, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.Bcl.AsyncInterfaces.10.0.2\lib\net462\Microsoft.Bcl.AsyncInterfaces.dll</HintPath>
</Reference>
<Reference Include="Microsoft.Bcl.TimeProvider, Version=9.0.0.7, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.Bcl.TimeProvider.9.0.7\lib\net462\Microsoft.Bcl.TimeProvider.dll</HintPath>
<Reference Include="Microsoft.Bcl.Cryptography, Version=10.0.0.2, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.Bcl.Cryptography.10.0.2\lib\net462\Microsoft.Bcl.Cryptography.dll</HintPath>
</Reference>
<Reference Include="Microsoft.Bcl.TimeProvider, Version=10.0.0.2, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.Bcl.TimeProvider.10.0.2\lib\net462\Microsoft.Bcl.TimeProvider.dll</HintPath>
</Reference>
<Reference Include="Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=4.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.4.1.0\lib\net472\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.dll</HintPath>
</Reference>
<Reference Include="Microsoft.CSharp" />
<Reference Include="Microsoft.Data.SqlClient, Version=6.0.0.0, Culture=neutral, PublicKeyToken=23ec7fc2d6eaa4a5, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.Data.SqlClient.6.1.0\lib\net462\Microsoft.Data.SqlClient.dll</HintPath>
<HintPath>..\packages\Microsoft.Data.SqlClient.6.1.4\lib\net462\Microsoft.Data.SqlClient.dll</HintPath>
</Reference>
<Reference Include="Microsoft.Extensions.Caching.Abstractions, Version=9.0.0.7, Culture=neutral, PublicKeyToken=adb9793829ddae60, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.Extensions.Caching.Abstractions.9.0.7\lib\net462\Microsoft.Extensions.Caching.Abstractions.dll</HintPath>
<Reference Include="Microsoft.Extensions.Caching.Abstractions, Version=10.0.0.2, Culture=neutral, PublicKeyToken=adb9793829ddae60, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.Extensions.Caching.Abstractions.10.0.2\lib\net462\Microsoft.Extensions.Caching.Abstractions.dll</HintPath>
</Reference>
<Reference Include="Microsoft.Extensions.Caching.Memory, Version=9.0.0.7, Culture=neutral, PublicKeyToken=adb9793829ddae60, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.Extensions.Caching.Memory.9.0.7\lib\net462\Microsoft.Extensions.Caching.Memory.dll</HintPath>
<Reference Include="Microsoft.Extensions.Caching.Memory, Version=10.0.0.2, Culture=neutral, PublicKeyToken=adb9793829ddae60, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.Extensions.Caching.Memory.10.0.2\lib\net462\Microsoft.Extensions.Caching.Memory.dll</HintPath>
</Reference>
<Reference Include="Microsoft.Extensions.DependencyInjection.Abstractions, Version=9.0.0.7, Culture=neutral, PublicKeyToken=adb9793829ddae60, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.Extensions.DependencyInjection.Abstractions.9.0.7\lib\net462\Microsoft.Extensions.DependencyInjection.Abstractions.dll</HintPath>
<Reference Include="Microsoft.Extensions.DependencyInjection.Abstractions, Version=10.0.0.2, Culture=neutral, PublicKeyToken=adb9793829ddae60, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.Extensions.DependencyInjection.Abstractions.10.0.2\lib\net462\Microsoft.Extensions.DependencyInjection.Abstractions.dll</HintPath>
</Reference>
<Reference Include="Microsoft.Extensions.Logging.Abstractions, Version=9.0.0.7, Culture=neutral, PublicKeyToken=adb9793829ddae60, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.Extensions.Logging.Abstractions.9.0.7\lib\net462\Microsoft.Extensions.Logging.Abstractions.dll</HintPath>
<Reference Include="Microsoft.Extensions.Logging.Abstractions, Version=10.0.0.2, Culture=neutral, PublicKeyToken=adb9793829ddae60, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.Extensions.Logging.Abstractions.10.0.2\lib\net462\Microsoft.Extensions.Logging.Abstractions.dll</HintPath>
</Reference>
<Reference Include="Microsoft.Extensions.Options, Version=9.0.0.7, Culture=neutral, PublicKeyToken=adb9793829ddae60, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.Extensions.Options.9.0.7\lib\net462\Microsoft.Extensions.Options.dll</HintPath>
<Reference Include="Microsoft.Extensions.Options, Version=10.0.0.2, Culture=neutral, PublicKeyToken=adb9793829ddae60, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.Extensions.Options.10.0.2\lib\net462\Microsoft.Extensions.Options.dll</HintPath>
</Reference>
<Reference Include="Microsoft.Extensions.Primitives, Version=9.0.0.7, Culture=neutral, PublicKeyToken=adb9793829ddae60, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.Extensions.Primitives.9.0.7\lib\net462\Microsoft.Extensions.Primitives.dll</HintPath>
<Reference Include="Microsoft.Extensions.Primitives, Version=10.0.0.2, Culture=neutral, PublicKeyToken=adb9793829ddae60, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.Extensions.Primitives.10.0.2\lib\net462\Microsoft.Extensions.Primitives.dll</HintPath>
</Reference>
<Reference Include="Microsoft.Identity.Client, Version=4.74.1.0, Culture=neutral, PublicKeyToken=0a613f4dd989e8ae, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.Identity.Client.4.74.1\lib\net472\Microsoft.Identity.Client.dll</HintPath>
<Reference Include="Microsoft.Identity.Client, Version=4.81.0.0, Culture=neutral, PublicKeyToken=0a613f4dd989e8ae, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.Identity.Client.4.81.0\lib\net472\Microsoft.Identity.Client.dll</HintPath>
</Reference>
<Reference Include="Microsoft.Identity.Client.Extensions.Msal, Version=4.74.1.0, Culture=neutral, PublicKeyToken=0a613f4dd989e8ae, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.Identity.Client.Extensions.Msal.4.74.1\lib\netstandard2.0\Microsoft.Identity.Client.Extensions.Msal.dll</HintPath>
<Reference Include="Microsoft.Identity.Client.Extensions.Msal, Version=4.81.0.0, Culture=neutral, PublicKeyToken=0a613f4dd989e8ae, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.Identity.Client.Extensions.Msal.4.81.0\lib\netstandard2.0\Microsoft.Identity.Client.Extensions.Msal.dll</HintPath>
</Reference>
<Reference Include="Microsoft.IdentityModel.Abstractions, Version=8.13.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.IdentityModel.Abstractions.8.13.0\lib\net472\Microsoft.IdentityModel.Abstractions.dll</HintPath>
<Reference Include="Microsoft.IdentityModel.Abstractions, Version=8.15.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.IdentityModel.Abstractions.8.15.0\lib\net472\Microsoft.IdentityModel.Abstractions.dll</HintPath>
</Reference>
<Reference Include="Microsoft.IdentityModel.JsonWebTokens, Version=8.13.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.IdentityModel.JsonWebTokens.8.13.0\lib\net472\Microsoft.IdentityModel.JsonWebTokens.dll</HintPath>
<Reference Include="Microsoft.IdentityModel.JsonWebTokens, Version=8.15.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.IdentityModel.JsonWebTokens.8.15.0\lib\net472\Microsoft.IdentityModel.JsonWebTokens.dll</HintPath>
</Reference>
<Reference Include="Microsoft.IdentityModel.Logging, Version=8.13.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.IdentityModel.Logging.8.13.0\lib\net472\Microsoft.IdentityModel.Logging.dll</HintPath>
<Reference Include="Microsoft.IdentityModel.Logging, Version=8.15.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.IdentityModel.Logging.8.15.0\lib\net472\Microsoft.IdentityModel.Logging.dll</HintPath>
</Reference>
<Reference Include="Microsoft.IdentityModel.Protocols, Version=8.13.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.IdentityModel.Protocols.8.13.0\lib\net472\Microsoft.IdentityModel.Protocols.dll</HintPath>
<Reference Include="Microsoft.IdentityModel.Protocols, Version=8.15.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.IdentityModel.Protocols.8.15.0\lib\net472\Microsoft.IdentityModel.Protocols.dll</HintPath>
</Reference>
<Reference Include="Microsoft.IdentityModel.Protocols.OpenIdConnect, Version=8.13.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.IdentityModel.Protocols.OpenIdConnect.8.13.0\lib\net472\Microsoft.IdentityModel.Protocols.OpenIdConnect.dll</HintPath>
<Reference Include="Microsoft.IdentityModel.Protocols.OpenIdConnect, Version=8.15.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.IdentityModel.Protocols.OpenIdConnect.8.15.0\lib\net472\Microsoft.IdentityModel.Protocols.OpenIdConnect.dll</HintPath>
</Reference>
<Reference Include="Microsoft.IdentityModel.Tokens, Version=8.13.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.IdentityModel.Tokens.8.13.0\lib\net472\Microsoft.IdentityModel.Tokens.dll</HintPath>
<Reference Include="Microsoft.IdentityModel.Tokens, Version=8.15.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.IdentityModel.Tokens.8.15.0\lib\net472\Microsoft.IdentityModel.Tokens.dll</HintPath>
</Reference>
<Reference Include="Microsoft.Web.Infrastructure, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.Web.Infrastructure.2.0.0\lib\net40\Microsoft.Web.Infrastructure.dll</HintPath>
</Reference>
<Reference Include="Newtonsoft.Json, Version=13.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
<HintPath>..\packages\Newtonsoft.Json.13.0.3\lib\net45\Newtonsoft.Json.dll</HintPath>
<HintPath>..\packages\Newtonsoft.Json.13.0.4\lib\net45\Newtonsoft.Json.dll</HintPath>
</Reference>
<Reference Include="Newtonsoft.Json.Bson, Version=1.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
<HintPath>..\packages\Newtonsoft.Json.Bson.1.0.3\lib\net45\Newtonsoft.Json.Bson.dll</HintPath>
@@ -127,11 +130,11 @@
<Reference Include="System.Buffers, Version=4.0.5.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>..\packages\System.Buffers.4.6.1\lib\net462\System.Buffers.dll</HintPath>
</Reference>
<Reference Include="System.ClientModel, Version=1.5.1.0, Culture=neutral, PublicKeyToken=92742159e12e44c8, processorArchitecture=MSIL">
<HintPath>..\packages\System.ClientModel.1.5.1\lib\netstandard2.0\System.ClientModel.dll</HintPath>
<Reference Include="System.ClientModel, Version=1.8.1.0, Culture=neutral, PublicKeyToken=92742159e12e44c8, processorArchitecture=MSIL">
<HintPath>..\packages\System.ClientModel.1.8.1\lib\netstandard2.0\System.ClientModel.dll</HintPath>
</Reference>
<Reference Include="System.Configuration.ConfigurationManager, Version=9.0.0.7, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>..\packages\System.Configuration.ConfigurationManager.9.0.7\lib\net462\System.Configuration.ConfigurationManager.dll</HintPath>
<Reference Include="System.Configuration.ConfigurationManager, Version=10.0.0.2, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>..\packages\System.Configuration.ConfigurationManager.10.0.2\lib\net462\System.Configuration.ConfigurationManager.dll</HintPath>
</Reference>
<Reference Include="System.Data" />
<Reference Include="System.Data.Common, Version=4.1.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
@@ -140,29 +143,29 @@
<Private>True</Private>
</Reference>
<Reference Include="System.Data.OracleClient" />
<Reference Include="System.Diagnostics.DiagnosticSource, Version=9.0.0.7, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>..\packages\System.Diagnostics.DiagnosticSource.9.0.7\lib\net462\System.Diagnostics.DiagnosticSource.dll</HintPath>
<Reference Include="System.Diagnostics.DiagnosticSource, Version=10.0.0.2, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>..\packages\System.Diagnostics.DiagnosticSource.10.0.2\lib\net462\System.Diagnostics.DiagnosticSource.dll</HintPath>
</Reference>
<Reference Include="System.DirectoryServices" />
<Reference Include="System.Drawing" />
<Reference Include="System.Formats.Asn1, Version=9.0.0.7, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>..\packages\System.Formats.Asn1.9.0.7\lib\net462\System.Formats.Asn1.dll</HintPath>
<Reference Include="System.Formats.Asn1, Version=10.0.0.2, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>..\packages\System.Formats.Asn1.10.0.2\lib\net462\System.Formats.Asn1.dll</HintPath>
</Reference>
<Reference Include="System.IdentityModel" />
<Reference Include="System.IdentityModel.Tokens.Jwt, Version=8.13.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<HintPath>..\packages\System.IdentityModel.Tokens.Jwt.8.13.0\lib\net472\System.IdentityModel.Tokens.Jwt.dll</HintPath>
<Reference Include="System.IdentityModel.Tokens.Jwt, Version=8.15.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<HintPath>..\packages\System.IdentityModel.Tokens.Jwt.8.15.0\lib\net472\System.IdentityModel.Tokens.Jwt.dll</HintPath>
</Reference>
<Reference Include="System.IO.FileSystem.AccessControl, Version=5.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\System.IO.FileSystem.AccessControl.5.0.0\lib\net461\System.IO.FileSystem.AccessControl.dll</HintPath>
</Reference>
<Reference Include="System.IO.Pipelines, Version=9.0.0.7, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>..\packages\System.IO.Pipelines.9.0.7\lib\net462\System.IO.Pipelines.dll</HintPath>
<Reference Include="System.IO.Pipelines, Version=10.0.0.2, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>..\packages\System.IO.Pipelines.10.0.2\lib\net462\System.IO.Pipelines.dll</HintPath>
</Reference>
<Reference Include="System.Memory, Version=4.0.5.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>..\packages\System.Memory.4.6.3\lib\net462\System.Memory.dll</HintPath>
</Reference>
<Reference Include="System.Memory.Data, Version=9.0.0.7, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>..\packages\System.Memory.Data.9.0.7\lib\net462\System.Memory.Data.dll</HintPath>
<Reference Include="System.Memory.Data, Version=10.0.0.2, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>..\packages\System.Memory.Data.10.0.2\lib\net462\System.Memory.Data.dll</HintPath>
</Reference>
<Reference Include="System.Net" />
<Reference Include="System.Net.Http.Formatting, Version=6.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
@@ -184,24 +187,29 @@
<Reference Include="System.Security.AccessControl, Version=6.0.0.1, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\System.Security.AccessControl.6.0.1\lib\net461\System.Security.AccessControl.dll</HintPath>
</Reference>
<Reference Include="System.Security.Cryptography.Pkcs, Version=9.0.0.7, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\System.Security.Cryptography.Pkcs.9.0.7\lib\net462\System.Security.Cryptography.Pkcs.dll</HintPath>
<Reference Include="System.Security.Cryptography.Pkcs, Version=10.0.0.2, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\System.Security.Cryptography.Pkcs.10.0.2\lib\net462\System.Security.Cryptography.Pkcs.dll</HintPath>
</Reference>
<Reference Include="System.Security.Cryptography.ProtectedData, Version=9.0.0.7, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\System.Security.Cryptography.ProtectedData.9.0.7\lib\net462\System.Security.Cryptography.ProtectedData.dll</HintPath>
<Reference Include="System.Security.Cryptography.ProtectedData, Version=10.0.0.2, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\System.Security.Cryptography.ProtectedData.10.0.2\lib\net462\System.Security.Cryptography.ProtectedData.dll</HintPath>
</Reference>
<Reference Include="System.Security.Permissions, Version=9.0.0.7, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>..\packages\System.Security.Permissions.9.0.7\lib\net462\System.Security.Permissions.dll</HintPath>
<Reference Include="System.Security.Permissions, Version=10.0.0.2, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>..\packages\System.Security.Permissions.10.0.2\lib\net462\System.Security.Permissions.dll</HintPath>
</Reference>
<Reference Include="System.Security.Principal.Windows, Version=5.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\System.Security.Principal.Windows.5.0.0\lib\net461\System.Security.Principal.Windows.dll</HintPath>
</Reference>
<Reference Include="System.ServiceProcess" />
<Reference Include="System.Text.Encodings.Web, Version=9.0.0.7, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>..\packages\System.Text.Encodings.Web.9.0.7\lib\net462\System.Text.Encodings.Web.dll</HintPath>
<Reference Include="System.Text.Encodings.Web, Version=10.0.0.2, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>..\packages\System.Text.Encodings.Web.10.0.2\lib\net462\System.Text.Encodings.Web.dll</HintPath>
</Reference>
<Reference Include="System.Text.Json, Version=9.0.0.7, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>..\packages\System.Text.Json.9.0.7\lib\net462\System.Text.Json.dll</HintPath>
<Reference Include="System.Text.Json, Version=10.0.0.2, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>..\packages\System.Text.Json.10.0.2\lib\net462\System.Text.Json.dll</HintPath>
</Reference>
<Reference Include="System.Text.RegularExpressions, Version=4.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\System.Text.RegularExpressions.4.3.1\lib\net463\System.Text.RegularExpressions.dll</HintPath>
<Private>True</Private>
<Private>True</Private>
</Reference>
<Reference Include="System.Threading.Tasks.Extensions, Version=4.2.4.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>..\packages\System.Threading.Tasks.Extensions.4.6.3\lib\net462\System.Threading.Tasks.Extensions.dll</HintPath>
@@ -310,14 +318,15 @@
<Compile Include="Controllers\GetRawDataController.cs" />
<Compile Include="Controllers\GetSelectionDataController.cs" />
<Compile Include="Controllers\HomeController.cs" />
<Compile Include="Controllers\QuickActionDataController.cs" />
<Compile Include="Controllers\LogonController.cs" />
<Compile Include="Controllers\Matrix42\Matrix42TicketFinalization.cs" />
<Compile Include="Controllers\SearchDefault.cs" />
<Compile Include="Controllers\F4SDAnalyticsDataController.cs" />
<Compile Include="Controllers\StagedSearchRelationController.cs" />
<Compile Include="Controllers\UsageController.cs" />
<Compile Include="Controllers\WritePropertyController.cs" />
<Compile Include="Controllers\QuickActionDataController.cs" />
<Compile Include="Controllers\LogonController.cs" />
<Compile Include="Controllers\Matrix42\Matrix42TicketFinalization.cs" />
<Compile Include="Controllers\SearchDefault.cs" />
<Compile Include="Controllers\F4SDAnalyticsDataController.cs" />
<Compile Include="Controllers\TicketOverviewController.cs" />
<Compile Include="Controllers\StagedSearchRelationController.cs" />
<Compile Include="Controllers\UsageController.cs" />
<Compile Include="Controllers\WritePropertyController.cs" />
<Compile Include="Global.asax.cs">
<DependentUpon>Global.asax</DependentUpon>
</Compile>
@@ -683,4 +692,4 @@ copy "$(ProjectDir)..\C4IT_DataHistoryProvider_Test\License\*" "$(ProjectDir)Lic
</Target>
<Target Name="AfterBuild">
</Target> -->
</Project>
</Project>

View File

@@ -1,12 +1,12 @@
<?xml version="1.0" encoding="utf-8"?>
<C4IT-License-Info Product="First Aid Service Desk (F4SD)" Id="776D99A6-D341-4B70-BA4B-2CC55B76A079">
<License Id="FAE53860-0AE2-4A15-A5D5-7E56D4D29FDE" Revision="1.0" Type="PRODUCTIVE" Customer="Consulting4IT" CustomerId="A3A5E66E-6A91-44E2-9F3A-F04C67642BCB" StartDate="2024-12-01" EndDate="2025-12-31" Signature="SeNeSrKAq/rnvCVui7TMBHkTS4AnygizDBNdLe1w7EdMGaQ2xxTvOcsOrshwqznK/shgGvxofdux0YWV3XyxWeeGwfKqjPobWOnKhp5v3xfeVk+59dx29Yn3/4j+vcJrs8kBhOrZEAkeAHojFVZYsO/SbqWoOcqP5fDw673gjW8=">
<License Id="FAE53860-0AE2-4A15-A5D5-7E56D4D29FDE" Revision="1.0" Type="PRODUCTIVE" Customer="Consulting4IT" CustomerId="A3A5E66E-6A91-44E2-9F3A-F04C67642BCB" StartDate="2024-12-01" EndDate="2026-12-31" Signature="A3u3fZ5bU5p3CikLiOyCMdrsJCLtvQkdbUcIhPfo0gZruL4jvy/cXGeqwHgCNK4P+vVJi+7XtxfBvefTFVAs4QT2vSP+m7DPj1CB//zLOEhUHQVqim3KyQiIWtlMi/hruO+XKL6BAOYuNsSOR3eit95e9JPc60qNNL4gArdGe5I=">
<License-Metrics Type="ManagedUsers" Count="10000" />
<Modules>
<Module Name="F4SD client agent connector" Id="F8A3284C-E481-4D08-A921-949D2EBD4E0B" />
<Module Name="MS Active Directory connector" Id="B2D48023-56E8-44D5-AB77-BE1DCF4EA4EB" />
<Module Name="Matrix42 WPM conntector" Id="9CE1A6BE-6A0C-4A27-94A5-44AB997B8E62" />
<Module Name="Nexthink NXQL conntector" Id="51EA7764-3AD3-4F90-89DB-DEB0C60D655C" />
<Module Name="Nexthink NXQL conntector" Id="51EA7764-3AD3-4F90-89DB-DEB0C60D655C" />
</Modules>
</License>
</C4IT-License-Info>

View File

@@ -762,6 +762,16 @@
<Table-Column Name="Description" Type="string" Cardinal="300" />
</Table-Columns>
</Table>
<Table Name="M42Wpm-Ticket-CloseCase-Categories" Type="Selection" Key="id">
<Matrix42-DataQueryItems-Template EntityClassName="SPSScCategoryClassBase" EntityTypeNames="SPSScCategoryType" OrderBy="" WhereExpression="Hidden = 0" />
<Table-Columns>
<Table-Column Name="id" SourceName="Id" Type="guid" />
<Table-Column Name="SysObjectId" SourceName="Sys-ObjectId" Type="guid" />
<Table-Column Name="SysName" SourceName="Sys-Name" Type="string" Cardinal="50" />
<Table-Column Name="Name" Type="string" Cardinal="300" />
<Table-Column Name="parent" SourceName="Parent_Value" Type="guid" />
</Table-Columns>
</Table>
<Table Name="M42Wpm-Ticket-Roles" Type="Selection" Key="id">
<Matrix42-DataQueryItems-Template EntityClassName="SPSScRoleClassBase" EntityTypeNames="SPSSecurityTypeRole" OrderBy="" WhereExpression="T(SPSSecurityClassRole).ShowInForwardAction = 1 AND T(SPSSecurityClassRole).Queue.ID IS NULL" />
<Table-Columns>

View File

@@ -16,7 +16,7 @@
<DisableAutomaticTimeTracking Policy="Mandatory" Value="true" />
<CompletitionPolicy Policy="Mandatory" Value="IfRequired" />
<NotesMandatory Policy="Mandatory" Value="true" />
<ShowOverview Policy="Mandatory" Value="true" />
<ShowOverview Policy="Mandatory" Value="false" />
<OverviewPollingPersonal Policy="Mandatory" Value="10" />
<OverviewPollingRole Policy="Mandatory" Value="5" />
</TicketConfiguration>

View File

@@ -948,7 +948,18 @@
</StateCategory>
<StateCategory Name="BshRegistryKeyExists" IsVisibleByParameter="BshRegistryKeyExists">
<State-Info Name="BshRegistryKeyExists" ValueTable="Computation_EmptyConstant" ValueColumn="default" />
</StateCategory>
<State-Info Name="Printers" ValueTable="agnt-computer-event-string" ValueColumn="BSH_Printers">
<Name Lang="DE">Drucker</Name>
<State-Details-Valued Format="json">
<State-Details-Column Name="Name" Description="Printer name" ValueColumn="Name" Display="STRING">
<Description Lang="DE">Druckername</Description>
</State-Details-Column>
<State-Details-Column Name="Is default" Description="Is selected default printer" ValueColumn="Default" Display="STRING">
<Description Lang="DE">Ist Standarddrucker</Description>
</State-Details-Column>
</State-Details-Valued>
</State-Info>
</StateCategory>
<StateCategory Name="BshRegistryKeyAbsent" IsVisibleByParameter="BshRegistryKeyAbsent">
<State-Info Name="BshRegistryKeyAbsent" ValueTable="Computation_EmptyConstant" ValueColumn="default" />
</StateCategory>
@@ -1051,7 +1062,7 @@
<State-Level Name="RAM/Memory free" Display="BYTES" ValueTable="agnt-computer-event-numerical" ValueColumn="MemoryFree" Warning="2147483648" Error="1073741824" Direction="down">
<Name Lang="DE">RAM/Arbeitsspeicher frei</Name>
</State-Level>
<State-Link Reference="RAM_Relative" Hidden="false" />
<State-Link Reference="RAM_Relative" />
</State-Aggregation>
<State-Aggregation Name="Hard disk storage">
<Name Lang="DE">Festplatten-Speicher</Name>

View File

@@ -102,6 +102,13 @@
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="ValuedFormat">
<xs:restriction base="xs:NCName">
<xs:enumeration value="csv" />
<xs:enumeration value="json" />
</xs:restriction>
</xs:simpleType>
<xs:attributeGroup name="ValuePointer">
<xs:attribute name="Name" type="xs:string" use="optional" />
<xs:attribute name="ParameterName" type="xs:NCName" use="optional" />
@@ -543,7 +550,8 @@
<xs:complexType>
<xs:complexContent>
<xs:extension base="State-Details-Base">
<xs:attribute name="RowSeparator" type="xs:string" use="required"/>
<xs:attribute name="Format" type="ValuedFormat" use="optional"/>
<xs:attribute name="RowSeparator" type="xs:string" use="optional"/>
<xs:attribute name="ColSeparator" type="xs:string" use="optional"/>
<xs:attribute name="StringDecorator" type="Separator" use="optional"/>
</xs:extension>

View File

@@ -76,7 +76,9 @@
</AD-Scans>
</Active-Directory>
<Azure-AD>
<Azure-Tenant Domain="c4it365.onmicrosoft.com" TenantID="8f773186-362b-4432-a3e9-d3ad4685f3f1" Credential="AzureAccess" ScanIntuneDevices = "true" WithMobileDevices="true"/>
<Azure-Tenant Domain="c4it365.onmicrosoft.com" TenantID="8f773186-362b-4432-a3e9-d3ad4685f3f1" Credential="AzureAccess" ScanIntuneDevices = "true" WithMobileDevices="true">
<Azure-Scan-Filter UseConsistencyLevelEventual="true">onPremisesExtensionAttributes/extensionAttribute8 in (&apos;C4IT&apos;, &apos;TS4U&apos;) and userType eq &apos;member&apos; and accountEnabled eq true</Azure-Scan-Filter>
</Azure-Tenant>
<!--<Azure-Tenant Domain="sd0024.onmicrosoft.com" TenantID="07362148-410e-4636-a9cb-795fba1a5452" Credential="AzureAccess_Dieter"/>-->
</Azure-AD>
<Matrix42-WPM Server="srvwsm001.imagoverum.com" Credential="M42API-Demo" ClosedTicketHistory="9999" DisplayName="M42 Demo server (imagoverum)" ApiTokenLifetime ="30 days" ActivityQueueFilter="ticketsAndListedQueues">

View File

@@ -366,7 +366,8 @@
<xs:element name="Azure-Tenant">
<xs:complexType>
<xs:sequence>
</xs:sequence>
<xs:element ref="Azure-Scan-Filter" maxOccurs="1" minOccurs="0"/>
</xs:sequence>
<xs:attribute name="Domain" type="xs:string" use="required"/>
<xs:attribute name="TenantID" type="guid" use="required"/>
<xs:attribute name="Credential" type="xs:NCName" use="required"/>
@@ -379,7 +380,11 @@
</xs:keyref>
</xs:element>
<xs:element name="Citrix">
<xs:element name="Azure-Scan-Filter">
</xs:element>
<xs:element name="Citrix">
<xs:complexType>
<xs:sequence>
<xs:element ref="Scan-Timing" maxOccurs="1" minOccurs="0"/>

View File

@@ -1,12 +1,12 @@
<?xml version="1.0" encoding="utf-8"?>
<C4IT-License-Info Product="First Aid Service Desk (F4SD)" Id="776D99A6-D341-4B70-BA4B-2CC55B76A079">
<License Id="FAE53860-0AE2-4A15-A5D5-7E56D4D29FDE" Revision="1.0" Type="PRODUCTIVE" Customer="Consulting4IT" CustomerId="A3A5E66E-6A91-44E2-9F3A-F04C67642BCB" StartDate="2024-12-01" EndDate="2025-12-31" Signature="SeNeSrKAq/rnvCVui7TMBHkTS4AnygizDBNdLe1w7EdMGaQ2xxTvOcsOrshwqznK/shgGvxofdux0YWV3XyxWeeGwfKqjPobWOnKhp5v3xfeVk+59dx29Yn3/4j+vcJrs8kBhOrZEAkeAHojFVZYsO/SbqWoOcqP5fDw673gjW8=">
<License Id="FAE53860-0AE2-4A15-A5D5-7E56D4D29FDE" Revision="1.0" Type="PRODUCTIVE" Customer="Consulting4IT" CustomerId="A3A5E66E-6A91-44E2-9F3A-F04C67642BCB" StartDate="2024-12-01" EndDate="2026-12-31" Signature="A3u3fZ5bU5p3CikLiOyCMdrsJCLtvQkdbUcIhPfo0gZruL4jvy/cXGeqwHgCNK4P+vVJi+7XtxfBvefTFVAs4QT2vSP+m7DPj1CB//zLOEhUHQVqim3KyQiIWtlMi/hruO+XKL6BAOYuNsSOR3eit95e9JPc60qNNL4gArdGe5I=">
<License-Metrics Type="ManagedUsers" Count="10000" />
<Modules>
<Module Name="F4SD client agent connector" Id="F8A3284C-E481-4D08-A921-949D2EBD4E0B" />
<Module Name="MS Active Directory connector" Id="B2D48023-56E8-44D5-AB77-BE1DCF4EA4EB" />
<Module Name="Matrix42 WPM conntector" Id="9CE1A6BE-6A0C-4A27-94A5-44AB997B8E62" />
<Module Name="Nexthink NXQL conntector" Id="51EA7764-3AD3-4F90-89DB-DEB0C60D655C" />
<Module Name="Nexthink NXQL conntector" Id="51EA7764-3AD3-4F90-89DB-DEB0C60D655C" />
</Modules>
</License>
</C4IT-License-Info>

View File

@@ -50,11 +50,11 @@
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Text.Encodings.Web" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-9.0.0.7" newVersion="9.0.0.7" />
<bindingRedirect oldVersion="0.0.0.0-10.0.0.2" newVersion="10.0.0.2" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.ValueTuple" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.0.3.0" newVersion="4.0.3.0" />
<bindingRedirect oldVersion="0.0.0.0-4.6.1.0" newVersion="4.6.1" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Threading.Tasks.Extensions" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
@@ -62,7 +62,7 @@
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="Microsoft.Bcl.AsyncInterfaces" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-9.0.0.7" newVersion="9.0.0.7" />
<bindingRedirect oldVersion="0.0.0.0-10.0.0.2" newVersion="10.0.0.2" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Buffers" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
@@ -74,7 +74,7 @@
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Text.Json" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-9.0.0.7" newVersion="9.0.0.7" />
<bindingRedirect oldVersion="0.0.0.0-10.0.0.2" newVersion="10.0.0.2" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Web.Helpers" publicKeyToken="31bf3856ad364e35" />
@@ -90,11 +90,11 @@
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="Microsoft.IdentityModel.Abstractions" publicKeyToken="31bf3856ad364e35" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-8.13.0.0" newVersion="8.13.0.0" />
<bindingRedirect oldVersion="0.0.0.0-8.15.0.0" newVersion="8.15.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Security.Cryptography.ProtectedData" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-9.0.0.7" newVersion="9.0.0.7" />
<bindingRedirect oldVersion="0.0.0.0-10.0.0.2" newVersion="10.0.0.2" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Security.AccessControl" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
@@ -102,23 +102,23 @@
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="Microsoft.IdentityModel.Tokens" publicKeyToken="31bf3856ad364e35" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-8.13.0.0" newVersion="8.13.0.0" />
<bindingRedirect oldVersion="0.0.0.0-8.15.0.0" newVersion="8.15.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="Microsoft.IdentityModel.Logging" publicKeyToken="31bf3856ad364e35" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-8.13.0.0" newVersion="8.13.0.0" />
<bindingRedirect oldVersion="0.0.0.0-8.15.0.0" newVersion="8.15.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.IdentityModel.Tokens.Jwt" publicKeyToken="31bf3856ad364e35" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-8.13.0.0" newVersion="8.13.0.0" />
<bindingRedirect oldVersion="0.0.0.0-8.15.0.0" newVersion="8.15.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Diagnostics.DiagnosticSource" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-9.0.0.7" newVersion="9.0.0.7" />
<bindingRedirect oldVersion="0.0.0.0-10.0.0.2" newVersion="10.0.0.2" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="Microsoft.IdentityModel.JsonWebTokens" publicKeyToken="31bf3856ad364e35" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-8.13.0.0" newVersion="8.13.0.0" />
<bindingRedirect oldVersion="0.0.0.0-8.15.0.0" newVersion="8.15.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="Microsoft.Extensions.DependencyInjection.Abstractions" publicKeyToken="adb9793829ddae60" culture="neutral" />
@@ -126,7 +126,7 @@
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="Microsoft.Extensions.Logging.Abstractions" publicKeyToken="adb9793829ddae60" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-9.0.0.7" newVersion="9.0.0.7" />
<bindingRedirect oldVersion="0.0.0.0-10.0.0.2" newVersion="10.0.0.2" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Numerics.Vectors" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
@@ -134,47 +134,55 @@
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="Microsoft.Bcl.TimeProvider" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-9.0.0.7" newVersion="9.0.0.7" />
<bindingRedirect oldVersion="0.0.0.0-10.0.0.2" newVersion="10.0.0.2" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Memory.Data" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-9.0.0.7" newVersion="9.0.0.7" />
<bindingRedirect oldVersion="0.0.0.0-10.0.0.2" newVersion="10.0.0.2" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="Azure.Core" publicKeyToken="92742159e12e44c8" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-1.47.1.0" newVersion="1.47.1.0" />
<bindingRedirect oldVersion="0.0.0.0-1.50.0.0" newVersion="1.50.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="Microsoft.Identity.Client" publicKeyToken="0a613f4dd989e8ae" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.74.1.0" newVersion="4.74.1.0" />
<bindingRedirect oldVersion="0.0.0.0-4.81.0.0" newVersion="4.81.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="Microsoft.Identity.Client.Extensions.Msal" publicKeyToken="0a613f4dd989e8ae" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.74.1.0" newVersion="4.74.1.0" />
<bindingRedirect oldVersion="0.0.0.0-4.81.0.0" newVersion="4.81.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="Azure.Identity" publicKeyToken="92742159e12e44c8" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-1.14.2.0" newVersion="1.14.2.0" />
<bindingRedirect oldVersion="0.0.0.0-1.17.1.0" newVersion="1.17.1.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="Microsoft.IdentityModel.Protocols.OpenIdConnect" publicKeyToken="31bf3856ad364e35" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-8.13.0.0" newVersion="8.13.0.0" />
<bindingRedirect oldVersion="0.0.0.0-8.15.0.0" newVersion="8.15.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="Microsoft.IdentityModel.Protocols" publicKeyToken="31bf3856ad364e35" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-8.13.0.0" newVersion="8.13.0.0" />
<bindingRedirect oldVersion="0.0.0.0-8.15.0.0" newVersion="8.15.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="Microsoft.Extensions.Caching.Memory" publicKeyToken="adb9793829ddae60" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-9.0.0.7" newVersion="9.0.0.7" />
<bindingRedirect oldVersion="0.0.0.0-10.0.0.2" newVersion="10.0.0.2" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="Microsoft.Extensions.Caching.Abstractions" publicKeyToken="adb9793829ddae60" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-9.0.0.7" newVersion="9.0.0.7" />
<bindingRedirect oldVersion="0.0.0.0-10.0.0.2" newVersion="10.0.0.2" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="Microsoft.Extensions.Options" publicKeyToken="adb9793829ddae60" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-9.0.0.7" newVersion="9.0.0.7" />
<bindingRedirect oldVersion="0.0.0.0-10.0.0.2" newVersion="10.0.0.2" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Formats.Asn1" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-10.0.0.2" newVersion="10.0.0.2" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.ClientModel" publicKeyToken="92742159e12e44c8" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-1.8.1.0" newVersion="1.8.1.0" />
</dependentAssembly>
</assemblyBinding>
</runtime>

View File

@@ -50,11 +50,11 @@
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Text.Encodings.Web" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-9.0.0.7" newVersion="9.0.0.7" />
<bindingRedirect oldVersion="0.0.0.0-10.0.0.2" newVersion="10.0.0.2" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.ValueTuple" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.0.3.0" newVersion="4.0.3.0" />
<bindingRedirect oldVersion="0.0.0.0-4.6.1.0" newVersion="4.6.1" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Threading.Tasks.Extensions" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
@@ -62,7 +62,7 @@
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="Microsoft.Bcl.AsyncInterfaces" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-9.0.0.7" newVersion="9.0.0.7" />
<bindingRedirect oldVersion="0.0.0.0-10.0.0.2" newVersion="10.0.0.2" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Buffers" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
@@ -74,7 +74,7 @@
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Text.Json" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-9.0.0.7" newVersion="9.0.0.7" />
<bindingRedirect oldVersion="0.0.0.0-10.0.0.2" newVersion="10.0.0.2" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Web.Helpers" publicKeyToken="31bf3856ad364e35" />
@@ -90,11 +90,11 @@
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="Microsoft.IdentityModel.Abstractions" publicKeyToken="31bf3856ad364e35" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-8.13.0.0" newVersion="8.13.0.0" />
<bindingRedirect oldVersion="0.0.0.0-8.15.0.0" newVersion="8.15.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Security.Cryptography.ProtectedData" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-9.0.0.7" newVersion="9.0.0.7" />
<bindingRedirect oldVersion="0.0.0.0-10.0.0.2" newVersion="10.0.0.2" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Security.AccessControl" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
@@ -102,23 +102,23 @@
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="Microsoft.IdentityModel.Tokens" publicKeyToken="31bf3856ad364e35" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-8.13.0.0" newVersion="8.13.0.0" />
<bindingRedirect oldVersion="0.0.0.0-8.15.0.0" newVersion="8.15.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="Microsoft.IdentityModel.Logging" publicKeyToken="31bf3856ad364e35" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-8.13.0.0" newVersion="8.13.0.0" />
<bindingRedirect oldVersion="0.0.0.0-8.15.0.0" newVersion="8.15.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.IdentityModel.Tokens.Jwt" publicKeyToken="31bf3856ad364e35" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-8.13.0.0" newVersion="8.13.0.0" />
<bindingRedirect oldVersion="0.0.0.0-8.15.0.0" newVersion="8.15.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Diagnostics.DiagnosticSource" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-9.0.0.7" newVersion="9.0.0.7" />
<bindingRedirect oldVersion="0.0.0.0-10.0.0.2" newVersion="10.0.0.2" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="Microsoft.IdentityModel.JsonWebTokens" publicKeyToken="31bf3856ad364e35" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-8.13.0.0" newVersion="8.13.0.0" />
<bindingRedirect oldVersion="0.0.0.0-8.15.0.0" newVersion="8.15.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="Microsoft.Extensions.DependencyInjection.Abstractions" publicKeyToken="adb9793829ddae60" culture="neutral" />
@@ -126,7 +126,7 @@
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="Microsoft.Extensions.Logging.Abstractions" publicKeyToken="adb9793829ddae60" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-9.0.0.7" newVersion="9.0.0.7" />
<bindingRedirect oldVersion="0.0.0.0-10.0.0.2" newVersion="10.0.0.2" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Numerics.Vectors" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
@@ -134,47 +134,55 @@
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="Microsoft.Bcl.TimeProvider" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-9.0.0.7" newVersion="9.0.0.7" />
<bindingRedirect oldVersion="0.0.0.0-10.0.0.2" newVersion="10.0.0.2" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Memory.Data" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-9.0.0.7" newVersion="9.0.0.7" />
<bindingRedirect oldVersion="0.0.0.0-10.0.0.2" newVersion="10.0.0.2" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="Azure.Core" publicKeyToken="92742159e12e44c8" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-1.47.1.0" newVersion="1.47.1.0" />
<bindingRedirect oldVersion="0.0.0.0-1.50.0.0" newVersion="1.50.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="Microsoft.Identity.Client" publicKeyToken="0a613f4dd989e8ae" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.74.1.0" newVersion="4.74.1.0" />
<bindingRedirect oldVersion="0.0.0.0-4.81.0.0" newVersion="4.81.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="Microsoft.Identity.Client.Extensions.Msal" publicKeyToken="0a613f4dd989e8ae" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.74.1.0" newVersion="4.74.1.0" />
<bindingRedirect oldVersion="0.0.0.0-4.81.0.0" newVersion="4.81.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="Azure.Identity" publicKeyToken="92742159e12e44c8" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-1.14.2.0" newVersion="1.14.2.0" />
<bindingRedirect oldVersion="0.0.0.0-1.17.1.0" newVersion="1.17.1.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="Microsoft.IdentityModel.Protocols.OpenIdConnect" publicKeyToken="31bf3856ad364e35" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-8.13.0.0" newVersion="8.13.0.0" />
<bindingRedirect oldVersion="0.0.0.0-8.15.0.0" newVersion="8.15.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="Microsoft.IdentityModel.Protocols" publicKeyToken="31bf3856ad364e35" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-8.13.0.0" newVersion="8.13.0.0" />
<bindingRedirect oldVersion="0.0.0.0-8.15.0.0" newVersion="8.15.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="Microsoft.Extensions.Caching.Memory" publicKeyToken="adb9793829ddae60" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-9.0.0.7" newVersion="9.0.0.7" />
<bindingRedirect oldVersion="0.0.0.0-10.0.0.2" newVersion="10.0.0.2" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="Microsoft.Extensions.Caching.Abstractions" publicKeyToken="adb9793829ddae60" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-9.0.0.7" newVersion="9.0.0.7" />
<bindingRedirect oldVersion="0.0.0.0-10.0.0.2" newVersion="10.0.0.2" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="Microsoft.Extensions.Options" publicKeyToken="adb9793829ddae60" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-9.0.0.7" newVersion="9.0.0.7" />
<bindingRedirect oldVersion="0.0.0.0-10.0.0.2" newVersion="10.0.0.2" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Formats.Asn1" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-10.0.0.2" newVersion="10.0.0.2" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.ClientModel" publicKeyToken="92742159e12e44c8" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-1.8.1.0" newVersion="1.8.1.0" />
</dependentAssembly>
</assemblyBinding>
</runtime>

View File

@@ -3,7 +3,7 @@ set ProductName="C4IT First Aid ServiceDesk (F4SD)"
set SignTool=..\..\Common Code\Tools\signtool.exe
set TimeStamp=http://rfc3161timestamp.globalsign.com/advanced
"%SignTool%" sign /a /tr %TimeStamp% /td SHA256 /fd SHA256 /d %ProductName% ".\Source\bin\F4SD-Cockpit-Collector.exe" ".\Source\bin\F4SD-Cockpit-WebService.dll" ".\Source\bin\F4SD-Cockpit-Server.dll"
"%SignTool%" sign /a /tr %TimeStamp% /td SHA256 /fd SHA256 /d %ProductName% ".\Source\bin\F4SD-Cockpit-Collector.exe" ".\Source\bin\F4SD-Cockpit-WebService.dll" ".\Source\bin\F4SD-Cockpit-Server.dll" ".\Source\bin\C4IT.F4SD.DisplayFormatting.dll"
pause

6
nuget.config Normal file
View File

@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<packageSources>
<add key="c4it" value="https://consulting4it.pkgs.visualstudio.com/34326a32-0169-4d1a-9641-804097e90d0e/_packaging/c4it/nuget/v3/index.json" />
</packageSources>
</configuration>