diff --git a/roles/lib/files/FWO.Api.Client/Data/WfReqTaskBase.cs b/roles/lib/files/FWO.Api.Client/Data/WfReqTaskBase.cs index ee3ce83cb..24efb8689 100644 --- a/roles/lib/files/FWO.Api.Client/Data/WfReqTaskBase.cs +++ b/roles/lib/files/FWO.Api.Client/Data/WfReqTaskBase.cs @@ -16,6 +16,7 @@ public struct AdditionalInfoKeys { public const string ConnId = "ConnId"; public const string ReqOwner = "ReqOwner"; + public const string GrpName = "GrpName"; } public class WfReqTaskBase : WfTaskBase diff --git a/roles/lib/files/FWO.Report/ReportAppRules.cs b/roles/lib/files/FWO.Report/ReportAppRules.cs index 1f48f44ed..28846c5de 100644 --- a/roles/lib/files/FWO.Report/ReportAppRules.cs +++ b/roles/lib/files/FWO.Report/ReportAppRules.cs @@ -132,6 +132,7 @@ private async Task GetAppServers(ApiConnection apiConnection) { relevantObjects.Add(obj); found = true; + break; } } } @@ -220,6 +221,7 @@ private void PrepareFilter(ManagementReport mgt) } } } + mgt.RelevantObjectIds = mgt.RelevantObjectIds.Distinct().ToList(); mgt.HighlightedObjectIds = mgt.HighlightedObjectIds.Distinct().ToList(); } diff --git a/roles/ui/files/FWO.UI/Pages/Request/DisplayRequestTask.razor b/roles/ui/files/FWO.UI/Pages/Request/DisplayRequestTask.razor index f67828125..501338ea6 100644 --- a/roles/ui/files/FWO.UI/Pages/Request/DisplayRequestTask.razor +++ b/roles/ui/files/FWO.UI/Pages/Request/DisplayRequestTask.razor @@ -161,6 +161,17 @@ } } } + else if(actTaskType == TaskType.group_create) + { +
+
+ +
+ +
+
+
+ } @if(actTaskType == TaskType.generic) { @@ -262,6 +273,26 @@ { } + else if(actTaskType == TaskType.group_create) + { +
+ @if (WfHandler.EditReqTaskMode) + { + + } + else + { +
+ @foreach(var source in actSources.Where(x => (x.NetworkId == null || x.NetworkId == 0))) + { +
+ +
+ } +
+ } +
+ } @if(!WfHandler.EditReqTaskMode) { @@ -271,7 +302,7 @@ @if(WfHandler.PlanReqTaskMode || WfHandler.ApproveReqTaskMode) { + @(ModellingHandlerBase.DisplayButton(userConfig, "add_comment", Icons.Add)) }
@@ -412,6 +443,7 @@ private Tracking? actTracking; private FwoOwner? actOwner; private FwoOwner? oldOwner; + private string? actGrpName; private bool firstParamSet = false; @@ -452,6 +484,7 @@ { oldOwner = actOwner; } + actGrpName = WfHandler.GetAddInfoValue(AdditionalInfoKeys.GrpName); } firstParamSet = false; } @@ -656,6 +689,12 @@ { WfHandler.ActReqTask.RequestAction = RequestAction.delete.ToString(); } + else if(actTaskType == TaskType.group_create) + { + Dictionary? addInfo = new() { {AdditionalInfoKeys.GrpName, actGrpName} }; + WfHandler.ActReqTask.AdditionalInfo = System.Text.Json.JsonSerializer.Serialize(addInfo); + } + UpdateElements(); if (await CheckTaskValues()) { @@ -728,6 +767,14 @@ } } } + else if (actTaskType == TaskType.group_create) + { + if (actGrpName == null || actGrpName == "" || actSources.Count == 0) + { + DisplayMessageInUi(null, userConfig.GetText("save_task"), userConfig.GetText("E5102"), true); + return false; + } + } return true; } } diff --git a/roles/ui/files/FWO.UI/Pages/Request/RequestApprovals.razor b/roles/ui/files/FWO.UI/Pages/Request/RequestApprovals.razor index e1354c566..1bb4a4f14 100644 --- a/roles/ui/files/FWO.UI/Pages/Request/RequestApprovals.razor +++ b/roles/ui/files/FWO.UI/Pages/Request/RequestApprovals.razor @@ -73,7 +73,7 @@ else { if(long.TryParse(TicketId, out long ticketId)) { - string newPhase = await wfHandler.HandleExtTicketId(WorkflowPhases.approval, ticketId); + string newPhase = await wfHandler.HandleInjectedTicketId(WorkflowPhases.approval, ticketId); if(newPhase != "") { NavigationManager.NavigateTo($"/request/{newPhase.ToString()}s/{TicketId}"); diff --git a/roles/ui/files/FWO.UI/Pages/Request/RequestImplementations.razor b/roles/ui/files/FWO.UI/Pages/Request/RequestImplementations.razor index 90583b761..fb17dd05b 100644 --- a/roles/ui/files/FWO.UI/Pages/Request/RequestImplementations.razor +++ b/roles/ui/files/FWO.UI/Pages/Request/RequestImplementations.razor @@ -91,7 +91,7 @@ else { if(long.TryParse(TicketId, out long ticketId)) { - string newPhase = await wfHandler.HandleExtTicketId(WorkflowPhases.implementation, ticketId); + string newPhase = await wfHandler.HandleInjectedTicketId(WorkflowPhases.implementation, ticketId); if(newPhase != "") { NavigationManager.NavigateTo($"/request/{newPhase.ToString()}s/{TicketId}"); diff --git a/roles/ui/files/FWO.UI/Pages/Request/RequestPlannings.razor b/roles/ui/files/FWO.UI/Pages/Request/RequestPlannings.razor index e1b58d5b3..395b39f94 100644 --- a/roles/ui/files/FWO.UI/Pages/Request/RequestPlannings.razor +++ b/roles/ui/files/FWO.UI/Pages/Request/RequestPlannings.razor @@ -73,7 +73,7 @@ else { if(long.TryParse(TicketId, out long ticketId)) { - string newPhase = await wfHandler.HandleExtTicketId(WorkflowPhases.planning, ticketId); + string newPhase = await wfHandler.HandleInjectedTicketId(WorkflowPhases.planning, ticketId); if(newPhase != "") { NavigationManager.NavigateTo($"/request/{newPhase.ToString()}s/{TicketId}"); diff --git a/roles/ui/files/FWO.UI/Pages/Request/RequestReviews.razor b/roles/ui/files/FWO.UI/Pages/Request/RequestReviews.razor index 7fa3286dc..28bbc44dd 100644 --- a/roles/ui/files/FWO.UI/Pages/Request/RequestReviews.razor +++ b/roles/ui/files/FWO.UI/Pages/Request/RequestReviews.razor @@ -86,7 +86,7 @@ else { if(long.TryParse(TicketId, out long ticketId)) { - string newPhase = await wfHandler.HandleExtTicketId(WorkflowPhases.review, ticketId); + string newPhase = await wfHandler.HandleInjectedTicketId(WorkflowPhases.review, ticketId); if(newPhase != "") { NavigationManager.NavigateTo($"/request/{newPhase.ToString()}s/{TicketId}"); diff --git a/roles/ui/files/FWO.UI/Pages/Request/RequestTickets.razor b/roles/ui/files/FWO.UI/Pages/Request/RequestTickets.razor index 60fb6718d..4a0f7388d 100644 --- a/roles/ui/files/FWO.UI/Pages/Request/RequestTickets.razor +++ b/roles/ui/files/FWO.UI/Pages/Request/RequestTickets.razor @@ -70,7 +70,7 @@ else { if(long.TryParse(TicketId, out long ticketId)) { - string newPhase = await wfHandler.HandleExtTicketId(WorkflowPhases.request, ticketId); + string newPhase = await wfHandler.HandleInjectedTicketId(WorkflowPhases.request, ticketId); if(newPhase != "") { NavigationManager.NavigateTo($"/request/{newPhase.ToString()}s/{TicketId}"); diff --git a/roles/ui/files/FWO.UI/Services/ActionHandler.cs b/roles/ui/files/FWO.UI/Services/ActionHandler.cs index ed37caf62..0b89b02ca 100644 --- a/roles/ui/files/FWO.UI/Services/ActionHandler.cs +++ b/roles/ui/files/FWO.UI/Services/ActionHandler.cs @@ -10,17 +10,17 @@ public class ActionHandler { private List states = []; private readonly ApiConnection apiConnection; - private readonly WfHandler requestHandler = new (); + private readonly WfHandler wfHandler = new (); private string? ScopedUserTo { get; set; } = ""; private string? ScopedUserCc { get; set; } = ""; public bool DisplayConnectionMode = false; public ModellingConnectionHandler? ConnHandler { get; set; } - public ActionHandler(ApiConnection apiConnection, WfHandler requestHandler) + public ActionHandler(ApiConnection apiConnection, WfHandler wfHandler) { this.apiConnection = apiConnection; - this.requestHandler = requestHandler; + this.wfHandler = wfHandler; } public async Task Init() @@ -49,7 +49,7 @@ public async Task DoStateChangeActions(WfStatefulObject statefulObject, WfObject List stateActions = GetRelevantActions(statefulObject, scope); foreach(var action in stateActions.Where(x => x.Event == StateActionEvents.OnSet.ToString())) { - if(action.Phase == "" || action.Phase == requestHandler.Phase.ToString()) + if(action.Phase == "" || action.Phase == wfHandler.Phase.ToString()) { await PerformAction(action, statefulObject, scope, owner, ticketId); } @@ -57,7 +57,7 @@ public async Task DoStateChangeActions(WfStatefulObject statefulObject, WfObject List fromStateActions = GetRelevantActions(statefulObject, scope, false); foreach(var action in fromStateActions.Where(x => x.Event == StateActionEvents.OnLeave.ToString())) { - if(action.Phase == "" || action.Phase == requestHandler.Phase.ToString()) + if(action.Phase == "" || action.Phase == wfHandler.Phase.ToString()) { await PerformAction(action, statefulObject, scope, owner, ticketId); } @@ -93,19 +93,19 @@ public async Task PerformAction(WfStateAction action, WfStatefulObject statefulO int? toState = action.ExternalParams != "" ? Convert.ToInt32(action.ExternalParams) : null; if(toState == null || states.FirstOrDefault(x => x.Id == toState) != null) { - await requestHandler.AutoPromote(statefulObject, scope, toState); + await wfHandler.AutoPromote(statefulObject, scope, toState); } break; case nameof(StateActionTypes.AddApproval): await SetScope(statefulObject, scope); - await requestHandler.AddApproval(action.ExternalParams); + await wfHandler.AddApproval(action.ExternalParams); break; case nameof(StateActionTypes.SetAlert): await SetAlert(action.ExternalParams); break; case nameof(StateActionTypes.TrafficPathAnalysis): await SetScope(statefulObject, scope); - await requestHandler.HandlePathAnalysisAction(action.ExternalParams); + await wfHandler.HandlePathAnalysisAction(action.ExternalParams); break; case nameof(StateActionTypes.ExternalCall): await CallExternal(action); @@ -145,7 +145,7 @@ public async Task SendEmail(WfStateAction action, WfStatefulObject statefulObjec { EmailActionParams emailActionParams = System.Text.Json.JsonSerializer.Deserialize(action.ExternalParams) ?? throw new Exception("Extparams could not be parsed."); await SetScope(statefulObject, scope, emailActionParams); - EmailHelper emailHelper = new(apiConnection, requestHandler.MiddlewareClient, requestHandler.userConfig, DefaultInit.DoNothing); + EmailHelper emailHelper = new(apiConnection, wfHandler.MiddlewareClient, wfHandler.userConfig, DefaultInit.DoNothing); await emailHelper.Init(ScopedUserTo, ScopedUserCc); if(owner != null) { @@ -167,8 +167,8 @@ public async Task CreateConnection(WfStateAction action, FwoOwner? owner) Log.WriteDebug("CreateConnection", "Perform Action"); // try // { - // ModellingConnection proposedInterface = new(){ IsInterface = true, IsRequested = true, TicketId = requestHandler.ActTicket.Id }; - // ModellingConnectionHandler ConnHandler = new (apiConnection, requestHandler.userConfig, requestHandler.ActReqTask.Owners.First().Owner, new(), proposedInterface, true, false, DefaultInit.DoNothing, false); + // ModellingConnection proposedInterface = new(){ IsInterface = true, IsRequested = true, TicketId = wfHandler.ActTicket.Id }; + // ModellingConnectionHandler ConnHandler = new (apiConnection, wfHandler.userConfig, wfHandler.ActReqTask.Owners.First().Owner, new(), proposedInterface, true, false, DefaultInit.DoNothing, false); // apiConnection.SetProperRole(user, [Roles.Modeller, Roles.Admin]); // await ConnHandler.CreateNewRequestedInterface(); // apiConnection.SwitchBack()); @@ -186,7 +186,7 @@ public async Task UpdateConnectionOwner(FwoOwner? owner, long? ticketId) { if(owner != null && ticketId != null) // todo: role check { - apiConnection.SetProperRole(requestHandler.AuthUser, [Roles.Modeller, Roles.Admin]); + apiConnection.SetProperRole(wfHandler.AuthUser, [Roles.Modeller, Roles.Admin]); List Connections = await apiConnection.SendQueryAsync>(ModellingQueries.getConnectionsByTicketId, new { ticketId }); foreach(var conn in Connections) { @@ -199,7 +199,7 @@ public async Task UpdateConnectionOwner(FwoOwner? owner, long? ticketId) }; await apiConnection.SendQueryAsync(ModellingQueries.updateConnectionOwner, Variables); await ModellingHandlerBase.LogChange(ModellingTypes.ChangeType.Update, ModellingTypes.ModObjectType.Connection, conn.Id, - $"Updated {(conn.IsInterface? "Interface" : "Connection")}: {conn.Name}", apiConnection, requestHandler.userConfig, owner.Id, DefaultInit.DoNothing); + $"Updated {(conn.IsInterface? "Interface" : "Connection")}: {conn.Name}", apiConnection, wfHandler.userConfig, owner.Id, DefaultInit.DoNothing); } } apiConnection.SwitchBack(); @@ -218,13 +218,13 @@ public async Task UpdateConnectionPublish(FwoOwner? owner, long? ticketId) { if(owner != null && ticketId != null) // todo: role check { - apiConnection.SetProperRole(requestHandler.AuthUser, [Roles.Modeller, Roles.Admin]); + apiConnection.SetProperRole(wfHandler.AuthUser, [Roles.Modeller, Roles.Admin]); List Connections = await apiConnection.SendQueryAsync>(ModellingQueries.getConnectionsByTicketId, new { ticketId }); foreach(var conn in Connections) { if(conn.IsRequested && !conn.IsPublished) { - ConnHandler = new (apiConnection, requestHandler.userConfig, owner, [], conn, true, false, DefaultInit.DoNothing, DefaultInit.DoNothing, false); + ConnHandler = new (apiConnection, wfHandler.userConfig, owner, [], conn, true, false, DefaultInit.DoNothing, DefaultInit.DoNothing, false); await ConnHandler.PartialInit(); if(ConnHandler.CheckConn()) { @@ -236,7 +236,7 @@ public async Task UpdateConnectionPublish(FwoOwner? owner, long? ticketId) }; await apiConnection.SendQueryAsync(ModellingQueries.updateConnectionPublish, Variables); await ModellingHandlerBase.LogChange(ModellingTypes.ChangeType.Update, ModellingTypes.ModObjectType.Connection, conn.Id, - $"Updated {(conn.IsInterface? "Interface" : "Connection")}: {conn.Name}", apiConnection, requestHandler.userConfig, owner.Id, DefaultInit.DoNothing); + $"Updated {(conn.IsInterface? "Interface" : "Connection")}: {conn.Name}", apiConnection, wfHandler.userConfig, owner.Id, DefaultInit.DoNothing); } } } @@ -256,7 +256,7 @@ public async Task UpdateConnectionReject(FwoOwner? owner, long? ticketId) { if(owner != null && ticketId != null) { - apiConnection.SetProperRole(requestHandler.AuthUser, [Roles.Modeller, Roles.Admin]); + apiConnection.SetProperRole(wfHandler.AuthUser, [Roles.Modeller, Roles.Admin]); List Connections = await apiConnection.SendQueryAsync>(ModellingQueries.getConnectionsByTicketId, new { ticketId }); foreach(var conn in Connections) { @@ -270,7 +270,7 @@ public async Task UpdateConnectionReject(FwoOwner? owner, long? ticketId) }; await apiConnection.SendQueryAsync(ModellingQueries.updateConnectionProperties, Variables); await ModellingHandlerBase.LogChange(ModellingTypes.ChangeType.Update, ModellingTypes.ModObjectType.Connection, conn.Id, - $"Rejected {(conn.IsInterface? "Interface" : "Connection")}: {conn.Name}", apiConnection, requestHandler.userConfig, owner.Id, DefaultInit.DoNothing); + $"Rejected {(conn.IsInterface? "Interface" : "Connection")}: {conn.Name}", apiConnection, wfHandler.userConfig, owner.Id, DefaultInit.DoNothing); } } apiConnection.SwitchBack(); @@ -288,20 +288,20 @@ public async Task DisplayConnection(WfStatefulObject statefulObject, WfObjectSco { Log.WriteDebug("DisplayConnection", "Perform Action"); await SetScope(statefulObject, scope); - WfReqTask? reqTask = requestHandler.ActTicket.Tasks.FirstOrDefault(x => x.TaskType == TaskType.new_interface.ToString()); + WfReqTask? reqTask = wfHandler.ActTicket.Tasks.FirstOrDefault(x => x.TaskType == TaskType.new_interface.ToString()); if(reqTask != null) { - requestHandler.SetReqTaskEnv(reqTask); + wfHandler.SetReqTaskEnv(reqTask); } - FwoOwner? owner = requestHandler.ActReqTask.Owners?.First()?.Owner; - if(owner != null && requestHandler.GetAddInfoIntValue(AdditionalInfoKeys.ConnId) != null) + FwoOwner? owner = wfHandler.ActReqTask.Owners?.First()?.Owner; + if(owner != null && wfHandler.GetAddInfoIntValue(AdditionalInfoKeys.ConnId) != null) { - apiConnection.SetProperRole(requestHandler.AuthUser, [Roles.Modeller, Roles.Admin, Roles.Auditor]); + apiConnection.SetProperRole(wfHandler.AuthUser, [Roles.Modeller, Roles.Admin, Roles.Auditor]); List Connections = await apiConnection.SendQueryAsync>(ModellingQueries.getConnections, new { appId = owner?.Id }); - ModellingConnection? conn = Connections.FirstOrDefault(c => c.Id == requestHandler.GetAddInfoIntValue(AdditionalInfoKeys.ConnId)); + ModellingConnection? conn = Connections.FirstOrDefault(c => c.Id == wfHandler.GetAddInfoIntValue(AdditionalInfoKeys.ConnId)); if(conn != null) { - ConnHandler = new ModellingConnectionHandler(apiConnection, requestHandler.userConfig, owner ?? new(), Connections, conn, false, true, DefaultInit.DoNothing, DefaultInit.DoNothing, false); + ConnHandler = new ModellingConnectionHandler(apiConnection, wfHandler.userConfig, owner ?? new(), Connections, conn, false, true, DefaultInit.DoNothing, DefaultInit.DoNothing, false); await ConnHandler.Init(); DisplayConnectionMode = true; } @@ -366,37 +366,37 @@ private async Task SetScope(WfStatefulObject statefulObject, WfObjectScopes scop switch(scope) { case WfObjectScopes.Ticket: - requestHandler.SetTicketEnv((WfTicket)statefulObject); - SetCommenter(emailActionParams, requestHandler.ActTicket.Comments); + wfHandler.SetTicketEnv((WfTicket)statefulObject); + SetCommenter(emailActionParams, wfHandler.ActTicket.Comments); if(emailActionParams?.RecipientTo == EmailRecipientOption.Requester) { - ScopedUserTo = requestHandler.ActTicket.Requester?.Dn; + ScopedUserTo = wfHandler.ActTicket.Requester?.Dn; } if(emailActionParams?.RecipientCC == EmailRecipientOption.Requester) { - ScopedUserCc = requestHandler.ActTicket.Requester?.Dn; + ScopedUserCc = wfHandler.ActTicket.Requester?.Dn; } break; case WfObjectScopes.RequestTask: - requestHandler.SetReqTaskEnv((WfReqTask)statefulObject); - SetCommenter(emailActionParams, requestHandler.ActReqTask.Comments); + wfHandler.SetReqTaskEnv((WfReqTask)statefulObject); + SetCommenter(emailActionParams, wfHandler.ActReqTask.Comments); break; case WfObjectScopes.ImplementationTask: - requestHandler.SetImplTaskEnv((WfImplTask)statefulObject); - SetCommenter(emailActionParams, requestHandler.ActImplTask.Comments); + wfHandler.SetImplTaskEnv((WfImplTask)statefulObject); + SetCommenter(emailActionParams, wfHandler.ActImplTask.Comments); break; case WfObjectScopes.Approval: - if(requestHandler.SetReqTaskEnv(((WfApproval)statefulObject).TaskId)) + if(wfHandler.SetReqTaskEnv(((WfApproval)statefulObject).TaskId)) { - await requestHandler.SetApprovalEnv(null, false); - SetCommenter(emailActionParams, requestHandler.ActApproval.Comments); + await wfHandler.SetApprovalEnv(null, false); + SetCommenter(emailActionParams, wfHandler.ActApproval.Comments); if(emailActionParams?.RecipientTo == EmailRecipientOption.Approver) { - ScopedUserTo = requestHandler.ActApproval.ApproverDn; + ScopedUserTo = wfHandler.ActApproval.ApproverDn; } if(emailActionParams?.RecipientCC == EmailRecipientOption.Approver) { - ScopedUserCc = requestHandler.ActApproval.ApproverDn; + ScopedUserCc = wfHandler.ActApproval.ApproverDn; } } break; diff --git a/roles/ui/files/FWO.UI/Services/TicketCreator.cs b/roles/ui/files/FWO.UI/Services/TicketCreator.cs index 0c162f2af..642c97b6c 100644 --- a/roles/ui/files/FWO.UI/Services/TicketCreator.cs +++ b/roles/ui/files/FWO.UI/Services/TicketCreator.cs @@ -27,6 +27,45 @@ public TicketCreator(ApiConnection apiConnection, UserConfig userConfig, System. this.apiConnection = apiConnection; } + public async Task CreateTicket(FwoOwner owner, List reqTasks, string title, string reason = "") + { + await wfHandler.Init([owner.Id]); + stateId = wfHandler.MasterStateMatrix.LowestEndState; + wfHandler.SelectTicket(new WfTicket() + { + StateId = stateId, + Title = title, + Requester = userConfig.User, + Reason = reason + }, + ObjAction.add); + foreach(var reqTask in reqTasks) + { + wfHandler.SelectReqTask(new WfReqTask() + { + StateId = stateId, + Title = reqTask.Title, + TaskType = reqTask.TaskType, + Owners = [new() { Owner = owner }], + Reason = reqTask.Reason, + Elements = reqTask.Elements, + AdditionalInfo = reqTask.AdditionalInfo + }, + ObjAction.add); + await wfHandler.AddApproval(JsonSerializer.Serialize(new ApprovalParams(){StateId = wfHandler.MasterStateMatrix.LowestEndState})); + wfHandler.ActTicket.Tasks.Add(wfHandler.ActReqTask); + } + wfHandler.AddTicketMode = true; + long ticketId = await wfHandler.SaveTicket(wfHandler.ActTicket); + return wfHandler.ActTicket; + } + + public async Task GetTicket(FwoOwner owner, long ticketId) + { + await wfHandler.Init([owner.Id]); + return await wfHandler.ResolveTicket(ticketId); + } + public async Task CreateRequestNewInterfaceTicket(FwoOwner owner, FwoOwner requestingOwner, string reason = "") { await wfHandler.Init([owner.Id]); diff --git a/roles/ui/files/FWO.UI/Services/WfHandler.cs b/roles/ui/files/FWO.UI/Services/WfHandler.cs index af3de7e68..76bf3507a 100644 --- a/roles/ui/files/FWO.UI/Services/WfHandler.cs +++ b/roles/ui/files/FWO.UI/Services/WfHandler.cs @@ -3,6 +3,7 @@ using FWO.Api.Client; using FWO.Api.Client.Queries; using FWO.Middleware.Client; +using FWO.Logging; namespace FWO.Ui.Services { @@ -226,7 +227,7 @@ public void SetContinueEnv(ObjAction action) return AllTicketList.FirstOrDefault(x => x.Id == ticketId); } - public async Task HandleExtTicketId(WorkflowPhases phase, long ticketId) + public async Task HandleInjectedTicketId(WorkflowPhases phase, long ticketId) { WfTicket? ticket = await ResolveTicket(ticketId); if(ticket != null) @@ -655,7 +656,15 @@ public async Task SetAddInfoInReqTask(WfReqTask reqTask, string key, string newV { if(ActReqTask.AdditionalInfo != null && ActReqTask.AdditionalInfo != "") { - return System.Text.Json.JsonSerializer.Deserialize>(ActReqTask.AdditionalInfo); + try + { + return System.Text.Json.JsonSerializer.Deserialize>(ActReqTask.AdditionalInfo); + } + catch(Exception) + { + Log.WriteInfo("Get Additional Info","Could not deserialize. No valid content."); + return null; + } } return null; } diff --git a/roles/ui/files/FWO.UI/Shared/PopUp.razor b/roles/ui/files/FWO.UI/Shared/PopUp.razor index 700b9e750..fc6fc0a5f 100644 --- a/roles/ui/files/FWO.UI/Shared/PopUp.razor +++ b/roles/ui/files/FWO.UI/Shared/PopUp.razor @@ -6,7 +6,7 @@