diff --git a/F4SDM42WebApi/F4SDM42WebApiController.cs b/F4SDM42WebApi/F4SDM42WebApiController.cs index 510eb7f..9f114bc 100644 --- a/F4SDM42WebApi/F4SDM42WebApiController.cs +++ b/F4SDM42WebApi/F4SDM42WebApiController.cs @@ -38,15 +38,17 @@ namespace C4IT.F4SD //public readonly IObjectService _objectService; //public readonly IFragmentService _fragmentService; private readonly IDependencyResolver _resolver; + private readonly IEnumerationProvider _enumerationProvider; private readonly F4SDHelperService _f4stHelperService; public string BaseUrl => Request?.RequestUri == null ? string.Empty : $"{Request.RequestUri.Scheme}://{Request.RequestUri.Host}"; public string EndpointBaseUrl => $"{BaseUrl}/m42Services/api/c4itf4sdwebapi"; - public F4SDM42WebApiController(IDependencyResolver resolver) + public F4SDM42WebApiController(IDependencyResolver resolver, IEnumerationProvider enumerationProvider) { _resolver = resolver ?? throw new ArgumentNullException(nameof(resolver)); + _enumerationProvider = enumerationProvider ?? throw new ArgumentNullException(nameof(enumerationProvider)); defaultInstance = this; //_objectService = objectService; //_fragmentService = fragmentService; @@ -84,11 +86,6 @@ namespace C4IT.F4SD return GetRequiredService(); } - private IEnumerationProvider GetEnumerationProvider() - { - return GetRequiredService(); - } - private T GetRequiredService() where T : class { var service = _resolver.TryGet(); @@ -99,34 +96,25 @@ namespace C4IT.F4SD } [Route("getDirectLinkCreateTicket"), HttpGet] - public async Task getDirectLinkCreateTicket([FromUri] string sid = "", [FromUri] string assetname = "") + public async Task getDirectLinkCreateTicket(string sid = "", string assetname = "") { await Task.Delay(0); - sid = GetQueryString("sid", sid); - assetname = GetQueryString("assetname", assetname); return await _f4stHelperService.getDirectLinkCreateTicket(sid, assetname); } [Route("getDirectLinkF4SD"), HttpGet] - public async Task getDirectLinkF4SD([FromUri] Guid EOID, [FromUri] string Type) + public async Task getDirectLinkF4SD(Guid EOID, string Type) { - EOID = GetQueryGuid("EOID", EOID); - Type = GetQueryString("Type", Type); return await _f4stHelperService.getDirectLinkF4SD(EOID, Type); } [Route("getTicketList"), HttpGet] public async Task> getTicketList( - [FromUri] string sid, - [FromUri] int hours, - [FromUri] int queueoption = 0, - [FromUri] string queues = "" + string sid, + int hours, + int queueoption = 0, + string queues = "" ) { - sid = GetQueryString("sid", sid); - hours = GetQueryInt("hours", hours); - queueoption = GetQueryInt("queueoption", queueoption); - queues = GetQueryString("queues", queues); - var decodedPairs = ParseQueues(queues); // Nun weiterreichen an Service @@ -140,9 +128,8 @@ namespace C4IT.F4SD [Route("getTicketDetails"), HttpGet] - public async Task getTicketDetails([FromUri] Guid objectId) + public async Task getTicketDetails(Guid objectId) { - objectId = GetQueryGuid("objectId", objectId); var tickets = await _f4stHelperService.getTicketDetails(new List() { objectId }); if (tickets.Count > 0) return tickets[0]; @@ -151,27 +138,20 @@ namespace C4IT.F4SD } [Route("getTicketHistory"), HttpGet] - public async Task> getTicketHistory([FromUri] Guid objectId) + public async Task> getTicketHistory(Guid objectId) { - objectId = GetQueryGuid("objectId", objectId); return await _f4stHelperService.GetJournalEntries(objectId); } [Route("getTicketOverviewCounts"), HttpGet] public async Task getTicketOverviewCounts( - [FromUri] string sid, - [FromUri] string scope = "personal", - [FromUri] string keys = "", - [FromUri] int queueoption = 0, - [FromUri] string queues = "" + string sid, + string scope = "personal", + string keys = "", + int queueoption = 0, + string queues = "" ) { - sid = GetQueryString("sid", sid); - scope = GetQueryString("scope", scope); - keys = GetQueryString("keys", keys); - queueoption = GetQueryInt("queueoption", queueoption); - queues = GetQueryString("queues", queues); - var parsedKeys = (keys ?? string.Empty) .Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries) .Select(key => key.Trim()) @@ -208,21 +188,14 @@ namespace C4IT.F4SD [Route("getTicketOverviewRelations"), HttpGet] public async Task> getTicketOverviewRelations( - [FromUri] string sid, - [FromUri] string scope = "personal", - [FromUri] string key = "", - [FromUri] int count = 0, - [FromUri] int queueoption = 0, - [FromUri] string queues = "" + string sid, + string scope = "personal", + string key = "", + int count = 0, + int queueoption = 0, + string queues = "" ) { - sid = GetQueryString("sid", sid); - scope = GetQueryString("scope", scope); - key = GetQueryString("key", key); - count = GetQueryInt("count", count); - queueoption = GetQueryInt("queueoption", queueoption); - queues = GetQueryString("queues", queues); - var decodedQueues = ParseQueues(queues); return await _f4stHelperService.getTicketOverviewRelations(sid, scope, key, count, queueoption, decodedQueues); } @@ -238,11 +211,9 @@ namespace C4IT.F4SD */ [Route("getPickup/{name}"), HttpGet] //[CacheOutput(UseETAG = true)] - public async Task getPickup(string name, [FromUri] EntityEnumerationVisibilityMode mode = EntityEnumerationVisibilityMode.None, [FromUri] Int32 group = -1) + public async Task getPickup(string name, EntityEnumerationVisibilityMode mode = EntityEnumerationVisibilityMode.None, Int32 group = -1) { await Task.Delay(0); - mode = GetQueryEnum("mode", mode); - group = GetQueryInt("group", group); EntityEnumeration enumerationTemp = GetEnumeration(name, mode); var vals = enumerationTemp.Values; @@ -278,26 +249,21 @@ namespace C4IT.F4SD } [HttpGet] [Route("getRoleMemberships")] - public async Task getRoleMemberships([FromUri] GetRoleMembershipsRequest req) + public async Task getRoleMemberships(Guid? id = null, string sid = "", string upn = "") { - req = req ?? new GetRoleMembershipsRequest(); - req.Id = GetQueryGuid("id", req.Id ?? Guid.Empty); - req.Sid = GetQueryString("sid", req.Sid); - req.Upn = GetQueryString("upn", req.Upn); - var filter = ""; - if (req.Id != null && req.Id.Value != Guid.Empty) + if (id != null && id.Value != Guid.Empty) { - filter = AsqlHelper.BuildInCondition("ID", new Guid[] { req.Id.Value }); + filter = AsqlHelper.BuildInCondition("ID", new Guid[] { id.Value }); } - else if (!string.IsNullOrEmpty(req.Sid)) + else if (!string.IsNullOrEmpty(sid)) { - filter = AsqlHelper.BuildInCondition("Accounts.T(SPSAccountClassAD).Sid", new string[] { req.Sid }); + filter = AsqlHelper.BuildInCondition("Accounts.T(SPSAccountClassAD).Sid", new string[] { sid }); } - else if (!string.IsNullOrEmpty(req.Upn)) + else if (!string.IsNullOrEmpty(upn)) { - filter = AsqlHelper.BuildInCondition("Accounts.T(SPSAccountClassAD).UserPrincipalName", new string[] { req.Upn }); + filter = AsqlHelper.BuildInCondition("Accounts.T(SPSAccountClassAD).UserPrincipalName", new string[] { upn }); } if (!string.IsNullOrEmpty(filter)) @@ -310,14 +276,6 @@ namespace C4IT.F4SD } } - public class GetRoleMembershipsRequest - { - public Guid? Id { get; set; } - public string Sid { get; set; } - public string Upn { get; set; } - public GetRoleMembershipsRequest() { } - } - public class TicketOverviewCountsByRolesRequest { public string Sid { get; set; } @@ -330,7 +288,7 @@ namespace C4IT.F4SD private EntityEnumeration GetEnumeration(string name, EntityEnumerationVisibilityMode mode) { name = name?.Trim(); - var dataTable = GetEnumerationProvider().GetEnumeration(name, GetVisibilityFilter(mode)); + var dataTable = _enumerationProvider.GetEnumeration(name, GetVisibilityFilter(mode)); if (dataTable == null) throw new InvalidOperationException($"Enumeration '{name}' was not found."); @@ -416,49 +374,6 @@ namespace C4IT.F4SD ?? Guid.Empty; } - private string GetQueryString(string name, string currentValue) - { - var queryValue = GetQueryValue(name); - return string.IsNullOrEmpty(queryValue) ? currentValue : queryValue; - } - - private int GetQueryInt(string name, int currentValue) - { - var queryValue = GetQueryValue(name); - return int.TryParse(queryValue, out var parsedValue) ? parsedValue : currentValue; - } - - private Guid GetQueryGuid(string name, Guid currentValue) - { - var queryValue = GetQueryValue(name); - return Guid.TryParse(queryValue, out var parsedValue) ? parsedValue : currentValue; - } - - private TEnum GetQueryEnum(string name, TEnum currentValue) where TEnum : struct - { - var queryValue = GetQueryValue(name); - return Enum.TryParse(queryValue, true, out var parsedValue) ? parsedValue : currentValue; - } - - private string GetQueryValue(string name) - { - var query = Request?.RequestUri?.Query; - if (string.IsNullOrWhiteSpace(query)) - return null; - - foreach (var pair in query.TrimStart('?').Split(new[] { '&' }, StringSplitOptions.RemoveEmptyEntries)) - { - var parts = pair.Split(new[] { '=' }, 2); - var key = WebUtility.UrlDecode(parts[0]); - if (!string.Equals(key, name, StringComparison.OrdinalIgnoreCase)) - continue; - - return parts.Length > 1 ? WebUtility.UrlDecode(parts[1]) : string.Empty; - } - - return null; - } - private static List ParseQueues(string queues) { return (queues ?? string.Empty) @@ -487,14 +402,13 @@ namespace C4IT.F4SD } [Route("loglevel"), HttpGet] - public async Task setDebugMode([FromUri] string debug = "0") + public async Task setDebugMode(string debug = "0") { var CM = MethodBase.GetCurrentMethod(); LogMethodBegin(CM); try { await Task.Delay(0); - debug = GetQueryString("debug", debug); DefaultLogger.Manager.Level = debug == "1" || debug.Equals("true", StringComparison.OrdinalIgnoreCase) ? LogLevels.Debug : LogLevels.Info; return DefaultLogger.Manager.Level.ToString(); } @@ -510,13 +424,10 @@ namespace C4IT.F4SD } [Route("log"), HttpGet] - public HttpResponseMessage getLog([FromUri] string download = "0", [FromUri] int count = 50, [FromUri] string filter = "") + public HttpResponseMessage getLog(string download = "0", int count = 50, string filter = "") { try { - download = GetQueryString("download", download); - count = GetQueryInt("count", count); - filter = GetQueryString("filter", filter); return _f4stHelperService.privGetLog(download, count, Request, filter); } catch (Exception E) diff --git a/PackageTemplate/install/0002_WebServiceOperation/02-01-0060 PLSLWebServiceOperationType.dat b/PackageTemplate/install/0002_WebServiceOperation/02-01-0060 PLSLWebServiceOperationType.dat index da41c9f..6fd6da7 100644 --- a/PackageTemplate/install/0002_WebServiceOperation/02-01-0060 PLSLWebServiceOperationType.dat +++ b/PackageTemplate/install/0002_WebServiceOperation/02-01-0060 PLSLWebServiceOperationType.dat @@ -137,7 +137,8 @@ b3193051-6fe6-cdd2-7d76-08da9bbec2b6 - getDirectLinkCreateTicket + {"UsedTypes":{"RequestContract":{"Descriptor":{"sid":{"Type":"StringType"},"assetname":{"Type":"StringType"}}}},"ContractDescriptor":{"ReferenceTo":null,"ReferenceFilter":null,"Required":false,"Obsolete":false,"MaxLength":0,"ResourceKey":null,"Documentation":null,"Title":null,"Paths":null,"Type":"RequestContract"}} + getDirectLinkCreateTicket(sid, assetname) getDirectLinkCreateTicket 7660e907-769c-e711-a182-f079595b3ec7 @@ -154,4 +155,4 @@ b3193051-6fe6-cdd2-7d76-08da9bbec2b6 0 - \ No newline at end of file + diff --git a/PackageTemplate/install/0002_WebServiceOperation/02-01-0070 PLSLWebServiceOperationType.dat b/PackageTemplate/install/0002_WebServiceOperation/02-01-0070 PLSLWebServiceOperationType.dat index 849ff6d..e0ad5ce 100644 --- a/PackageTemplate/install/0002_WebServiceOperation/02-01-0070 PLSLWebServiceOperationType.dat +++ b/PackageTemplate/install/0002_WebServiceOperation/02-01-0070 PLSLWebServiceOperationType.dat @@ -137,7 +137,8 @@ 04d0755f-27dd-c4ac-2785-08dac1666661 - getDirectLinkF4SD + {"UsedTypes":{"RequestContract":{"Descriptor":{"EOID":{"Type":"StringType"},"Type":{"Type":"StringType"}}}},"ContractDescriptor":{"ReferenceTo":null,"ReferenceFilter":null,"Required":false,"Obsolete":false,"MaxLength":0,"ResourceKey":null,"Documentation":null,"Title":null,"Paths":null,"Type":"RequestContract"}} + getDirectLinkF4SD(EOID, Type) getDirectLinkF4SD 7660e907-769c-e711-a182-f079595b3ec7 @@ -154,4 +155,4 @@ 04d0755f-27dd-c4ac-2785-08dac1666661 0 - \ No newline at end of file + diff --git a/PackageTemplate/install/0002_WebServiceOperation/02-01-0080 PLSLWebServiceOperationType.dat b/PackageTemplate/install/0002_WebServiceOperation/02-01-0080 PLSLWebServiceOperationType.dat index c45e2d0..f666450 100644 --- a/PackageTemplate/install/0002_WebServiceOperation/02-01-0080 PLSLWebServiceOperationType.dat +++ b/PackageTemplate/install/0002_WebServiceOperation/02-01-0080 PLSLWebServiceOperationType.dat @@ -137,7 +137,8 @@ f977a1d8-f21c-c1bc-4ea0-08dac09d3c99 - getLog + {"UsedTypes":{"RequestContract":{"Descriptor":{"download":{"Type":"StringType"},"count":{"Type":"StringType"},"filter":{"Type":"StringType"}}}},"ContractDescriptor":{"ReferenceTo":null,"ReferenceFilter":null,"Required":false,"Obsolete":false,"MaxLength":0,"ResourceKey":null,"Documentation":null,"Title":null,"Paths":null,"Type":"RequestContract"}} + getLog(download, count, filter) log 7660e907-769c-e711-a182-f079595b3ec7 @@ -154,4 +155,4 @@ f977a1d8-f21c-c1bc-4ea0-08dac09d3c99 0 - \ No newline at end of file + diff --git a/PackageTemplate/install/0002_WebServiceOperation/02-01-0090 PLSLWebServiceOperationType.dat b/PackageTemplate/install/0002_WebServiceOperation/02-01-0090 PLSLWebServiceOperationType.dat index 6324fd5..b64348f 100644 --- a/PackageTemplate/install/0002_WebServiceOperation/02-01-0090 PLSLWebServiceOperationType.dat +++ b/PackageTemplate/install/0002_WebServiceOperation/02-01-0090 PLSLWebServiceOperationType.dat @@ -137,7 +137,8 @@ 750c8dc4-ada0-c1b0-c877-08da9bbec2e3 - getTicketDetails + {"UsedTypes":{"RequestContract":{"Descriptor":{"objectId":{"Type":"StringType"}}}},"ContractDescriptor":{"ReferenceTo":null,"ReferenceFilter":null,"Required":false,"Obsolete":false,"MaxLength":0,"ResourceKey":null,"Documentation":null,"Title":null,"Paths":null,"Type":"RequestContract"}} + getTicketDetails(objectId) getTicketDetails 7660e907-769c-e711-a182-f079595b3ec7 @@ -154,4 +155,4 @@ 750c8dc4-ada0-c1b0-c877-08da9bbec2e3 0 - \ No newline at end of file + diff --git a/PackageTemplate/install/0002_WebServiceOperation/02-01-0100 PLSLWebServiceOperationType.dat b/PackageTemplate/install/0002_WebServiceOperation/02-01-0100 PLSLWebServiceOperationType.dat index d588ac4..814afd4 100644 --- a/PackageTemplate/install/0002_WebServiceOperation/02-01-0100 PLSLWebServiceOperationType.dat +++ b/PackageTemplate/install/0002_WebServiceOperation/02-01-0100 PLSLWebServiceOperationType.dat @@ -137,7 +137,8 @@ 94d0317f-a8db-caf0-a353-08da9bbec2dc - getTicketHistory + {"UsedTypes":{"RequestContract":{"Descriptor":{"objectId":{"Type":"StringType"}}}},"ContractDescriptor":{"ReferenceTo":null,"ReferenceFilter":null,"Required":false,"Obsolete":false,"MaxLength":0,"ResourceKey":null,"Documentation":null,"Title":null,"Paths":null,"Type":"RequestContract"}} + getTicketHistory(objectId) getTicketHistory 7660e907-769c-e711-a182-f079595b3ec7 @@ -154,4 +155,4 @@ 94d0317f-a8db-caf0-a353-08da9bbec2dc 0 - \ No newline at end of file + diff --git a/PackageTemplate/install/0002_WebServiceOperation/02-01-0110 PLSLWebServiceOperationType.dat b/PackageTemplate/install/0002_WebServiceOperation/02-01-0110 PLSLWebServiceOperationType.dat index a82ef90..bbcbb28 100644 --- a/PackageTemplate/install/0002_WebServiceOperation/02-01-0110 PLSLWebServiceOperationType.dat +++ b/PackageTemplate/install/0002_WebServiceOperation/02-01-0110 PLSLWebServiceOperationType.dat @@ -137,7 +137,8 @@ 163e04c2-8b5c-c0e6-0535-08da9bbec2df - getTicketList + {"UsedTypes":{"RequestContract":{"Descriptor":{"sid":{"Type":"StringType"},"hours":{"Type":"StringType"},"queueoption":{"Type":"StringType"},"queues":{"Type":"StringType"}}}},"ContractDescriptor":{"ReferenceTo":null,"ReferenceFilter":null,"Required":false,"Obsolete":false,"MaxLength":0,"ResourceKey":null,"Documentation":null,"Title":null,"Paths":null,"Type":"RequestContract"}} + getTicketList(sid, hours, queueoption, queues) getTicketList 7660e907-769c-e711-a182-f079595b3ec7 @@ -154,4 +155,4 @@ 163e04c2-8b5c-c0e6-0535-08da9bbec2df 0 - \ No newline at end of file + diff --git a/PackageTemplate/install/0002_WebServiceOperation/02-01-0120 PLSLWebServiceOperationType.dat b/PackageTemplate/install/0002_WebServiceOperation/02-01-0120 PLSLWebServiceOperationType.dat index 90e4b31..f0fb8a5 100644 --- a/PackageTemplate/install/0002_WebServiceOperation/02-01-0120 PLSLWebServiceOperationType.dat +++ b/PackageTemplate/install/0002_WebServiceOperation/02-01-0120 PLSLWebServiceOperationType.dat @@ -137,6 +137,7 @@ 9df9d16f-1a00-cc19-1727-08dac09d3c08 + {"UsedTypes":{},"ContractDescriptor":{"ReferenceTo":null,"ReferenceFilter":null,"Required":false,"Obsolete":false,"MaxLength":0,"ResourceKey":null,"Documentation":null,"Title":null,"Paths":null,"Type":"RequestContract"}} isAlive isAlive @@ -154,4 +155,4 @@ 9df9d16f-1a00-cc19-1727-08dac09d3c08 0 - \ No newline at end of file + diff --git a/PackageTemplate/install/0002_WebServiceOperation/02-01-0130 PLSLWebServiceOperationType.dat b/PackageTemplate/install/0002_WebServiceOperation/02-01-0130 PLSLWebServiceOperationType.dat index 0099d2b..ef926b4 100644 --- a/PackageTemplate/install/0002_WebServiceOperation/02-01-0130 PLSLWebServiceOperationType.dat +++ b/PackageTemplate/install/0002_WebServiceOperation/02-01-0130 PLSLWebServiceOperationType.dat @@ -137,7 +137,8 @@ 14366b3c-b79d-cfe3-ded3-08da9bbec2d7 - setDebugMode + {"UsedTypes":{"RequestContract":{"Descriptor":{"debug":{"Type":"StringType"}}}},"ContractDescriptor":{"ReferenceTo":null,"ReferenceFilter":null,"Required":false,"Obsolete":false,"MaxLength":0,"ResourceKey":null,"Documentation":null,"Title":null,"Paths":null,"Type":"RequestContract"}} + setDebugMode(debug) loglevel 7660e907-769c-e711-a182-f079595b3ec7 @@ -154,4 +155,4 @@ 14366b3c-b79d-cfe3-ded3-08da9bbec2d7 0 - \ No newline at end of file + diff --git a/PackageTemplate/install/0002_WebServiceOperation/getmyrolememberships.dat b/PackageTemplate/install/0002_WebServiceOperation/getmyrolememberships.dat index c5efd4f..36f3a12 100644 --- a/PackageTemplate/install/0002_WebServiceOperation/getmyrolememberships.dat +++ b/PackageTemplate/install/0002_WebServiceOperation/getmyrolememberships.dat @@ -137,6 +137,7 @@ 6cec89ab-b843-cd6b-d6b5-08db99ad32ee + {"UsedTypes":{},"ContractDescriptor":{"ReferenceTo":null,"ReferenceFilter":null,"Required":false,"Obsolete":false,"MaxLength":0,"ResourceKey":null,"Documentation":null,"Title":null,"Paths":null,"Type":"RequestContract"}} getMyRoleMemberships getMyRoleMemberships @@ -154,4 +155,4 @@ 6cec89ab-b843-cd6b-d6b5-08db99ad32ee 0 - \ No newline at end of file + diff --git a/PackageTemplate/install/0002_WebServiceOperation/getpickup.dat b/PackageTemplate/install/0002_WebServiceOperation/getpickup.dat index 0a53198..3bf6fbd 100644 --- a/PackageTemplate/install/0002_WebServiceOperation/getpickup.dat +++ b/PackageTemplate/install/0002_WebServiceOperation/getpickup.dat @@ -137,7 +137,8 @@ ef14b892-628c-c1c1-801f-08db99ad32e9 - getPickup + {"UsedTypes":{"RequestContract":{"Descriptor":{"name":{"Type":"StringType"},"mode":{"Type":"StringType"},"group":{"Type":"StringType"}}}},"ContractDescriptor":{"ReferenceTo":null,"ReferenceFilter":null,"Required":false,"Obsolete":false,"MaxLength":0,"ResourceKey":null,"Documentation":null,"Title":null,"Paths":null,"Type":"RequestContract"}} + getPickup(name, mode, group) getPickup/{name} 7660e907-769c-e711-a182-f079595b3ec7 @@ -154,4 +155,4 @@ ef14b892-628c-c1c1-801f-08db99ad32e9 0 - \ No newline at end of file + diff --git a/PackageTemplate/install/0002_WebServiceOperation/getrolememberships.dat b/PackageTemplate/install/0002_WebServiceOperation/getrolememberships.dat index c073e68..53be574 100644 --- a/PackageTemplate/install/0002_WebServiceOperation/getrolememberships.dat +++ b/PackageTemplate/install/0002_WebServiceOperation/getrolememberships.dat @@ -137,7 +137,8 @@ 06747fe1-8113-c51f-4969-08db99ad32f1 - getRoleMemberships + {"UsedTypes":{"RequestContract":{"Descriptor":{"id":{"Type":"StringType"},"sid":{"Type":"StringType"},"upn":{"Type":"StringType"}}}},"ContractDescriptor":{"ReferenceTo":null,"ReferenceFilter":null,"Required":false,"Obsolete":false,"MaxLength":0,"ResourceKey":null,"Documentation":null,"Title":null,"Paths":null,"Type":"RequestContract"}} + getRoleMemberships(id, sid, upn) getRoleMemberships 7660e907-769c-e711-a182-f079595b3ec7 @@ -154,4 +155,4 @@ 06747fe1-8113-c51f-4969-08db99ad32f1 0 - \ No newline at end of file +