fix: fallback bind legacy query parameters

This commit is contained in:
Meik
2026-07-02 13:22:34 +02:00
parent 2c17c3ec18
commit 39192043be

View File

@@ -89,6 +89,45 @@ namespace C4IT.F4SD
throw new InvalidOperationException($"Required Matrix42 service is not registered: {typeof(T).FullName}"); throw new InvalidOperationException($"Required Matrix42 service is not registered: {typeof(T).FullName}");
} }
private string GetQueryValue(string name)
{
if (Request == null)
return null;
return Request.GetQueryNameValuePairs()
.FirstOrDefault(pair => string.Equals(pair.Key, name, StringComparison.OrdinalIgnoreCase))
.Value;
}
private string BindQueryString(string value, string name)
{
return string.IsNullOrEmpty(value) ? GetQueryValue(name) ?? string.Empty : value;
}
private int BindQueryInt32(int value, string name, int defaultValue = 0)
{
if (value != defaultValue)
return value;
var queryValue = GetQueryValue(name);
return int.TryParse(queryValue, out var parsed) ? parsed : value;
}
private Guid BindQueryGuid(Guid value, string name)
{
if (value != Guid.Empty)
return value;
var queryValue = GetQueryValue(name);
return Guid.TryParse(queryValue, out var parsed) ? parsed : value;
}
private TEnum BindQueryEnum<TEnum>(TEnum value, string name) where TEnum : struct
{
var queryValue = GetQueryValue(name);
return Enum.TryParse<TEnum>(queryValue, true, out var parsed) ? parsed : value;
}
internal IJournalService GetJournalService() internal IJournalService GetJournalService()
{ {
return GetRequiredService<IJournalService>(); return GetRequiredService<IJournalService>();
@@ -98,12 +137,18 @@ namespace C4IT.F4SD
public async Task<F4SDHelperService.DirectLink> getDirectLinkCreateTicket(string sid = "", string assetname = "") public async Task<F4SDHelperService.DirectLink> getDirectLinkCreateTicket(string sid = "", string assetname = "")
{ {
await Task.Delay(0); await Task.Delay(0);
sid = BindQueryString(sid, nameof(sid));
assetname = BindQueryString(assetname, nameof(assetname));
return await _f4stHelperService.getDirectLinkCreateTicket(sid, assetname) return await _f4stHelperService.getDirectLinkCreateTicket(sid, assetname)
?? new F4SDHelperService.DirectLink(); ?? new F4SDHelperService.DirectLink();
} }
[Route("getDirectLinkF4SD"), HttpGet] [Route("getDirectLinkF4SD"), HttpGet]
public async Task<string> getDirectLinkF4SD(Guid eoid, string type = "") public async Task<string> getDirectLinkF4SD(Guid eoid, string type = "")
{ {
eoid = BindQueryGuid(eoid, nameof(eoid));
type = BindQueryString(type, nameof(type));
return await _f4stHelperService.getDirectLinkF4SD(eoid, type) ?? string.Empty; return await _f4stHelperService.getDirectLinkF4SD(eoid, type) ?? string.Empty;
} }
@@ -115,6 +160,11 @@ namespace C4IT.F4SD
string queues = "" string queues = ""
) )
{ {
sid = BindQueryString(sid, nameof(sid));
hours = BindQueryInt32(hours, nameof(hours));
queueoption = BindQueryInt32(queueoption, nameof(queueoption));
queues = BindQueryString(queues, nameof(queues));
var decodedPairs = ParseQueues(queues); var decodedPairs = ParseQueues(queues);
// Nun weiterreichen an Service // Nun weiterreichen an Service
@@ -216,6 +266,10 @@ namespace C4IT.F4SD
public async Task<EntityEnumeration> getPickup(string name = "", EntityEnumerationVisibilityMode mode = EntityEnumerationVisibilityMode.None, Int32 group = -1) public async Task<EntityEnumeration> getPickup(string name = "", EntityEnumerationVisibilityMode mode = EntityEnumerationVisibilityMode.None, Int32 group = -1)
{ {
await Task.Delay(0); await Task.Delay(0);
name = BindQueryString(name, nameof(name));
mode = BindQueryEnum(mode, nameof(mode));
group = BindQueryInt32(group, nameof(group), -1);
EntityEnumeration enumerationTemp = GetEnumeration(name, mode); EntityEnumeration enumerationTemp = GetEnumeration(name, mode);
var vals = enumerationTemp.Values; var vals = enumerationTemp.Values;