Return ticket IDs and resolve external links

This commit is contained in:
Drechsler, Meik
2026-07-20 10:38:34 +02:00
parent a3fa0e0c54
commit 02fabc91cf
11 changed files with 215 additions and 12 deletions

View File

@@ -606,6 +606,20 @@ namespace C4IT.DataHistoryProvider
return GlobalConfig;
}
public Task<cTicketExternalLinkResult> GetTicketExternalLinkAsync(Guid ticketId, enumTicketExternalOpenMode mode, cF4sdWebRequestInfo requestInfo, int logDeep, CancellationToken token)
{
if (M42WpmCollector == null)
{
return Task.FromResult(new cTicketExternalLinkResult
{
Success = false,
Mode = enumTicketExternalOpenMode.None
});
}
return M42WpmCollector.GetTicketExternalLinkAsync(ticketId, mode, requestInfo, logDeep, token);
}
private void RegisterSearchRelationProviders(IEnumerable<ISearchResultRelationProvider> providers)
{
_searchResultRelationProviders.AddRange(providers);

View File

@@ -1574,6 +1574,49 @@ namespace C4IT.DataHistoryProvider
return null;
}
public async Task<cTicketExternalLinkResult> GetTicketExternalLinkAsync(Guid ticketId, enumTicketExternalOpenMode mode, cF4sdWebRequestInfo requestInfo, int logDeep, CancellationToken token)
{
var result = new cTicketExternalLinkResult
{
Success = false,
Mode = enumTicketExternalOpenMode.None
};
if (ticketId == Guid.Empty || mode == enumTicketExternalOpenMode.None)
return result;
var ticketDetails = await GetTicketMainTableAsync(ticketId, requestInfo, logDeep + 1, token);
var ticketTable = ticketDetails?.FirstOrDefault();
if (ticketTable?.Columns == null)
return result;
string previewUrl = null;
if (ticketTable.Columns.TryGetValue("DirectLinkPreview", out var previewColumn))
previewUrl = previewColumn.Values?.FirstOrDefault()?.ToString();
var resolvedMode = mode;
var url = previewUrl;
if (mode == enumTicketExternalOpenMode.Edit)
{
string editUrl = null;
if (ticketTable.Columns.TryGetValue("DirectLinkEdit", out var editColumn))
editUrl = editColumn.Values?.FirstOrDefault()?.ToString();
if (!string.IsNullOrWhiteSpace(editUrl))
url = editUrl;
else
resolvedMode = enumTicketExternalOpenMode.Preview;
}
if (string.IsNullOrWhiteSpace(url))
return result;
result.Success = true;
result.Url = url;
result.Mode = resolvedMode;
return result;
}
private object ConvertToF4sdType(object objVal, enumFasdValueType ValueType)
{
try

View File

@@ -472,6 +472,16 @@ namespace C4IT.DataHistoryProvider
, "NotesMandatory"
, "<NotesMandatory Policy=\"Hidden\" Value=\"false\" />"
);
RetVal |= DoXmlInsertElement(XmlRoot
, "TicketConfiguration"
, "UseSimplifiedCaseCompletionDialog"
, "<UseSimplifiedCaseCompletionDialog Policy=\"Hidden\" Value=\"false\" />"
);
RetVal |= DoXmlInsertElement(XmlRoot
, "TicketConfiguration"
, "SimplifiedCaseCompletionTicketOpenMode"
, $"<SimplifiedCaseCompletionTicketOpenMode Policy=\"Hidden\" Value=\"{enumTicketExternalOpenMode.Preview}\" />"
);
RetVal |= DoXmlInsertElement(XmlRoot
, "TicketConfiguration"
, "ShowOverview"