fix: read missing parameters from query

This commit is contained in:
Meik
2026-07-02 23:05:06 +02:00
parent 93d1fc20b4
commit edbd34de61

View File

@@ -94,16 +94,52 @@ namespace C4IT.F4SD
return GetRequiredService<IJournalService>();
}
private string GetQueryValue(string name)
{
return Request?.GetQueryNameValuePairs()
.FirstOrDefault(pair => string.Equals(pair.Key, name, StringComparison.OrdinalIgnoreCase))
.Value;
}
private string QueryValue(string value, string name)
{
return GetQueryValue(name) ?? value ?? string.Empty;
}
private int QueryValue(int value, string name)
{
return int.TryParse(GetQueryValue(name), out var parsed) ? parsed : value;
}
private Guid QueryValue(Guid value, string name)
{
return Guid.TryParse(GetQueryValue(name), out var parsed) ? parsed : value;
}
private Guid? QueryValue(Guid? value, string name)
{
return Guid.TryParse(GetQueryValue(name), out var parsed) ? parsed : value;
}
private TEnum QueryValue<TEnum>(TEnum value, string name) where TEnum : struct
{
return Enum.TryParse<TEnum>(GetQueryValue(name), true, out var parsed) ? parsed : value;
}
[Route("getDirectLinkCreateTicket"), HttpGet]
public async Task<F4SDHelperService.DirectLink> getDirectLinkCreateTicket([FromUri] string sid = "", [FromUri] string assetname = "")
{
await Task.Delay(0);
sid = QueryValue(sid, nameof(sid));
assetname = QueryValue(assetname, nameof(assetname));
return await _f4stHelperService.getDirectLinkCreateTicket(sid, assetname)
?? new F4SDHelperService.DirectLink();
}
[Route("getDirectLinkF4SD"), HttpGet]
public async Task<string> getDirectLinkF4SD([FromUri] Guid eoid, [FromUri] string type)
{
eoid = QueryValue(eoid, nameof(eoid));
type = QueryValue(type, nameof(type));
return await _f4stHelperService.getDirectLinkF4SD(eoid, type) ?? string.Empty;
}
@@ -115,6 +151,10 @@ namespace C4IT.F4SD
[FromUri] string queues = ""
)
{
sid = QueryValue(sid, nameof(sid));
hours = QueryValue(hours, nameof(hours));
queueoption = QueryValue(queueoption, nameof(queueoption));
queues = QueryValue(queues, nameof(queues));
var decodedPairs = ParseQueues(queues);
// Nun weiterreichen an Service
@@ -130,6 +170,7 @@ namespace C4IT.F4SD
[Route("getTicketDetails"), HttpGet]
public async Task<cF4SDTicket> getTicketDetails([FromUri] Guid objectId)
{
objectId = QueryValue(objectId, nameof(objectId));
var tickets = await _f4stHelperService.getTicketDetails(new List<Guid>() { objectId });
if (tickets?.Count > 0)
return tickets[0];
@@ -140,6 +181,7 @@ namespace C4IT.F4SD
[Route("getTicketHistory"), HttpGet]
public async Task<List<cTicketJournalItem>> getTicketHistory([FromUri] Guid objectId)
{
objectId = QueryValue(objectId, nameof(objectId));
return await _f4stHelperService.GetJournalEntries(objectId) ?? new List<cTicketJournalItem>();
}
@@ -152,6 +194,11 @@ namespace C4IT.F4SD
[FromUri] string queues = ""
)
{
sid = QueryValue(sid, nameof(sid));
scope = QueryValue(scope, nameof(scope));
keys = QueryValue(keys, nameof(keys));
queueoption = QueryValue(queueoption, nameof(queueoption));
queues = QueryValue(queues, nameof(queues));
var parsedKeys = (keys ?? string.Empty)
.Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries)
.Select(key => key.Trim())
@@ -197,6 +244,12 @@ namespace C4IT.F4SD
[FromUri] string queues = ""
)
{
sid = QueryValue(sid, nameof(sid));
scope = QueryValue(scope, nameof(scope));
key = QueryValue(key, nameof(key));
count = QueryValue(count, nameof(count));
queueoption = QueryValue(queueoption, nameof(queueoption));
queues = QueryValue(queues, nameof(queues));
var decodedQueues = ParseQueues(queues);
return await _f4stHelperService.getTicketOverviewRelations(sid, scope, key, count, queueoption, decodedQueues)
?? new List<F4SDHelperService.TicketOverviewRelationDto>();
@@ -216,6 +269,9 @@ namespace C4IT.F4SD
public async Task<EntityEnumeration> getPickup([FromUri] string name, [FromUri] EntityEnumerationVisibilityMode mode = EntityEnumerationVisibilityMode.None, [FromUri] Int32 group = -1)
{
await Task.Delay(0);
name = QueryValue(name, nameof(name));
mode = QueryValue(mode, nameof(mode));
group = QueryValue(group, nameof(group));
EntityEnumeration enumerationTemp = GetEnumeration(name, mode);
var vals = enumerationTemp.Values;
@@ -253,6 +309,9 @@ namespace C4IT.F4SD
[Route("getRoleMemberships")]
public async Task<object> getRoleMemberships([FromUri] string sid = "", [FromUri] string upn = "", [FromUri] Guid? id = null)
{
sid = QueryValue(sid, nameof(sid));
upn = QueryValue(upn, nameof(upn));
id = QueryValue(id, nameof(id));
var filter = "";
if (id != null && id.Value != Guid.Empty)
@@ -415,6 +474,7 @@ namespace C4IT.F4SD
try
{
await Task.Delay(0);
debug = QueryValue(debug, nameof(debug));
DefaultLogger.Manager.Level = debug == "1" || debug.Equals("true", StringComparison.OrdinalIgnoreCase) ? LogLevels.Debug : LogLevels.Info;
return DefaultLogger.Manager.Level.ToString();
}
@@ -434,6 +494,9 @@ namespace C4IT.F4SD
{
try
{
download = QueryValue(download, nameof(download));
count = QueryValue(count, nameof(count));
filter = QueryValue(filter, nameof(filter));
var response = _f4stHelperService.privGetLog(download, count, Request, filter);
if (response == null)
return new StatusCodeResult(HttpStatusCode.NoContent);