Initialer Status
This commit is contained in:
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
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user