Initialer Status
This commit is contained in:
81
.gitignore
vendored
Normal file
81
.gitignore
vendored
Normal file
@@ -0,0 +1,81 @@
|
|||||||
|
# --------------------------------------------------------------------------------------------------
|
||||||
|
# Core Visual Studio / .NET build outputs
|
||||||
|
# --------------------------------------------------------------------------------------------------
|
||||||
|
bin/
|
||||||
|
obj/
|
||||||
|
[Bb]uild/
|
||||||
|
[Dd]ebug*/
|
||||||
|
[Rr]elease*/
|
||||||
|
x64/
|
||||||
|
x86/
|
||||||
|
[Aa][Rr][Mm]/
|
||||||
|
[Aa][Rr][Mm]64/
|
||||||
|
_ReSharper.*/
|
||||||
|
*.user
|
||||||
|
*.userosscache
|
||||||
|
*.suo
|
||||||
|
*.cache
|
||||||
|
*.pdb
|
||||||
|
*.mpdb
|
||||||
|
*.opendb
|
||||||
|
*.VC.db
|
||||||
|
*.vscode/
|
||||||
|
|
||||||
|
# --------------------------------------------------------------------------------------------------
|
||||||
|
# Package artefacts (NuGet, npm, etc.)
|
||||||
|
# --------------------------------------------------------------------------------------------------
|
||||||
|
/packages/
|
||||||
|
*.nupkg
|
||||||
|
*.snupkg
|
||||||
|
*.nuspec
|
||||||
|
package-lock.json
|
||||||
|
packages.config
|
||||||
|
npm-debug.log*
|
||||||
|
yarn-error.log
|
||||||
|
|
||||||
|
# --------------------------------------------------------------------------------------------------
|
||||||
|
# TFS / TFVC specific files and folders
|
||||||
|
# --------------------------------------------------------------------------------------------------
|
||||||
|
$tf/
|
||||||
|
*$tf/
|
||||||
|
*.tf
|
||||||
|
*.tfs
|
||||||
|
.tfignore
|
||||||
|
|
||||||
|
# --------------------------------------------------------------------------------------------------
|
||||||
|
# IDE tooling and workspace settings
|
||||||
|
# --------------------------------------------------------------------------------------------------
|
||||||
|
.vs/
|
||||||
|
.vscode/
|
||||||
|
*.swp
|
||||||
|
*.sln.docstates
|
||||||
|
*.VC.VC.opendb
|
||||||
|
.idea/
|
||||||
|
.DS_Store
|
||||||
|
Thumbs.db
|
||||||
|
|
||||||
|
# --------------------------------------------------------------------------------------------------
|
||||||
|
# Test results and profiling data
|
||||||
|
# --------------------------------------------------------------------------------------------------
|
||||||
|
[Tt]est[Rr]esult*/
|
||||||
|
[Bb]uild[Ll]og.*
|
||||||
|
*.trx
|
||||||
|
*.coverage
|
||||||
|
*.coveragexml
|
||||||
|
*.opencover.xml
|
||||||
|
*.dotCover
|
||||||
|
BenchmarkDotNet.Artifacts/
|
||||||
|
|
||||||
|
# --------------------------------------------------------------------------------------------------
|
||||||
|
# Miscellaneous recommended ignores
|
||||||
|
# --------------------------------------------------------------------------------------------------
|
||||||
|
_UpgradeReport_Files/
|
||||||
|
Backup*/
|
||||||
|
UpgradeLog*.XML
|
||||||
|
*.tmp
|
||||||
|
*.temp
|
||||||
|
*.log
|
||||||
|
*.bak
|
||||||
|
*.orig
|
||||||
|
*.scc
|
||||||
|
|
||||||
71
C4IT - F4SD - M42WebApi.sln
Normal file
71
C4IT - F4SD - M42WebApi.sln
Normal file
@@ -0,0 +1,71 @@
|
|||||||
|
|
||||||
|
Microsoft Visual Studio Solution File, Format Version 12.00
|
||||||
|
# Visual Studio Version 17
|
||||||
|
VisualStudioVersion = 17.5.33424.131
|
||||||
|
MinimumVisualStudioVersion = 10.0.40219.1
|
||||||
|
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "F4SD - M42WebApi", "F4SDM42WebApi\F4SD - M42WebApi.csproj", "{D8CBFFCA-0B43-4ACC-80EA-C944E7420CEE}"
|
||||||
|
EndProject
|
||||||
|
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Shared", "Shared", "{01521575-9B5F-4E86-8F40-634119D46B9F}"
|
||||||
|
ProjectSection(SolutionItems) = preProject
|
||||||
|
SharedAssemblyInfo.cs = SharedAssemblyInfo.cs
|
||||||
|
EndProjectSection
|
||||||
|
EndProject
|
||||||
|
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "F4SD - Helper", "F4SDHelper\F4SD - Helper.csproj", "{EB95E1FB-7A9E-4894-BD28-2D0BE2715EBE}"
|
||||||
|
EndProject
|
||||||
|
Project("{D954291E-2A0B-460D-934E-DC6B0785DB48}") = "F4SD - M42 UUX Workspace", "M42F4SDUUXWorkspace\F4SD - M42 UUX Workspace.shproj", "{C3D52A04-2461-4F35-8EDF-DE7226ADD677}"
|
||||||
|
EndProject
|
||||||
|
Global
|
||||||
|
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||||
|
Debug_and_copy|Any CPU = Debug_and_copy|Any CPU
|
||||||
|
Debug|Any CPU = Debug|Any CPU
|
||||||
|
Release_and_copy|Any CPU = Release_and_copy|Any CPU
|
||||||
|
Release|Any CPU = Release|Any CPU
|
||||||
|
EndGlobalSection
|
||||||
|
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||||
|
{D8CBFFCA-0B43-4ACC-80EA-C944E7420CEE}.Debug_and_copy|Any CPU.ActiveCfg = Debug_and_copy|Any CPU
|
||||||
|
{D8CBFFCA-0B43-4ACC-80EA-C944E7420CEE}.Debug_and_copy|Any CPU.Build.0 = Debug_and_copy|Any CPU
|
||||||
|
{D8CBFFCA-0B43-4ACC-80EA-C944E7420CEE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
|
{D8CBFFCA-0B43-4ACC-80EA-C944E7420CEE}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
|
{D8CBFFCA-0B43-4ACC-80EA-C944E7420CEE}.Release_and_copy|Any CPU.ActiveCfg = Release_and_copy|Any CPU
|
||||||
|
{D8CBFFCA-0B43-4ACC-80EA-C944E7420CEE}.Release_and_copy|Any CPU.Build.0 = Release_and_copy|Any CPU
|
||||||
|
{D8CBFFCA-0B43-4ACC-80EA-C944E7420CEE}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
|
{D8CBFFCA-0B43-4ACC-80EA-C944E7420CEE}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
|
{EB95E1FB-7A9E-4894-BD28-2D0BE2715EBE}.Debug_and_copy|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
|
{EB95E1FB-7A9E-4894-BD28-2D0BE2715EBE}.Debug_and_copy|Any CPU.Build.0 = Debug|Any CPU
|
||||||
|
{EB95E1FB-7A9E-4894-BD28-2D0BE2715EBE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
|
{EB95E1FB-7A9E-4894-BD28-2D0BE2715EBE}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
|
{EB95E1FB-7A9E-4894-BD28-2D0BE2715EBE}.Release_and_copy|Any CPU.ActiveCfg = Release_and_copy|Any CPU
|
||||||
|
{EB95E1FB-7A9E-4894-BD28-2D0BE2715EBE}.Release_and_copy|Any CPU.Build.0 = Release_and_copy|Any CPU
|
||||||
|
{EB95E1FB-7A9E-4894-BD28-2D0BE2715EBE}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
|
{EB95E1FB-7A9E-4894-BD28-2D0BE2715EBE}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
|
EndGlobalSection
|
||||||
|
GlobalSection(SolutionProperties) = preSolution
|
||||||
|
HideSolutionNode = FALSE
|
||||||
|
EndGlobalSection
|
||||||
|
GlobalSection(ExtensibilityGlobals) = postSolution
|
||||||
|
SolutionGuid = {EEEA7DD2-9C5A-4AAE-B5CA-77E4C7F1257B}
|
||||||
|
EndGlobalSection
|
||||||
|
GlobalSection(SharedMSBuildProjectFiles) = preSolution
|
||||||
|
M42F4SDUUXWorkspace\M42F4SDUUXWorkspace.projitems*{c3d52a04-2461-4f35-8edf-de7226add677}*SharedItemsImports = 13
|
||||||
|
M42F4SDUUXWorkspace\M42F4SDUUXWorkspace.projitems*{d8cbffca-0b43-4acc-80ea-c944e7420cee}*SharedItemsImports = 4
|
||||||
|
EndGlobalSection
|
||||||
|
GlobalSection(TeamFoundationVersionControl) = preSolution
|
||||||
|
SccNumberOfProjects = 5
|
||||||
|
SccEnterpriseProvider = {4CA58AB2-18FA-4F8D-95D4-32DDF27D184C}
|
||||||
|
SccTeamFoundationServer = https://consulting4it.visualstudio.com/
|
||||||
|
SccLocalPath0 = .
|
||||||
|
SccProjectUniqueName1 = F4SDHelper\\F4SD\u0020-\u0020Helper.csproj
|
||||||
|
SccProjectName1 = F4SDHelper
|
||||||
|
SccLocalPath1 = F4SDHelper
|
||||||
|
SccProjectUniqueName2 = F4SDM42WebApi\\F4SD\u0020-\u0020M42WebApi.csproj
|
||||||
|
SccProjectName2 = F4SDM42WebApi
|
||||||
|
SccLocalPath2 = F4SDM42WebApi
|
||||||
|
SccProjectUniqueName3 = M42F4SDUUXWorkspace\\F4SD\u0020-\u0020M42\u0020UUX\u0020Workspace.shproj
|
||||||
|
SccProjectName3 = M42F4SDUUXWorkspace
|
||||||
|
SccLocalPath3 = M42F4SDUUXWorkspace
|
||||||
|
SccProjectUniqueName4 = M42F4SDUUXWorkspace\\M42F4SDUUXWorkspace.projitems
|
||||||
|
SccProjectTopLevelParentUniqueName4 = M42F4SDUUXWorkspace\\F4SD\u0020-\u0020M42\u0020UUX\u0020Workspace.shproj
|
||||||
|
SccProjectName4 = M42F4SDUUXWorkspace
|
||||||
|
SccLocalPath4 = M42F4SDUUXWorkspace
|
||||||
|
EndGlobalSection
|
||||||
|
EndGlobal
|
||||||
11
F4SDHelper/App.config
Normal file
11
F4SDHelper/App.config
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<configuration>
|
||||||
|
<runtime>
|
||||||
|
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
|
||||||
|
<dependentAssembly>
|
||||||
|
<assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" />
|
||||||
|
<bindingRedirect oldVersion="0.0.0.0-13.0.0.0" newVersion="13.0.0.0" />
|
||||||
|
</dependentAssembly>
|
||||||
|
</assemblyBinding>
|
||||||
|
</runtime>
|
||||||
|
</configuration>
|
||||||
500
F4SDHelper/Common/C4IT.FASD.Base.cs
Normal file
500
F4SDHelper/Common/C4IT.FASD.Base.cs
Normal file
@@ -0,0 +1,500 @@
|
|||||||
|
using Newtonsoft.Json;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using static C4IT.Logging.cLogManager;
|
||||||
|
|
||||||
|
namespace C4IT.FASD.Base
|
||||||
|
{
|
||||||
|
public enum enumFasdInformationClass
|
||||||
|
{
|
||||||
|
Unknown = -1,
|
||||||
|
Main = 0,
|
||||||
|
Computer = 1,
|
||||||
|
User = 2,
|
||||||
|
Ticket = 3
|
||||||
|
}
|
||||||
|
|
||||||
|
public enum enumF4sdSearchResultClass
|
||||||
|
{
|
||||||
|
Unknown = -1,
|
||||||
|
Computer = 0,
|
||||||
|
User = 1,
|
||||||
|
Phone = 2,
|
||||||
|
Ticket = 3
|
||||||
|
}
|
||||||
|
|
||||||
|
public enum enumF4sdSearchResultStatus
|
||||||
|
{
|
||||||
|
Unknown = -1,
|
||||||
|
Inactive = 0,
|
||||||
|
Active = 1
|
||||||
|
}
|
||||||
|
|
||||||
|
public enum enumFasdValueType
|
||||||
|
{
|
||||||
|
Unknown = 0,
|
||||||
|
STRING = 1,
|
||||||
|
GUID = 2,
|
||||||
|
INT = 3,
|
||||||
|
BIGINT = 4,
|
||||||
|
FLOAT = 5,
|
||||||
|
DATETIME = 6,
|
||||||
|
VERSION = 7,
|
||||||
|
MD5 = 8,
|
||||||
|
SID = 9,
|
||||||
|
IPV4 = 10,
|
||||||
|
IPV6 = 11,
|
||||||
|
TEXT = 12,
|
||||||
|
BOOLEAN = 13,
|
||||||
|
AUTOID = 255
|
||||||
|
};
|
||||||
|
|
||||||
|
public enum enumFasdCharCaseType { none = 0, lower = 1, upper = 2 };
|
||||||
|
|
||||||
|
public enum enumFasdConfigurationType
|
||||||
|
{
|
||||||
|
unknown = 0,
|
||||||
|
commonIcons,
|
||||||
|
menuSections,
|
||||||
|
quickActions,
|
||||||
|
copyTemplates,
|
||||||
|
healthCard
|
||||||
|
}
|
||||||
|
|
||||||
|
public class cFasdApiConnectionInfo
|
||||||
|
{
|
||||||
|
public string ServerVersion { get; set; }
|
||||||
|
public string MinCockpitVersion { get; set; }
|
||||||
|
public UInt64 ConfigRevision { get; set; } = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
public class cAgentApiConfiguration
|
||||||
|
{
|
||||||
|
public string LogonUrl { get; set; }
|
||||||
|
public string ApiUrl { get; set; }
|
||||||
|
public string ClientId { get; set; }
|
||||||
|
public string ClientSecret { get; set; }
|
||||||
|
public int? OrganizationCode { get; set; }
|
||||||
|
|
||||||
|
[JsonIgnore]
|
||||||
|
public static cAgentApiConfiguration Instance { get; set; }
|
||||||
|
}
|
||||||
|
|
||||||
|
public class cFasdApiSearchResultDefault
|
||||||
|
{
|
||||||
|
public enumF4sdSearchResultClass Type { get; set; }
|
||||||
|
public string Name { get; set; }
|
||||||
|
public Guid id { get; set; }
|
||||||
|
public enumF4sdSearchResultStatus Status { get; set; } = enumF4sdSearchResultStatus.Unknown;
|
||||||
|
public Dictionary<string, string> Infos { get; set; } = null;
|
||||||
|
|
||||||
|
static public enumF4sdSearchResultClass getSearchClass(enumFasdInformationClass infoClass)
|
||||||
|
{
|
||||||
|
switch (infoClass)
|
||||||
|
{
|
||||||
|
case enumFasdInformationClass.User:
|
||||||
|
return enumF4sdSearchResultClass.User;
|
||||||
|
case enumFasdInformationClass.Computer:
|
||||||
|
return enumF4sdSearchResultClass.Computer;
|
||||||
|
default:
|
||||||
|
return enumF4sdSearchResultClass.Unknown;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public class cF4sdIdentityEntry
|
||||||
|
{
|
||||||
|
public enumFasdInformationClass Class { get; set; }
|
||||||
|
public Guid Id { get; set; }
|
||||||
|
|
||||||
|
public static enumFasdInformationClass GetFromSearchResult(enumF4sdSearchResultClass searchResult)
|
||||||
|
{
|
||||||
|
var infoClass = enumFasdInformationClass.Unknown;
|
||||||
|
switch (searchResult)
|
||||||
|
{
|
||||||
|
case enumF4sdSearchResultClass.Computer:
|
||||||
|
infoClass = enumFasdInformationClass.Computer;
|
||||||
|
break;
|
||||||
|
case enumF4sdSearchResultClass.User:
|
||||||
|
case enumF4sdSearchResultClass.Phone:
|
||||||
|
infoClass = enumFasdInformationClass.User;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
return infoClass;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public class cF4sdApiSearchResultRelation : cFasdApiSearchResultDefault
|
||||||
|
{
|
||||||
|
public DateTime LastUsed { get; set; }
|
||||||
|
public double UsingLevel { get; set; }
|
||||||
|
public List<cF4sdIdentityEntry> Identities { get; set; } = null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public class cF4sdHealthCardRawDataRequest
|
||||||
|
{
|
||||||
|
public List<string> Tables { get; set; }
|
||||||
|
public List<cF4sdIdentityEntry> Identities { get; set; }
|
||||||
|
|
||||||
|
public int MaxAge { get; set; } = 14;
|
||||||
|
|
||||||
|
public DateTime RefTime { get; set; } = DateTime.Now.Date.ToUniversalTime();
|
||||||
|
}
|
||||||
|
|
||||||
|
public class cF4SDHealthCardRawData
|
||||||
|
{
|
||||||
|
public class cHealthCardTableColumn
|
||||||
|
{
|
||||||
|
public string ColumnName { get; set; }
|
||||||
|
public List<object> Values { get; set; } = new List<object>();
|
||||||
|
public bool IsIncomplete { get; set; } = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public class cHealthCardTable
|
||||||
|
{
|
||||||
|
public string Name { get; set; }
|
||||||
|
public int StartingIndex { get; set; } = 0;
|
||||||
|
public bool IsIncomplete { get; set; } = false;
|
||||||
|
public bool IsStatic { get; set; }
|
||||||
|
public DateTime[,] TimeFrames { get; set; }
|
||||||
|
public Dictionary<string, cHealthCardTableColumn> Columns { get; set; } = new Dictionary<string, cHealthCardTableColumn>();
|
||||||
|
}
|
||||||
|
|
||||||
|
public class cHealthCardDetailsTable
|
||||||
|
{
|
||||||
|
public string Name { get; set; }
|
||||||
|
public List<string> Columns { get; set; }
|
||||||
|
public Dictionary<int, List<object[]>> Values { get; set; }
|
||||||
|
}
|
||||||
|
|
||||||
|
public Guid Id { get; set; }
|
||||||
|
|
||||||
|
public Dictionary<string, cHealthCardTable> Tables { get; set; } = new Dictionary<string, cHealthCardTable>();
|
||||||
|
|
||||||
|
#region GetObjects
|
||||||
|
|
||||||
|
#region GetInteger
|
||||||
|
|
||||||
|
public static int? GetInteger(object Value, int? Default = null)
|
||||||
|
{
|
||||||
|
int? output = Default;
|
||||||
|
|
||||||
|
if (Value == null)
|
||||||
|
return output;
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
var valuetype = Value.GetType();
|
||||||
|
|
||||||
|
if (Value is int @int)
|
||||||
|
output = @int;
|
||||||
|
if (Value is Int64 @int64)
|
||||||
|
output = Convert.ToInt32(@int64);
|
||||||
|
else if (Value is double @double)
|
||||||
|
output = Convert.ToInt32(@double);
|
||||||
|
else if (Value is string @string)
|
||||||
|
{
|
||||||
|
if (int.TryParse(@string, out int parsedInt))
|
||||||
|
output = parsedInt;
|
||||||
|
else
|
||||||
|
output = Default;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (Exception E)
|
||||||
|
{
|
||||||
|
LogException(E);
|
||||||
|
}
|
||||||
|
|
||||||
|
return output;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int? GetIntegerByAddressInfo(string TableName, string TableColumn, int index = 0, int? Default = null)
|
||||||
|
{
|
||||||
|
int? output = Default;
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
if (Tables.TryGetValue(TableName, out var selectedTable))
|
||||||
|
if (selectedTable.Columns.TryGetValue(TableColumn, out var selectedColumn))
|
||||||
|
output = GetInteger(selectedColumn.Values[index], Default);
|
||||||
|
}
|
||||||
|
catch (Exception E)
|
||||||
|
{
|
||||||
|
LogException(E);
|
||||||
|
}
|
||||||
|
|
||||||
|
return output;
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region GetString
|
||||||
|
|
||||||
|
public static string GetString(object Value, string Default = null)
|
||||||
|
{
|
||||||
|
string output = Default;
|
||||||
|
try
|
||||||
|
{
|
||||||
|
if (Value is int @int)
|
||||||
|
output = Convert.ToString(@int);
|
||||||
|
else if (Value is double @double)
|
||||||
|
output = Convert.ToString(@double);
|
||||||
|
else if (Value is string @string)
|
||||||
|
output = @string;
|
||||||
|
}
|
||||||
|
catch (Exception E)
|
||||||
|
{
|
||||||
|
LogException(E);
|
||||||
|
}
|
||||||
|
|
||||||
|
return output?.ToString();
|
||||||
|
}
|
||||||
|
|
||||||
|
public string GetStringByAddressInfo(string TableName, string TableColumn, int index = 0, string Default = null)
|
||||||
|
{
|
||||||
|
string output = Default;
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
if (Tables.TryGetValue(TableName, out var selectedTable))
|
||||||
|
if (selectedTable.Columns.TryGetValue(TableColumn, out var selectedColumn))
|
||||||
|
output = GetString(selectedColumn.Values[index], Default);
|
||||||
|
}
|
||||||
|
catch (Exception E)
|
||||||
|
{
|
||||||
|
LogException(E);
|
||||||
|
}
|
||||||
|
|
||||||
|
return output;
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region GetVersion
|
||||||
|
|
||||||
|
public static Version GetVersion(object Value, Version Default = null)
|
||||||
|
{
|
||||||
|
Version output = Default;
|
||||||
|
|
||||||
|
if (Value == null)
|
||||||
|
return output;
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
if (Value is string @string)
|
||||||
|
{
|
||||||
|
if (Version.TryParse(@string, out var tempVersionFromString))
|
||||||
|
output = tempVersionFromString;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (Exception E)
|
||||||
|
{
|
||||||
|
LogException(E);
|
||||||
|
}
|
||||||
|
|
||||||
|
return output;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Version GetVersionByAddressInfo(string TableName, string TableColumn, int index = 0, Version Default = null)
|
||||||
|
{
|
||||||
|
Version output = Default;
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
if (Tables.TryGetValue(TableName, out var selectedTable))
|
||||||
|
if (selectedTable.Columns.TryGetValue(TableColumn, out var selectedColumn))
|
||||||
|
output = GetVersion(selectedColumn.Values[index], Default);
|
||||||
|
}
|
||||||
|
catch (Exception E)
|
||||||
|
{
|
||||||
|
LogException(E);
|
||||||
|
}
|
||||||
|
|
||||||
|
return output;
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region GetDateTime
|
||||||
|
|
||||||
|
public static DateTime? GetDateTime(object Value, DateTime? Default = null)
|
||||||
|
{
|
||||||
|
DateTime? output = Default;
|
||||||
|
|
||||||
|
if (Value == null)
|
||||||
|
return output;
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
if (Value is DateTime time)
|
||||||
|
output = time;
|
||||||
|
else if (Value is string @string)
|
||||||
|
{
|
||||||
|
var tempOutput = Convert.ToDateTime(@string);
|
||||||
|
DateTime.SpecifyKind(tempOutput, DateTimeKind.Utc);
|
||||||
|
if (tempOutput != null)
|
||||||
|
output = tempOutput;
|
||||||
|
else
|
||||||
|
output = Default;
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (Exception E)
|
||||||
|
{
|
||||||
|
LogException(E);
|
||||||
|
}
|
||||||
|
|
||||||
|
return output;
|
||||||
|
}
|
||||||
|
|
||||||
|
public DateTime? GetDateTimeByAddressInfo(string TableName, string TableColumn, int index = 0, DateTime? Default = null)
|
||||||
|
{
|
||||||
|
DateTime? output = Default;
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
if (Tables.TryGetValue(TableName, out var selectedTable))
|
||||||
|
if (selectedTable.Columns.TryGetValue(TableColumn, out var selectedColumn))
|
||||||
|
output = GetDateTime(selectedColumn.Values[index], Default);
|
||||||
|
}
|
||||||
|
catch (Exception E)
|
||||||
|
{
|
||||||
|
LogException(E);
|
||||||
|
}
|
||||||
|
|
||||||
|
return output;
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region GetDouble
|
||||||
|
|
||||||
|
public static double? GetDouble(object Value, double? Default = null)
|
||||||
|
{
|
||||||
|
double? output = Default;
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
if (Value is int @int)
|
||||||
|
output = Convert.ToDouble(@int);
|
||||||
|
else if (Value is Int64 @int64)
|
||||||
|
output = Convert.ToDouble(@int64);
|
||||||
|
else if (Value is double @double)
|
||||||
|
output = @double;
|
||||||
|
else if (Value is string @string)
|
||||||
|
{
|
||||||
|
if (double.TryParse(@string, System.Globalization.NumberStyles.Any, System.Globalization.CultureInfo.GetCultureInfo("en-US").NumberFormat, out double tempOutput))
|
||||||
|
output = tempOutput;
|
||||||
|
else
|
||||||
|
output = Default;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (Exception E)
|
||||||
|
{
|
||||||
|
LogException(E);
|
||||||
|
}
|
||||||
|
|
||||||
|
return output;
|
||||||
|
}
|
||||||
|
|
||||||
|
public double? GetDoubleByAddressInfo(string TableName, string TableColumn, int index = 0, double? Default = null)
|
||||||
|
{
|
||||||
|
double? output = Default;
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
if (Tables.TryGetValue(TableName, out var selectedTable))
|
||||||
|
if (selectedTable.Columns.TryGetValue(TableColumn, out var selectedColumn))
|
||||||
|
output = GetDouble(selectedColumn.Values[index], Default);
|
||||||
|
}
|
||||||
|
catch (Exception E)
|
||||||
|
{
|
||||||
|
LogException(E);
|
||||||
|
}
|
||||||
|
|
||||||
|
return output;
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
}
|
||||||
|
public class cApiM42TicketQueueInfo
|
||||||
|
{
|
||||||
|
public string QueueName { get; set; }
|
||||||
|
public Guid QueueID { get; set; }
|
||||||
|
}
|
||||||
|
|
||||||
|
public class cF4SDTicketSummary
|
||||||
|
{
|
||||||
|
public Guid TicketObjectId { get; set; }
|
||||||
|
public string Name { get; set; }
|
||||||
|
public string ActivityType { get; set; }
|
||||||
|
public string Summary { get; set; }
|
||||||
|
public string Sid { get; set; }
|
||||||
|
public string Status { get; set; }
|
||||||
|
public int StatusId { get; set; }
|
||||||
|
public string Urgency { get; set; }
|
||||||
|
public int UrgencyId { get; set; }
|
||||||
|
public string Impact { get; set; }
|
||||||
|
public int ImpactId { get; set; }
|
||||||
|
public string AssetCIName { get; set; }
|
||||||
|
public string AssetName { get; set; }
|
||||||
|
public string ServiceName { get; set; }
|
||||||
|
public Guid ServiceId { get; set; }
|
||||||
|
public bool IsPrimaryAccount { get; set; }
|
||||||
|
}
|
||||||
|
|
||||||
|
public class cF4SDTicket : cF4SDTicketSummary
|
||||||
|
{
|
||||||
|
public enum enumTicketCreationSource
|
||||||
|
{
|
||||||
|
Unknown = 0,
|
||||||
|
Mail = 1,
|
||||||
|
Phone = 2,
|
||||||
|
F4SD = 3
|
||||||
|
}
|
||||||
|
|
||||||
|
public class cTicketJournalItem
|
||||||
|
{
|
||||||
|
public DateTime CreationDate { get; set; }
|
||||||
|
public string Header { get; set; }
|
||||||
|
public string CreatedBy { get; set; }
|
||||||
|
public string DescriptionHtml { get; set; }
|
||||||
|
public string Description { get; set; }
|
||||||
|
public bool IsVisibleForUser { get; set; }
|
||||||
|
public Guid ActivityObjectId { get; set; }
|
||||||
|
public Guid JournalId { get; set; }
|
||||||
|
}
|
||||||
|
|
||||||
|
public Guid AffectedUserId { get; set; }
|
||||||
|
public Guid AssetId { get; set; }
|
||||||
|
public DateTime CreationDate { get; set; }
|
||||||
|
public DateTime? ClosingDate { get; set; }
|
||||||
|
public int CreationSourceId { get; set; }
|
||||||
|
public string CreationSource { get; set; }
|
||||||
|
|
||||||
|
public string Description { get; set; }
|
||||||
|
public string DescriptionHtml { get; set; }
|
||||||
|
public int PriorityId { get; set; }
|
||||||
|
public string Priority { get; set; }
|
||||||
|
public Guid CategoryId { get; set; }
|
||||||
|
public string Category { get; set; }
|
||||||
|
public string CategoryHierarchical { get; set; }
|
||||||
|
public string CIName { get; set; }
|
||||||
|
public string DirectLinkEdit { get; set; }
|
||||||
|
public Guid AssetCIId { get; set; }
|
||||||
|
public int AssetSKUAssetGroupId { get; set; }
|
||||||
|
public string AssetSKUAssetGroup { get; set; }
|
||||||
|
public int AssetSKUTypeId { get; set; }
|
||||||
|
public string AssetSKUType { get; set; }
|
||||||
|
public string DirectLinkPreview { get; set; }
|
||||||
|
public string DirectLinkClose { get; set; }
|
||||||
|
public string AffectedUser { get; set; }
|
||||||
|
public string SolutionHtml { get; set; }
|
||||||
|
public string Solution { get; set; }
|
||||||
|
public string AssetDomain { get; set; }
|
||||||
|
}
|
||||||
|
}
|
||||||
75
F4SDHelper/F4SD - Helper.csproj
Normal file
75
F4SDHelper/F4SD - Helper.csproj
Normal file
@@ -0,0 +1,75 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||||
|
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
|
||||||
|
<PropertyGroup>
|
||||||
|
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
||||||
|
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
|
||||||
|
<ProjectGuid>{EB95E1FB-7A9E-4894-BD28-2D0BE2715EBE}</ProjectGuid>
|
||||||
|
<OutputType>Library</OutputType>
|
||||||
|
<AppDesignerFolder>Properties</AppDesignerFolder>
|
||||||
|
<RootNamespace>C4IT.F4SDM</RootNamespace>
|
||||||
|
<AssemblyName>C4ITF4SDM42WebApiHelper</AssemblyName>
|
||||||
|
<TargetFrameworkVersion>v4.7.2</TargetFrameworkVersion>
|
||||||
|
<FileAlignment>512</FileAlignment>
|
||||||
|
<Deterministic>true</Deterministic>
|
||||||
|
<TargetFrameworkProfile />
|
||||||
|
<SccProjectName>SAK</SccProjectName>
|
||||||
|
<SccLocalPath>SAK</SccLocalPath>
|
||||||
|
<SccAuxPath>SAK</SccAuxPath>
|
||||||
|
<SccProvider>SAK</SccProvider>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
||||||
|
<DebugSymbols>true</DebugSymbols>
|
||||||
|
<DebugType>full</DebugType>
|
||||||
|
<Optimize>false</Optimize>
|
||||||
|
<OutputPath>bin\Debug\</OutputPath>
|
||||||
|
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
||||||
|
<ErrorReport>prompt</ErrorReport>
|
||||||
|
<WarningLevel>4</WarningLevel>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
||||||
|
<DebugType>pdbonly</DebugType>
|
||||||
|
<Optimize>true</Optimize>
|
||||||
|
<OutputPath>bin\Release\</OutputPath>
|
||||||
|
<DefineConstants>TRACE</DefineConstants>
|
||||||
|
<ErrorReport>prompt</ErrorReport>
|
||||||
|
<WarningLevel>4</WarningLevel>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release_and_copy|AnyCPU'">
|
||||||
|
<OutputPath>bin\Release_and_copy\</OutputPath>
|
||||||
|
<DefineConstants>TRACE</DefineConstants>
|
||||||
|
<Optimize>true</Optimize>
|
||||||
|
<DebugType>pdbonly</DebugType>
|
||||||
|
<PlatformTarget>AnyCPU</PlatformTarget>
|
||||||
|
<LangVersion>7.3</LangVersion>
|
||||||
|
<ErrorReport>prompt</ErrorReport>
|
||||||
|
</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>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="System" />
|
||||||
|
<Reference Include="System.Core" />
|
||||||
|
<Reference Include="System.Xml.Linq" />
|
||||||
|
<Reference Include="System.Data.DataSetExtensions" />
|
||||||
|
<Reference Include="Microsoft.CSharp" />
|
||||||
|
<Reference Include="System.Data" />
|
||||||
|
<Reference Include="System.Net.Http" />
|
||||||
|
<Reference Include="System.Xml" />
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<Compile Include="..\..\..\Common Code\Logging\C4IT.Logging.LogManager.cs">
|
||||||
|
<Link>Common\C4IT.Logging.LogManager.cs</Link>
|
||||||
|
</Compile>
|
||||||
|
<Compile Include="..\SharedAssemblyInfo.cs">
|
||||||
|
<Link>Properties\SharedAssemblyInfo.cs</Link>
|
||||||
|
</Compile>
|
||||||
|
<Compile Include="Common\C4IT.FASD.Base.cs" />
|
||||||
|
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<None Include="App.config" />
|
||||||
|
<None Include="packages.config" />
|
||||||
|
</ItemGroup>
|
||||||
|
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
||||||
|
</Project>
|
||||||
10
F4SDHelper/F4SD - Helper.csproj.vspscc
Normal file
10
F4SDHelper/F4SD - Helper.csproj.vspscc
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
""
|
||||||
|
{
|
||||||
|
"FILE_VERSION" = "9237"
|
||||||
|
"ENLISTMENT_CHOICE" = "NEVER"
|
||||||
|
"PROJECT_FILE_RELATIVE_PATH" = ""
|
||||||
|
"NUMBER_OF_EXCLUDED_FILES" = "0"
|
||||||
|
"ORIGINAL_PROJECT_FILE_PATH" = ""
|
||||||
|
"NUMBER_OF_NESTED_PROJECTS" = "0"
|
||||||
|
"SOURCE_CONTROL_SETTINGS_PROVIDER" = "PROVIDER"
|
||||||
|
}
|
||||||
29
F4SDHelper/Properties/AssemblyInfo.cs
Normal file
29
F4SDHelper/Properties/AssemblyInfo.cs
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
using System.Reflection;
|
||||||
|
using System.Runtime.InteropServices;
|
||||||
|
|
||||||
|
// General Information about an assembly is controlled through the following
|
||||||
|
// set of attributes. Change these attribute values to modify the information
|
||||||
|
// associated with an assembly.
|
||||||
|
[assembly: AssemblyTitle("C4IT - F4SD - WebApi for M42")]
|
||||||
|
[assembly: AssemblyDescription("")]
|
||||||
|
[assembly: AssemblyConfiguration("")]
|
||||||
|
[assembly: AssemblyCulture("")]
|
||||||
|
|
||||||
|
// Setting ComVisible to false makes the types in this assembly not visible
|
||||||
|
// to COM components. If you need to access a type in this assembly from
|
||||||
|
// COM, set the ComVisible attribute to true on that type.
|
||||||
|
[assembly: ComVisible(false)]
|
||||||
|
|
||||||
|
// The following GUID is for the ID of the typelib if this project is exposed to COM
|
||||||
|
[assembly: Guid("eb95e1fb-7a9e-4894-bd28-2d0be2715ebe")]
|
||||||
|
|
||||||
|
// Version information for an assembly consists of the following four values:
|
||||||
|
//
|
||||||
|
// Major Version
|
||||||
|
// Minor Version
|
||||||
|
// Build Number
|
||||||
|
// Revision
|
||||||
|
//
|
||||||
|
// You can specify all the values or you can default the Build and Revision Numbers
|
||||||
|
// by using the '*' as shown below:
|
||||||
|
// [assembly: AssemblyVersion("1.0.*")]
|
||||||
15
F4SDM42WebApi/App.config
Normal file
15
F4SDM42WebApi/App.config
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<configuration>
|
||||||
|
<runtime>
|
||||||
|
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
|
||||||
|
<dependentAssembly>
|
||||||
|
<assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" />
|
||||||
|
<bindingRedirect oldVersion="0.0.0.0-12.0.0.0" newVersion="12.0.0.0" />
|
||||||
|
</dependentAssembly>
|
||||||
|
<dependentAssembly>
|
||||||
|
<assemblyIdentity name="System.Web.Http" publicKeyToken="31bf3856ad364e35" culture="neutral" />
|
||||||
|
<bindingRedirect oldVersion="0.0.0.0-5.2.3.0" newVersion="5.2.3.0" />
|
||||||
|
</dependentAssembly>
|
||||||
|
</assemblyBinding>
|
||||||
|
</runtime>
|
||||||
|
</configuration>
|
||||||
143
F4SDM42WebApi/F4SD - M42WebApi.csproj
Normal file
143
F4SDM42WebApi/F4SD - M42WebApi.csproj
Normal file
@@ -0,0 +1,143 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||||
|
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
|
||||||
|
<PropertyGroup>
|
||||||
|
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
||||||
|
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
|
||||||
|
<ProjectGuid>{D8CBFFCA-0B43-4ACC-80EA-C944E7420CEE}</ProjectGuid>
|
||||||
|
<OutputType>Library</OutputType>
|
||||||
|
<AppDesignerFolder>Properties</AppDesignerFolder>
|
||||||
|
<RootNamespace>C4IT.F4SDM</RootNamespace>
|
||||||
|
<AssemblyName>C4ITF4SDM42WebApi</AssemblyName>
|
||||||
|
<TargetFrameworkVersion>v4.7.2</TargetFrameworkVersion>
|
||||||
|
<FileAlignment>512</FileAlignment>
|
||||||
|
<Deterministic>true</Deterministic>
|
||||||
|
<TargetFrameworkProfile />
|
||||||
|
<SccProjectName>SAK</SccProjectName>
|
||||||
|
<SccLocalPath>SAK</SccLocalPath>
|
||||||
|
<SccAuxPath>SAK</SccAuxPath>
|
||||||
|
<SccProvider>SAK</SccProvider>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
||||||
|
<DebugSymbols>true</DebugSymbols>
|
||||||
|
<DebugType>full</DebugType>
|
||||||
|
<Optimize>false</Optimize>
|
||||||
|
<OutputPath>bin\Debug\</OutputPath>
|
||||||
|
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
||||||
|
<ErrorReport>prompt</ErrorReport>
|
||||||
|
<WarningLevel>4</WarningLevel>
|
||||||
|
<DocumentationFile>
|
||||||
|
</DocumentationFile>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
||||||
|
<DebugType>pdbonly</DebugType>
|
||||||
|
<Optimize>true</Optimize>
|
||||||
|
<OutputPath>bin\Release\</OutputPath>
|
||||||
|
<DefineConstants>TRACE</DefineConstants>
|
||||||
|
<ErrorReport>prompt</ErrorReport>
|
||||||
|
<WarningLevel>4</WarningLevel>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug_and_copy|AnyCPU'">
|
||||||
|
<DebugSymbols>true</DebugSymbols>
|
||||||
|
<OutputPath>bin\Debug_and_copy\</OutputPath>
|
||||||
|
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
||||||
|
<DebugType>full</DebugType>
|
||||||
|
<PlatformTarget>AnyCPU</PlatformTarget>
|
||||||
|
<LangVersion>7.3</LangVersion>
|
||||||
|
<ErrorReport>prompt</ErrorReport>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release_and_copy|AnyCPU'">
|
||||||
|
<OutputPath>bin\Release_and_copy\</OutputPath>
|
||||||
|
<DefineConstants>TRACE</DefineConstants>
|
||||||
|
<Optimize>true</Optimize>
|
||||||
|
<DebugType>pdbonly</DebugType>
|
||||||
|
<PlatformTarget>AnyCPU</PlatformTarget>
|
||||||
|
<LangVersion>7.3</LangVersion>
|
||||||
|
<ErrorReport>prompt</ErrorReport>
|
||||||
|
</PropertyGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<Reference Include="Matrix42.Common, Version=12.0.3.3096, Culture=neutral, processorArchitecture=MSIL">
|
||||||
|
<SpecificVersion>False</SpecificVersion>
|
||||||
|
<HintPath>M42Libraries\Matrix42.Common.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="Matrix42.Contracts.Common, Version=12.0.3.3096, Culture=neutral, processorArchitecture=MSIL">
|
||||||
|
<SpecificVersion>False</SpecificVersion>
|
||||||
|
<HintPath>M42Libraries\Matrix42.Contracts.Common.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="Matrix42.Contracts.Platform, Version=12.0.3.3096, Culture=neutral, processorArchitecture=MSIL">
|
||||||
|
<SpecificVersion>False</SpecificVersion>
|
||||||
|
<HintPath>M42Libraries\Matrix42.Contracts.Platform.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="Matrix42.Contracts.ServiceManagement, Version=12.0.3.3096, Culture=neutral, processorArchitecture=MSIL">
|
||||||
|
<SpecificVersion>False</SpecificVersion>
|
||||||
|
<HintPath>M42Libraries\Matrix42.Contracts.ServiceManagement.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="Matrix42.Pandora.Contracts, Version=12.0.3.3096, Culture=neutral, processorArchitecture=MSIL">
|
||||||
|
<SpecificVersion>False</SpecificVersion>
|
||||||
|
<HintPath>M42Libraries\Matrix42.Pandora.Contracts.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="Matrix42.Services.Description.Contracts, Version=12.0.3.3096, Culture=neutral, processorArchitecture=MSIL">
|
||||||
|
<SpecificVersion>False</SpecificVersion>
|
||||||
|
<HintPath>M42Libraries\Matrix42.Services.Description.Contracts.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="Microsoft.QualityTools.Testing.Fakes, Version=12.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||||
|
<SpecificVersion>False</SpecificVersion>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="Newtonsoft.Json, Version=12.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
|
||||||
|
<HintPath>..\packages\Newtonsoft.Json.12.0.2\lib\net45\Newtonsoft.Json.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="System" />
|
||||||
|
<Reference Include="System.Core" />
|
||||||
|
<Reference Include="System.IO.Compression" />
|
||||||
|
<Reference Include="System.Web" />
|
||||||
|
<Reference Include="System.Web.Http, Version=5.2.3.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
||||||
|
<SpecificVersion>False</SpecificVersion>
|
||||||
|
<HintPath>M42Libraries\System.Web.Http.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="System.Web.OData, Version=5.9.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
||||||
|
<SpecificVersion>False</SpecificVersion>
|
||||||
|
<HintPath>M42Libraries\System.Web.OData.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="System.Xml.Linq" />
|
||||||
|
<Reference Include="System.Data.DataSetExtensions" />
|
||||||
|
<Reference Include="Microsoft.CSharp" />
|
||||||
|
<Reference Include="System.Data" />
|
||||||
|
<Reference Include="System.Net.Http" />
|
||||||
|
<Reference Include="System.Xml" />
|
||||||
|
<Reference Include="update4u.SPS.DataLayer, Version=12.0.3.3096, Culture=neutral, processorArchitecture=MSIL">
|
||||||
|
<SpecificVersion>False</SpecificVersion>
|
||||||
|
<HintPath>M42Libraries\update4u.SPS.DataLayer.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="update4u.SPS.Utility, Version=12.0.3.3096, Culture=neutral, processorArchitecture=MSIL">
|
||||||
|
<SpecificVersion>False</SpecificVersion>
|
||||||
|
<HintPath>M42Libraries\update4u.SPS.Utility.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<Compile Include="..\SharedAssemblyInfo.cs">
|
||||||
|
<Link>Properties\SharedAssemblyInfo.cs</Link>
|
||||||
|
</Compile>
|
||||||
|
<Compile Include="cM42LogEntry.cs" />
|
||||||
|
<Compile Include="F4SDHelperService.cs" />
|
||||||
|
<Compile Include="F4SDM42WebApiController.cs" />
|
||||||
|
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<ProjectReference Include="..\F4SDHelper\F4SD - Helper.csproj">
|
||||||
|
<Project>{eb95e1fb-7a9e-4894-bd28-2d0be2715ebe}</Project>
|
||||||
|
<Name>F4SD - Helper</Name>
|
||||||
|
<Private>True</Private>
|
||||||
|
</ProjectReference>
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<None Include="App.config" />
|
||||||
|
<None Include="deploy.ps1" />
|
||||||
|
<None Include="packages.config" />
|
||||||
|
<None Include="SignSourceFiles.cmd" />
|
||||||
|
</ItemGroup>
|
||||||
|
<Import Project="..\M42F4SDUUXWorkspace\M42F4SDUUXWorkspace.projitems" Label="Shared" />
|
||||||
|
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
||||||
|
<PropertyGroup>
|
||||||
|
<PostBuildEvent>@echo powershell -ExecutionPolicy Unrestricted $(ProjectDir)deploy.ps1 -ProjectDir $(ProjectDir) -SolutionDir $(SolutionDir) -OutDir $(OutDir) -ConfigurationName $(ConfigurationName)</PostBuildEvent>
|
||||||
|
</PropertyGroup>
|
||||||
|
</Project>
|
||||||
10
F4SDM42WebApi/F4SD - M42WebApi.csproj.vspscc
Normal file
10
F4SDM42WebApi/F4SD - M42WebApi.csproj.vspscc
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
""
|
||||||
|
{
|
||||||
|
"FILE_VERSION" = "9237"
|
||||||
|
"ENLISTMENT_CHOICE" = "NEVER"
|
||||||
|
"PROJECT_FILE_RELATIVE_PATH" = ""
|
||||||
|
"NUMBER_OF_EXCLUDED_FILES" = "0"
|
||||||
|
"ORIGINAL_PROJECT_FILE_PATH" = ""
|
||||||
|
"NUMBER_OF_NESTED_PROJECTS" = "0"
|
||||||
|
"SOURCE_CONTROL_SETTINGS_PROVIDER" = "PROVIDER"
|
||||||
|
}
|
||||||
1803
F4SDM42WebApi/F4SDHelperService.cs
Normal file
1803
F4SDM42WebApi/F4SDHelperService.cs
Normal file
File diff suppressed because it is too large
Load Diff
377
F4SDM42WebApi/F4SDM42WebApiController.cs
Normal file
377
F4SDM42WebApi/F4SDM42WebApiController.cs
Normal file
@@ -0,0 +1,377 @@
|
|||||||
|
using C4IT.F4SDM;
|
||||||
|
using C4IT.FASD.Base;
|
||||||
|
using C4IT.Logging;
|
||||||
|
using Matrix42.Common;
|
||||||
|
using Matrix42.Contracts.ServiceManagement.ServiceContracts;
|
||||||
|
using Matrix42.Pandora.Contracts;
|
||||||
|
using Matrix42.Services.Description.Contracts;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Data;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Net;
|
||||||
|
using System.Net.Http;
|
||||||
|
using System.Reflection;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
using System.Web;
|
||||||
|
using System.Web.Http;
|
||||||
|
using System.Web.Http.Controllers;
|
||||||
|
using System.Web.OData;
|
||||||
|
using System.Web.OData.Query;
|
||||||
|
using update4u.SPS.Utility.GlobalConfiguration;
|
||||||
|
using static C4IT.FASD.Base.cF4SDTicket;
|
||||||
|
using static C4IT.Logging.cLogManager;
|
||||||
|
|
||||||
|
namespace C4IT.F4SD
|
||||||
|
{
|
||||||
|
[RoutePrefix("api/C4ITF4SDWebApi")]
|
||||||
|
public partial class F4SDM42WebApiController : ApiController
|
||||||
|
{
|
||||||
|
public static bool IsInitialized { get; private set; } = false;
|
||||||
|
public static F4SDM42WebApiController defaultInstance;
|
||||||
|
//private readonly IIncidentService _incidentService;
|
||||||
|
internal readonly GlobalConfigurationProvider _globalConfigurationProvider;
|
||||||
|
public readonly IJournalService _journalService;
|
||||||
|
//public readonly IObjectService _objectService;
|
||||||
|
//public readonly IFragmentService _fragmentService;
|
||||||
|
internal readonly IEntityDataService _entityDataService;
|
||||||
|
internal readonly IPandoraUserProfile _userProfile;
|
||||||
|
|
||||||
|
|
||||||
|
private readonly F4SDHelperService _f4stHelperService;
|
||||||
|
public string BaseUrl => $"{Request.RequestUri.Scheme}://{Request.RequestUri.Host}";
|
||||||
|
public string EndpointBaseUrl => $"{BaseUrl}/m42Services/api/c4itf4sdwebapi";
|
||||||
|
public F4SDM42WebApiController(
|
||||||
|
//IObjectService objectService,
|
||||||
|
//IIncidentService incidentService,
|
||||||
|
IJournalService journalService
|
||||||
|
//IFragmentService fragmentService,
|
||||||
|
, IEntityDataService entityDataService
|
||||||
|
, IPandoraUserProfile userProfile
|
||||||
|
)
|
||||||
|
{
|
||||||
|
defaultInstance = this;
|
||||||
|
//_objectService = objectService;
|
||||||
|
//_fragmentService = fragmentService;
|
||||||
|
//_incidentService = Guard.NullArgument(incidentService, "incidentService");
|
||||||
|
|
||||||
|
_entityDataService = entityDataService;
|
||||||
|
_journalService = journalService;
|
||||||
|
_globalConfigurationProvider = GlobalConfigurationProvider.Instance;
|
||||||
|
_f4stHelperService = new F4SDHelperService();
|
||||||
|
_userProfile = userProfile;
|
||||||
|
}
|
||||||
|
|
||||||
|
private static object initLock = new object();
|
||||||
|
protected override void Initialize(HttpControllerContext controllerContext)
|
||||||
|
{
|
||||||
|
base.Initialize(controllerContext);
|
||||||
|
try
|
||||||
|
{
|
||||||
|
//System.Diagnostics.Debugger.Launch();
|
||||||
|
lock (initLock)
|
||||||
|
{
|
||||||
|
if (IsInitialized || F4SDM42LogsWebApiController.IsInitialized)
|
||||||
|
return;
|
||||||
|
var Ass = Assembly.GetExecutingAssembly();
|
||||||
|
var LM = cLogManagerFile.CreateInstance(LocalMachine: true, A: Ass);
|
||||||
|
var CM = MethodBase.GetCurrentMethod();
|
||||||
|
LogMethodBegin(CM);
|
||||||
|
cLogManager.DefaultLogger.LogAssemblyInfo(Ass);
|
||||||
|
IsInitialized = true;
|
||||||
|
LogMethodEnd(CM);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch { };
|
||||||
|
}
|
||||||
|
|
||||||
|
[Route("getDirectLinkCreateTicket"), HttpGet]
|
||||||
|
public async Task<F4SDHelperService.DirectLink> getDirectLinkCreateTicket(string sid = "", string assetname = "")
|
||||||
|
{
|
||||||
|
await Task.Delay(0);
|
||||||
|
return await _f4stHelperService.getDirectLinkCreateTicket(sid, assetname);
|
||||||
|
}
|
||||||
|
[Route("getDirectLinkF4SD"), HttpGet]
|
||||||
|
public async Task<string> getDirectLinkF4SD(Guid EOID, string Type)
|
||||||
|
{
|
||||||
|
return await _f4stHelperService.getDirectLinkF4SD(EOID, Type);
|
||||||
|
}
|
||||||
|
|
||||||
|
[Route("getTicketList"), HttpGet]
|
||||||
|
public async Task<List<cF4SDTicketSummary>> getTicketList(
|
||||||
|
string sid,
|
||||||
|
int hours,
|
||||||
|
int queueoption = 0,
|
||||||
|
string queues = ""
|
||||||
|
)
|
||||||
|
{
|
||||||
|
// "HR:2a7e..." → Tuple("HR", "2a7e..."), dann UrlDecode
|
||||||
|
var decodedPairs = queues
|
||||||
|
.Split(new[] { '|' }, StringSplitOptions.RemoveEmptyEntries)
|
||||||
|
.Select(part =>
|
||||||
|
{
|
||||||
|
var segments = part.Split(':');
|
||||||
|
if (segments.Length != 2)
|
||||||
|
return null;
|
||||||
|
|
||||||
|
var name = HttpUtility.UrlDecode(segments[0]);
|
||||||
|
var idStr = HttpUtility.UrlDecode(segments[1]);
|
||||||
|
|
||||||
|
return Guid.TryParse(idStr, out var guid)
|
||||||
|
? new cApiM42TicketQueueInfo { QueueName = name, QueueID = guid }
|
||||||
|
: null;
|
||||||
|
})
|
||||||
|
.Where(q => q != null)
|
||||||
|
.ToList();
|
||||||
|
|
||||||
|
// Nun weiterreichen an Service
|
||||||
|
return await _f4stHelperService.getTicketListByUser(
|
||||||
|
sid,
|
||||||
|
hours,
|
||||||
|
queueoption,
|
||||||
|
decodedPairs
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
[Route("getTicketDetails"), HttpGet]
|
||||||
|
public async Task<cF4SDTicket> getTicketDetails(Guid objectId)
|
||||||
|
{
|
||||||
|
var tickets = await _f4stHelperService.getTicketDetails(new List<Guid>() { objectId });
|
||||||
|
if (tickets.Count > 0)
|
||||||
|
return tickets[0];
|
||||||
|
else
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
[Route("getTicketHistory"), HttpGet]
|
||||||
|
public async Task<List<cTicketJournalItem>> getTicketHistory(Guid objectId)
|
||||||
|
{
|
||||||
|
return await _f4stHelperService.GetJournalEntries(objectId);
|
||||||
|
}
|
||||||
|
|
||||||
|
[Route("getTicketOverviewCounts"), HttpGet]
|
||||||
|
public async Task<F4SDHelperService.TicketOverviewCountsResult> getTicketOverviewCounts(string sid, string scope = "personal", string keys = "")
|
||||||
|
{
|
||||||
|
var parsedKeys = (keys ?? string.Empty)
|
||||||
|
.Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries)
|
||||||
|
.Select(key => key.Trim())
|
||||||
|
.Where(key => !string.IsNullOrWhiteSpace(key))
|
||||||
|
.ToList();
|
||||||
|
|
||||||
|
return await _f4stHelperService.getTicketOverviewCounts(sid, scope, parsedKeys);
|
||||||
|
}
|
||||||
|
|
||||||
|
[Route("getTicketOverviewRelations"), HttpGet]
|
||||||
|
public async Task<List<F4SDHelperService.TicketOverviewRelationDto>> getTicketOverviewRelations(string sid, string scope = "personal", string key = "", int count = 0)
|
||||||
|
{
|
||||||
|
return await _f4stHelperService.getTicketOverviewRelations(sid, scope, key, count);
|
||||||
|
}
|
||||||
|
/*
|
||||||
|
[Route("updateActivitySolution/{objectId}"), HttpPost]
|
||||||
|
public async Task<HttpResponseMessage> updateActivitySolution(Guid objectId, [FromBody] string SolutionHtml)
|
||||||
|
{
|
||||||
|
return new HttpResponseMessage
|
||||||
|
{
|
||||||
|
StatusCode = await _f4stHelperService.updateActivitySolution(objectId, SolutionHtml) ? HttpStatusCode.NoContent : HttpStatusCode.BadRequest,
|
||||||
|
};
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
[Route("getPickup/{name}"), HttpGet]
|
||||||
|
//[CacheOutput(UseETAG = true)]
|
||||||
|
public async Task<HttpResponseMessage> getPickup(string name, [FromUri] EntityEnumerationVisibilityMode mode = EntityEnumerationVisibilityMode.None, [FromUri] Int32 group = -1)
|
||||||
|
{
|
||||||
|
await Task.Delay(0);
|
||||||
|
EntityEnumeration enumerationTemp = _entityDataService.GetEnumeration(name, mode);
|
||||||
|
var vals = enumerationTemp.Values;
|
||||||
|
|
||||||
|
if (group > -1)
|
||||||
|
{
|
||||||
|
vals = vals.Where(row => !row.Extentions.TryGetValue("StateGroup", out var stateGroup) || (ConvertHelper.ParseInt(stateGroup, 0) == group)).ToArray();
|
||||||
|
}
|
||||||
|
|
||||||
|
string[] columns = new string[] { "position" };
|
||||||
|
foreach (var item in vals)
|
||||||
|
{
|
||||||
|
item.Extentions = item.Extentions.Where(x => columns.Contains(x.Key.ToLower())).ToDictionary(x => x.Key, x => x.Value);
|
||||||
|
}
|
||||||
|
|
||||||
|
EntityEnumeration enumeration = new EntityEnumeration
|
||||||
|
{
|
||||||
|
Name = enumerationTemp.Name,
|
||||||
|
Values = vals.ToArray()
|
||||||
|
};
|
||||||
|
//CacheOutputAttribute.RegisterResponseEtag($"enum_{enumeration.Name}_{(int)mode}", $"{enumeration.Name}_{(int)mode}", cultureInvariant: false, userInvariant: true, val);
|
||||||
|
return Request.CreateResponse(HttpStatusCode.OK, enumeration);
|
||||||
|
}
|
||||||
|
|
||||||
|
[Route("getMyRoleMemberships", Order = 2), HttpGet]
|
||||||
|
public async Task<HttpResponseMessage> getMyRoleMemberships()
|
||||||
|
{
|
||||||
|
var User = _userProfile.GetInteractiveUserInfo();
|
||||||
|
var filter = AsqlHelper.BuildInCondition("ID", new Guid[] { User.Id });
|
||||||
|
return Request.CreateResponse(HttpStatusCode.OK, await _f4stHelperService.UserPermissionsInfo(filter));
|
||||||
|
}
|
||||||
|
[HttpGet]
|
||||||
|
[Route("getRoleMemberships", Order = 1)]
|
||||||
|
public async Task<HttpResponseMessage> getRoleMemberships([FromUri] GetRoleMembershipsRequest req)
|
||||||
|
{
|
||||||
|
var filter = "";
|
||||||
|
|
||||||
|
if (req.Id != null && req.Id.Value != Guid.Empty)
|
||||||
|
{
|
||||||
|
filter = AsqlHelper.BuildInCondition("ID", new Guid[] { req.Id.Value });
|
||||||
|
}
|
||||||
|
else if (!string.IsNullOrEmpty(req.Sid))
|
||||||
|
{
|
||||||
|
filter = AsqlHelper.BuildInCondition("Accounts.T(SPSAccountClassAD).Sid", new string[] { req.Sid });
|
||||||
|
}
|
||||||
|
else if (!string.IsNullOrEmpty(req.Upn))
|
||||||
|
{
|
||||||
|
filter = AsqlHelper.BuildInCondition("Accounts.T(SPSAccountClassAD).UserPrincipalName", new string[] { req.Upn });
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!string.IsNullOrEmpty(filter))
|
||||||
|
{
|
||||||
|
return Request.CreateResponse(HttpStatusCode.OK, await _f4stHelperService.UserPermissionsInfo(filter));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public class GetRoleMembershipsRequest
|
||||||
|
{
|
||||||
|
public Guid? Id { get; set; }
|
||||||
|
public string Sid { get; set; }
|
||||||
|
public string Upn { get; set; }
|
||||||
|
public GetRoleMembershipsRequest() { }
|
||||||
|
}
|
||||||
|
|
||||||
|
[Route("isAlive"), HttpGet]
|
||||||
|
public HttpResponseMessage isAlive()
|
||||||
|
{
|
||||||
|
return new HttpResponseMessage(HttpStatusCode.NoContent);
|
||||||
|
}
|
||||||
|
|
||||||
|
[Route("loglevel"), HttpGet]
|
||||||
|
public async Task<string> setDebugMode(string debug = "0")
|
||||||
|
{
|
||||||
|
var CM = MethodBase.GetCurrentMethod();
|
||||||
|
LogMethodBegin(CM);
|
||||||
|
try
|
||||||
|
{
|
||||||
|
await Task.Delay(0);
|
||||||
|
DefaultLogger.Manager.Level = debug == "1" || debug.Equals("true", StringComparison.OrdinalIgnoreCase) ? LogLevels.Debug : LogLevels.Info;
|
||||||
|
return DefaultLogger.Manager.Level.ToString();
|
||||||
|
}
|
||||||
|
catch (Exception E)
|
||||||
|
{
|
||||||
|
LogException(E);
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
finally
|
||||||
|
{
|
||||||
|
LogMethodEnd(CM);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
[Route("log"), HttpGet]
|
||||||
|
public HttpResponseMessage getLog(string download = "0", int count = 50, string filter = "")
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
return _f4stHelperService.privGetLog(download, count, Request, filter);
|
||||||
|
}
|
||||||
|
catch (Exception E)
|
||||||
|
{
|
||||||
|
LogException(E);
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
[RoutePrefix("api/C4ITF4SDWebApi/Logs")]
|
||||||
|
public partial class F4SDM42LogsWebApiController : ApiController
|
||||||
|
{
|
||||||
|
private readonly F4SDHelperService _f4stHelperService;
|
||||||
|
|
||||||
|
public static bool IsInitialized { get; private set; } = false;
|
||||||
|
|
||||||
|
private static object initLock = new object();
|
||||||
|
protected override void Initialize(HttpControllerContext controllerContext)
|
||||||
|
{
|
||||||
|
base.Initialize(controllerContext);
|
||||||
|
try
|
||||||
|
{
|
||||||
|
lock (initLock)
|
||||||
|
{
|
||||||
|
if (IsInitialized || F4SDM42WebApiController.IsInitialized)
|
||||||
|
return;
|
||||||
|
var Ass = Assembly.GetExecutingAssembly();
|
||||||
|
var LM = cLogManagerFile.CreateInstance(LocalMachine: true, A: Ass);
|
||||||
|
var CM = MethodBase.GetCurrentMethod();
|
||||||
|
LogMethodBegin(CM);
|
||||||
|
cLogManager.DefaultLogger.LogAssemblyInfo(Ass);
|
||||||
|
IsInitialized = true;
|
||||||
|
LogMethodEnd(CM);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch { };
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
public F4SDM42LogsWebApiController()
|
||||||
|
{
|
||||||
|
_f4stHelperService = new F4SDHelperService();
|
||||||
|
}
|
||||||
|
|
||||||
|
[Route(""), HttpGet]
|
||||||
|
[EnableQuery]
|
||||||
|
public IEnumerable<cM42LogEntry> getLog2(ODataQueryOptions<cM42LogEntry> queryOptions)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
IQueryable<cM42LogEntry> queryable = _f4stHelperService.privGetLog2().AsQueryable();
|
||||||
|
if (queryOptions.Filter != null)
|
||||||
|
{
|
||||||
|
queryable = queryOptions.Filter.ApplyTo(queryable, new ODataQuerySettings()).Cast<cM42LogEntry>();
|
||||||
|
}
|
||||||
|
return queryable;
|
||||||
|
}
|
||||||
|
catch (Exception E)
|
||||||
|
{
|
||||||
|
LogException(E);
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
[Route("$count")]
|
||||||
|
[HttpGet]
|
||||||
|
public int Log2Count(ODataQueryOptions<cM42LogEntry> queryOptions)
|
||||||
|
{
|
||||||
|
IQueryable<cM42LogEntry> queryable = _f4stHelperService.privGetLog2().AsQueryable();
|
||||||
|
if (queryOptions.Filter != null)
|
||||||
|
{
|
||||||
|
queryable = queryOptions.Filter.ApplyTo(queryable, new ODataQuerySettings()).Cast<cM42LogEntry>();
|
||||||
|
}
|
||||||
|
return queryable.Count();
|
||||||
|
}
|
||||||
|
|
||||||
|
[Route("{id}")]
|
||||||
|
[OperationType(OperationType.GetObject)]
|
||||||
|
public cM42LogEntry GetClass(int id)
|
||||||
|
{
|
||||||
|
return _f4stHelperService.privGetLog2(id);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public class cGetPropertyBody
|
||||||
|
{
|
||||||
|
public string TableName { get; set; }
|
||||||
|
public List<string> Columns { get; set; } = new List<string>();
|
||||||
|
public cGetPropertyBody() { }
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
BIN
F4SDM42WebApi/M42Libraries/Matrix42.Common.dll
Normal file
BIN
F4SDM42WebApi/M42Libraries/Matrix42.Common.dll
Normal file
Binary file not shown.
BIN
F4SDM42WebApi/M42Libraries/Matrix42.Contracts.Common.dll
Normal file
BIN
F4SDM42WebApi/M42Libraries/Matrix42.Contracts.Common.dll
Normal file
Binary file not shown.
BIN
F4SDM42WebApi/M42Libraries/Matrix42.Contracts.Platform.dll
Normal file
BIN
F4SDM42WebApi/M42Libraries/Matrix42.Contracts.Platform.dll
Normal file
Binary file not shown.
Binary file not shown.
BIN
F4SDM42WebApi/M42Libraries/Matrix42.Pandora.Contracts.dll
Normal file
BIN
F4SDM42WebApi/M42Libraries/Matrix42.Pandora.Contracts.dll
Normal file
Binary file not shown.
Binary file not shown.
BIN
F4SDM42WebApi/M42Libraries/System.Web.Http.dll
Normal file
BIN
F4SDM42WebApi/M42Libraries/System.Web.Http.dll
Normal file
Binary file not shown.
BIN
F4SDM42WebApi/M42Libraries/System.Web.OData.dll
Normal file
BIN
F4SDM42WebApi/M42Libraries/System.Web.OData.dll
Normal file
Binary file not shown.
BIN
F4SDM42WebApi/M42Libraries/update4u.SPS.DataLayer.dll
Normal file
BIN
F4SDM42WebApi/M42Libraries/update4u.SPS.DataLayer.dll
Normal file
Binary file not shown.
BIN
F4SDM42WebApi/M42Libraries/update4u.SPS.Utility.dll
Normal file
BIN
F4SDM42WebApi/M42Libraries/update4u.SPS.Utility.dll
Normal file
Binary file not shown.
29
F4SDM42WebApi/Properties/AssemblyInfo.cs
Normal file
29
F4SDM42WebApi/Properties/AssemblyInfo.cs
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
using System.Reflection;
|
||||||
|
using System.Runtime.InteropServices;
|
||||||
|
|
||||||
|
// General Information about an assembly is controlled through the following
|
||||||
|
// set of attributes. Change these attribute values to modify the information
|
||||||
|
// associated with an assembly.
|
||||||
|
[assembly: AssemblyTitle("C4IT - F4SD - WebApi for M42")]
|
||||||
|
[assembly: AssemblyDescription("")]
|
||||||
|
[assembly: AssemblyConfiguration("")]
|
||||||
|
[assembly: AssemblyCulture("")]
|
||||||
|
|
||||||
|
// Setting ComVisible to false makes the types in this assembly not visible
|
||||||
|
// to COM components. If you need to access a type in this assembly from
|
||||||
|
// COM, set the ComVisible attribute to true on that type.
|
||||||
|
[assembly: ComVisible(false)]
|
||||||
|
|
||||||
|
// The following GUID is for the ID of the typelib if this project is exposed to COM
|
||||||
|
[assembly: Guid("d8cbffca-0b43-4acc-80ea-c944e7420cee")]
|
||||||
|
|
||||||
|
// Version information for an assembly consists of the following four values:
|
||||||
|
//
|
||||||
|
// Major Version
|
||||||
|
// Minor Version
|
||||||
|
// Build Number
|
||||||
|
// Revision
|
||||||
|
//
|
||||||
|
// You can specify all the values or you can default the Build and Revision Numbers
|
||||||
|
// by using the '*' as shown below:
|
||||||
|
// [assembly: AssemblyVersion("1.0.*")]
|
||||||
10
F4SDM42WebApi/SignSourceFiles.cmd
Normal file
10
F4SDM42WebApi/SignSourceFiles.cmd
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
set ProductName="C4IT First Aid Service Desk Matrix42 ESM Addon"
|
||||||
|
|
||||||
|
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% ".\bin\Release\C4ITF4SDM42WebApi.dll" ".\bin\Release\C4ITF4SDM42WebApiHelper.dll"
|
||||||
|
|
||||||
|
pause
|
||||||
|
|
||||||
|
|
||||||
21
F4SDM42WebApi/cM42LogEntry.cs
Normal file
21
F4SDM42WebApi/cM42LogEntry.cs
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
using Matrix42.Services.Description.Contracts;
|
||||||
|
using System;
|
||||||
|
|
||||||
|
namespace C4IT.F4SDM
|
||||||
|
{
|
||||||
|
[DisplayName(Name = "Log Entry", Type = DisplayNameTypes.Static)]
|
||||||
|
public class cM42LogEntry
|
||||||
|
{
|
||||||
|
public string DisplayName
|
||||||
|
{
|
||||||
|
get => string.Format("Line {0}", LineNumber.ToString());
|
||||||
|
}
|
||||||
|
public DateTime date { get; set; }
|
||||||
|
public string ProcessId { get; set; }
|
||||||
|
public string logLvl { get; set; }
|
||||||
|
public string Theme { get; set; }
|
||||||
|
public string Message { get; set; }
|
||||||
|
[Identifier]
|
||||||
|
public int LineNumber { get; internal set; }
|
||||||
|
}
|
||||||
|
}
|
||||||
77
F4SDM42WebApi/deploy.ps1
Normal file
77
F4SDM42WebApi/deploy.ps1
Normal file
@@ -0,0 +1,77 @@
|
|||||||
|
#POSTBUILD powershell -ExecutionPolicy Unrestricted $(ProjectDir)deploy.ps1 -ProjectDir $(ProjectDir) -SolutionDir $(SolutionDir) -OutDir $(OutDir) -ConfigurationName $(ConfigurationName)
|
||||||
|
param([string]$OutDir,
|
||||||
|
[string]$ConfigurationName,
|
||||||
|
[string]$SolutionDir,
|
||||||
|
[string]$ProjectDir);
|
||||||
|
|
||||||
|
$copyAssembly = 0
|
||||||
|
$copyWorkspace = 0
|
||||||
|
$signAssembly = 1
|
||||||
|
$ProductName="C4IT - F4SD - WebApi for M42"
|
||||||
|
|
||||||
|
|
||||||
|
$targetPath = "\\srvwsm001.imagoverum.com\c$\Program Files (x86)\Matrix42\Matrix42 Workplace Management"
|
||||||
|
$minifyApi = "https://www.toptal.com/developers/javascript-minifier/api/raw"
|
||||||
|
|
||||||
|
|
||||||
|
#minify js file
|
||||||
|
$workdirPath = "$ProjectDir${OutDir}"
|
||||||
|
$workdirPathZip = "$workdirPath\zip"
|
||||||
|
|
||||||
|
|
||||||
|
Get-ChildItem -Path "$workdirPathZip" -File -Recurse | Remove-Item
|
||||||
|
Expand-Archive -Path "$workdirPath\F4SD - M42.zip" -DestinationPath $workdirPathZip
|
||||||
|
|
||||||
|
$buildDate = $((get-date).ToLocalTime()).ToString("yyyy-MM-dd")
|
||||||
|
$jsCode = Get-Content -Path "$workdirPath\F4SD.js" -Raw
|
||||||
|
$body = @{input=$jsCode}
|
||||||
|
$contentType = 'application/x-www-form-urlencoded'
|
||||||
|
$resp = Invoke-WebRequest -Method POST -Uri $minifyApi -body $body -ContentType $contentType
|
||||||
|
$workspaceVersion = (Get-Content -Raw -Path "$workdirPath\workspace.json" | ConvertFrom-Json).version
|
||||||
|
[IO.File]::WriteAllLines("$workdirPath\F4SD.min.js","/*v$workspaceVersion ($buildDate)*/" + $resp.Content)
|
||||||
|
|
||||||
|
$finalWorkspacePath = "$workdirPathZip\Files\WM\workspaces\C4IT_F4SD"
|
||||||
|
New-Item -ItemType Directory -Force -Path $finalWorkspacePath | out-null
|
||||||
|
Copy-Item "$workdirPath\F4SD.min.js" -Destination "$finalWorkspacePath"
|
||||||
|
Copy-Item "$workdirPath\F4SDIcons.svg" -Destination "$finalWorkspacePath"
|
||||||
|
Copy-Item "$workdirPath\workspace.json" -Destination "$finalWorkspacePath"
|
||||||
|
|
||||||
|
$finalAssemblyPath = "$workdirPathZip\Assemblies\svc\bin\"
|
||||||
|
New-Item -ItemType Directory -Force -Path $finalWorkspacePath | out-null
|
||||||
|
|
||||||
|
if($signAssembly -eq 1)
|
||||||
|
{
|
||||||
|
|
||||||
|
$SignTool="$SolutionDir\..\..\Workspaces\Common Code\Tools\signtool.exe"
|
||||||
|
$TimeStamp="http://rfc3161timestamp.globalsign.com/advanced"
|
||||||
|
& $SignTool sign /a /tr $TimeStamp /td SHA256 /fd SHA256 /d $ProductName C:\Users\dm134\source\repos\F4SDM42WebApi\F4SDM42WebApi\bin\Release\C4ITF4SDM42WebApi.dll C:\Users\dm134\source\repos\F4SDM42WebApi\F4SDM42WebApi\bin\Release\C4ITF4SDM42WebApiHelper.dll
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Get-ChildItem -Path "$ProjectDir${OutDir}C4ITF4SD*" -Include *.dll | Copy-Item -Destination $finalAssemblyPath
|
||||||
|
|
||||||
|
Remove-Item "$workdirPath\F4SD - M42 v$workspaceVersion.zip"
|
||||||
|
Compress-Archive -Path "$workdirPathZip\*" -DestinationPath "$workdirPath\F4SD - M42 v$workspaceVersion.zip"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
IF( $ConfigurationName -eq "Release_and_copy" -OR $ConfigurationName -eq "Debug_and_copy" )
|
||||||
|
{
|
||||||
|
#Copy Assembly
|
||||||
|
if($copyAssembly -eq 1)
|
||||||
|
{
|
||||||
|
Get-ChildItem -Path "$ProjectDir${OutDir}C4ITF4SD*" -Include *.dll | Copy-Item -Destination "$targetPath\svc\bin\"
|
||||||
|
}
|
||||||
|
#Copy Workspace
|
||||||
|
if($copyWorkspace -eq 1)
|
||||||
|
{
|
||||||
|
$targetWorkspacePath = "$targetPath\WM\workspaces\C4IT_F4SD"
|
||||||
|
New-Item -ItemType Directory -Force -Path $targetWorkspacePath | out-null
|
||||||
|
Get-ChildItem -Path "$finalWorkspacePath\*" -Include * | Copy-Item -Destination $targetWorkspacePath
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
17
M42F4SDUUXWorkspace/F4SD - M42 UUX Workspace.shproj
Normal file
17
M42F4SDUUXWorkspace/F4SD - M42 UUX Workspace.shproj
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||||
|
<PropertyGroup Label="Globals">
|
||||||
|
<ProjectGuid>c3d52a04-2461-4f35-8edf-de7226add677</ProjectGuid>
|
||||||
|
<MinimumVisualStudioVersion>14.0</MinimumVisualStudioVersion>
|
||||||
|
<SccProjectName>SAK</SccProjectName>
|
||||||
|
<SccProvider>SAK</SccProvider>
|
||||||
|
<SccAuxPath>SAK</SccAuxPath>
|
||||||
|
<SccLocalPath>SAK</SccLocalPath>
|
||||||
|
</PropertyGroup>
|
||||||
|
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
|
||||||
|
<Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\CodeSharing\Microsoft.CodeSharing.Common.Default.props" />
|
||||||
|
<Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\CodeSharing\Microsoft.CodeSharing.Common.props" />
|
||||||
|
<PropertyGroup />
|
||||||
|
<Import Project="M42F4SDUUXWorkspace.projitems" Label="Shared" />
|
||||||
|
<Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\CodeSharing\Microsoft.CodeSharing.CSharp.targets" />
|
||||||
|
</Project>
|
||||||
10
M42F4SDUUXWorkspace/F4SD - M42 UUX Workspace.shproj.vspscc
Normal file
10
M42F4SDUUXWorkspace/F4SD - M42 UUX Workspace.shproj.vspscc
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
""
|
||||||
|
{
|
||||||
|
"FILE_VERSION" = "9237"
|
||||||
|
"ENLISTMENT_CHOICE" = "NEVER"
|
||||||
|
"PROJECT_FILE_RELATIVE_PATH" = ""
|
||||||
|
"NUMBER_OF_EXCLUDED_FILES" = "0"
|
||||||
|
"ORIGINAL_PROJECT_FILE_PATH" = ""
|
||||||
|
"NUMBER_OF_NESTED_PROJECTS" = "0"
|
||||||
|
"SOURCE_CONTROL_SETTINGS_PROVIDER" = "PROVIDER"
|
||||||
|
}
|
||||||
BIN
M42F4SDUUXWorkspace/F4SD - M42.zip
Normal file
BIN
M42F4SDUUXWorkspace/F4SD - M42.zip
Normal file
Binary file not shown.
108
M42F4SDUUXWorkspace/F4SD.js
Normal file
108
M42F4SDUUXWorkspace/F4SD.js
Normal file
@@ -0,0 +1,108 @@
|
|||||||
|
(function (w) {
|
||||||
|
'use strict';
|
||||||
|
const icons = 'c4it-f4sd-icons';
|
||||||
|
w.mx = w.mx || {};
|
||||||
|
w.mx.workspacesConfig = w.mx.workspacesConfig || {};
|
||||||
|
w.mx.workspacesConfig.modules = w.mx.workspacesConfig.modules || {};
|
||||||
|
w.mx.workspacesConfig.modules.add = w.mx.workspacesConfig.modules.add || function (name, config) {
|
||||||
|
w.mx.workspacesConfig.modules[name] = config;
|
||||||
|
};
|
||||||
|
|
||||||
|
w.mx.workspacesConfig.modules.add('mx.C4IT.F4SD', {
|
||||||
|
name: 'mx.C4IT.F4SD',
|
||||||
|
config: ['$mdIconProvider', function ($mdIconProvider) {
|
||||||
|
$mdIconProvider.iconSet(icons, 'workspaces/C4IT_F4SD/F4SDIcons.svg');
|
||||||
|
|
||||||
|
w.mx.components = w.mx.components || {};
|
||||||
|
w.mx.components.Icons = w.mx.components.Icons || [];
|
||||||
|
|
||||||
|
w.mx.components.Icons.unshift({
|
||||||
|
id: icons,
|
||||||
|
name: 'C4IT F4SD Icons',
|
||||||
|
icons: [{
|
||||||
|
SVG: true,
|
||||||
|
id: `${icons}:icon-f4sd`,
|
||||||
|
name: 'F4SD Icon',
|
||||||
|
keywords: ['c4it', 'custom', 'f4sd']
|
||||||
|
}, {
|
||||||
|
SVG: true,
|
||||||
|
id: `${icons}:icon-f4sd-coloured`,
|
||||||
|
name: 'F4SD Icon (coloured)',
|
||||||
|
keywords: ['c4it', 'custom', 'f4sd']
|
||||||
|
}]
|
||||||
|
});
|
||||||
|
}]
|
||||||
|
});
|
||||||
|
})(window);
|
||||||
|
|
||||||
|
(function (w) {
|
||||||
|
'use strict';
|
||||||
|
|
||||||
|
angular.module("mx.C4IT.F4SD")
|
||||||
|
.controller("mx.C4IT.F4SD.Actions.callF4SD", [
|
||||||
|
"mx.shell.Config",
|
||||||
|
"mx.SolutionBuilderAgent.Http",
|
||||||
|
"mx.shell.NotificationService",
|
||||||
|
"mx.internationalization",
|
||||||
|
function (shellConfig, $http, notificationService, i18n) {
|
||||||
|
const vm = this;
|
||||||
|
const F4SD_URL_PREFIX = 'f4sdsend://localhost/';
|
||||||
|
const ERROR_INVALID_RESPONSE = "Invalid response from server";
|
||||||
|
const ERROR_SERVICE_UNAVAILABLE = "Service not available";
|
||||||
|
|
||||||
|
vm.restHost = shellConfig.settings.restHosts.default;
|
||||||
|
vm.messageF4SDOpened = i18n.get('c4it.f4sd.action-open-called') || 'F4SD wird geöffnet...';
|
||||||
|
|
||||||
|
vm.execute = function (conf, para) {
|
||||||
|
const eoid = conf[0]['Sys-ObjectId'] || conf[0].ID;
|
||||||
|
|
||||||
|
// Aktionsparameter abrufen
|
||||||
|
if (para.controllerParams) {
|
||||||
|
try {
|
||||||
|
vm.controllerParams = new URLSearchParams(para.controllerParams);
|
||||||
|
} catch (error) {
|
||||||
|
console.error('Fehler beim Parsen der Controller-Parameter:', error);
|
||||||
|
notificationService.error("Formatfehler in Aktionskonfigurationsparametern");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
vm.controllerParams = new URLSearchParams();
|
||||||
|
}
|
||||||
|
|
||||||
|
// F4SD-URL abrufen
|
||||||
|
const uri = new URL("api/c4itf4sdwebapi/getdirectlinkf4sd/", vm.restHost);
|
||||||
|
uri.searchParams.append("type", vm.controllerParams.get("type") || para.name);
|
||||||
|
uri.searchParams.append("eoid", eoid);
|
||||||
|
|
||||||
|
$http.get(uri.pathname + uri.search).then((response) => {
|
||||||
|
try {
|
||||||
|
const n = response.data || response;
|
||||||
|
|
||||||
|
if (typeof n !== 'string') {
|
||||||
|
console.error('Unerwartetes Datenformat:', n);
|
||||||
|
notificationService.error(ERROR_INVALID_RESPONSE);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!n.startsWith(F4SD_URL_PREFIX)) {
|
||||||
|
notificationService.error(ERROR_SERVICE_UNAVAILABLE);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (vm.controllerParams.get("showNotification") === '1') {
|
||||||
|
notificationService.info(vm.messageF4SDOpened);
|
||||||
|
}
|
||||||
|
window.location.href = n;
|
||||||
|
|
||||||
|
} catch (error) {
|
||||||
|
console.error(`Fehler beim Verarbeiten der Antwort-URL: ${error}`);
|
||||||
|
notificationService.error(ERROR_SERVICE_UNAVAILABLE);
|
||||||
|
}
|
||||||
|
}).catch((error) => {
|
||||||
|
console.error('HTTP-Anfrage fehlgeschlagen:', error);
|
||||||
|
notificationService.error(ERROR_SERVICE_UNAVAILABLE);
|
||||||
|
});
|
||||||
|
};
|
||||||
|
}
|
||||||
|
]);
|
||||||
|
})(window);
|
||||||
21
M42F4SDUUXWorkspace/F4SDIcons.svg
Normal file
21
M42F4SDUUXWorkspace/F4SDIcons.svg
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
<svg aria-hidden="true" style="position: absolute; width: 0; height: 0; overflow: hidden;" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||||
|
<defs>
|
||||||
|
<symbol id="icon-f4sd-coloured" viewBox="0 0 56.69 56.69">
|
||||||
|
<title>F4SD Icon (coloured)</title>
|
||||||
|
<rect fill="#1d4b99" width="56.69" height="56.69" rx="8.15"/>
|
||||||
|
<path fill="#fff" d="M46.06,34.3a1.77,1.77,0,0,0-.88,2.34A17.81,17.81,0,0,1,46.7,44a1.77,1.77,0,0,0,3.54,0,21.25,21.25,0,0,0-1.84-8.78A1.77,1.77,0,0,0,46.06,34.3Z"/>
|
||||||
|
<path fill="#fff" d="M33.66,26.57a1.77,1.77,0,0,0,2.2-1.16,1.82,1.82,0,0,0-1.17-2.24,22.72,22.72,0,0,0-6.34-.92A21.75,21.75,0,0,0,6.63,44a1.77,1.77,0,1,0,3.54,0A18.21,18.21,0,0,1,28.41,25.79,18.64,18.64,0,0,1,33.66,26.57Z"/>
|
||||||
|
<path fill="#fff" d="M42.17,27.18,25.87,39.3a5.53,5.53,0,0,0-1.78,1.48,5.29,5.29,0,0,0,4.61,8.44,5.17,5.17,0,0,0,3.54-1.81,5.47,5.47,0,0,0,1-1.63L42.7,27.71a.42.42,0,0,0-.28-.53A.36.36,0,0,0,42.17,27.18ZM28.35,46.35a2.27,2.27,0,0,1-2.45-2.08v-.05A2.31,2.31,0,0,1,28,41.74h0a2.37,2.37,0,0,1,2.48,2.16,2.31,2.31,0,0,1-2.15,2.45Z"/>
|
||||||
|
<path fill="#fff" d="M48.08,3.54H8.61A5,5,0,0,0,3.54,8.36v2.27H53.15V8.36A5,5,0,0,0,48.08,3.54Z"/>
|
||||||
|
<rect fill="#fff" x="3.65" y="13.75" width="49.43" height="2.48"/>
|
||||||
|
</symbol>
|
||||||
|
<symbol id="icon-f4sd" viewBox="0 0 56.69 56.69">
|
||||||
|
<title>F4SD Icon</title>
|
||||||
|
<path d="M46.06,34.3a1.77,1.77,0,0,0-.88,2.34A17.81,17.81,0,0,1,46.7,44a1.77,1.77,0,0,0,3.54,0,21.25,21.25,0,0,0-1.84-8.78A1.77,1.77,0,0,0,46.06,34.3Z"/>
|
||||||
|
<path d="M33.66,26.57a1.77,1.77,0,0,0,2.2-1.16,1.82,1.82,0,0,0-1.17-2.24,22.72,22.72,0,0,0-6.34-.92A21.75,21.75,0,0,0,6.63,44a1.77,1.77,0,1,0,3.54,0A18.21,18.21,0,0,1,28.41,25.79,18.64,18.64,0,0,1,33.66,26.57Z"/>
|
||||||
|
<path d="M42.17,27.18,25.87,39.3a5.53,5.53,0,0,0-1.78,1.48,5.29,5.29,0,0,0,4.61,8.44,5.17,5.17,0,0,0,3.54-1.81,5.47,5.47,0,0,0,1-1.63L42.7,27.71a.42.42,0,0,0-.28-.53A.36.36,0,0,0,42.17,27.18ZM28.35,46.35a2.27,2.27,0,0,1-2.45-2.08v-.05A2.31,2.31,0,0,1,28,41.74h0a2.37,2.37,0,0,1,2.48,2.16,2.31,2.31,0,0,1-2.15,2.45Z"/>
|
||||||
|
<path d="M48.08,3.54H8.61A5,5,0,0,0,3.54,8.36v2.27H53.15V8.36A5,5,0,0,0,48.08,3.54Z"/>
|
||||||
|
<rect x="3.65" y="13.75" width="49.43" height="2.48"/>
|
||||||
|
</symbol>
|
||||||
|
</defs>
|
||||||
|
</svg>
|
||||||
34
M42F4SDUUXWorkspace/M42F4SDUUXWorkspace.projitems
Normal file
34
M42F4SDUUXWorkspace/M42F4SDUUXWorkspace.projitems
Normal file
@@ -0,0 +1,34 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||||
|
<PropertyGroup Label="SharedProjectFile_SccProperties">
|
||||||
|
<SharedProjectFile_ProjectGuid>{5915b31c-bc61-422e-ae50-8f337bf0b998}</SharedProjectFile_ProjectGuid>
|
||||||
|
<SharedProjectFile_SccProjectName>SAK</SharedProjectFile_SccProjectName>
|
||||||
|
<SharedProjectFile_SccAuxPath>SAK</SharedProjectFile_SccAuxPath>
|
||||||
|
<SharedProjectFile_SccLocalPath>SAK</SharedProjectFile_SccLocalPath>
|
||||||
|
<SharedProjectFile_SccProvider>SAK</SharedProjectFile_SccProvider>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup>
|
||||||
|
<MSBuildAllProjects Condition="'$(MSBuildVersion)' == '' Or '$(MSBuildVersion)' < '16.0'">$(MSBuildAllProjects);$(MSBuildThisFileFullPath)</MSBuildAllProjects>
|
||||||
|
<HasSharedItems>true</HasSharedItems>
|
||||||
|
<SharedGUID>c3d52a04-2461-4f35-8edf-de7226add677</SharedGUID>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Label="Configuration">
|
||||||
|
<Import_RootNamespace>M42F4SDUUXWorkspace</Import_RootNamespace>
|
||||||
|
</PropertyGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<None Include="$(MSBuildThisFileDirectory)F4SD.js">
|
||||||
|
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||||
|
</None>
|
||||||
|
<None Include="$(MSBuildThisFileDirectory)F4SDIcons.svg">
|
||||||
|
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||||
|
</None>
|
||||||
|
<None Include="$(MSBuildThisFileDirectory)F4SD - M42.zip">
|
||||||
|
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||||
|
</None>
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<Content Include="$(MSBuildThisFileDirectory)workspace.json">
|
||||||
|
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||||
|
</Content>
|
||||||
|
</ItemGroup>
|
||||||
|
</Project>
|
||||||
10
M42F4SDUUXWorkspace/M42F4SDUUXWorkspace.projitems.vspscc
Normal file
10
M42F4SDUUXWorkspace/M42F4SDUUXWorkspace.projitems.vspscc
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
""
|
||||||
|
{
|
||||||
|
"FILE_VERSION" = "9237"
|
||||||
|
"ENLISTMENT_CHOICE" = "NEVER"
|
||||||
|
"PROJECT_FILE_RELATIVE_PATH" = ""
|
||||||
|
"NUMBER_OF_EXCLUDED_FILES" = "0"
|
||||||
|
"ORIGINAL_PROJECT_FILE_PATH" = ""
|
||||||
|
"NUMBER_OF_NESTED_PROJECTS" = "0"
|
||||||
|
"SOURCE_CONTROL_SETTINGS_PROVIDER" = "PROVIDER"
|
||||||
|
}
|
||||||
7
M42F4SDUUXWorkspace/workspace.json
Normal file
7
M42F4SDUUXWorkspace/workspace.json
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
{
|
||||||
|
"description": "C4IT - F4SD - M42 ESM Integration",
|
||||||
|
"version": "1.0.0",
|
||||||
|
"resources": [
|
||||||
|
"F4SD.min.js"
|
||||||
|
]
|
||||||
|
}
|
||||||
9
SharedAssemblyInfo.cs
Normal file
9
SharedAssemblyInfo.cs
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
using System.Reflection;
|
||||||
|
|
||||||
|
[assembly: AssemblyCompany("Consulting4IT GmbH, Germany")]
|
||||||
|
[assembly: AssemblyProduct("C4IT - F4SD - WebApi for M42")]
|
||||||
|
[assembly: AssemblyCopyright("Copyright © 2023, Consulting4IT GmbH, Germany")]
|
||||||
|
[assembly: AssemblyTrademark("")]
|
||||||
|
|
||||||
|
[assembly: AssemblyVersion("1.2.0.3")]
|
||||||
|
[assembly: AssemblyInformationalVersion("1.2.0.3")]
|
||||||
Reference in New Issue
Block a user