diff --git a/roles/lib/files/FWO.Api.Client/Queries/ModellingQueries.cs b/roles/lib/files/FWO.Api.Client/Queries/ModellingQueries.cs index 65932e65e9..1d78245272 100644 --- a/roles/lib/files/FWO.Api.Client/Queries/ModellingQueries.cs +++ b/roles/lib/files/FWO.Api.Client/Queries/ModellingQueries.cs @@ -180,6 +180,7 @@ static ModellingQueries() removeAllServiceGroupsFromConnection = GetQueryText("modelling/removeAllServiceGroupsFromConnection.graphql"); getConnectionIdsForService = GetQueryText("modelling/getConnectionIdsForService.graphql"); getConnectionIdsForServiceGroup = GetQueryText("modelling/getConnectionIdsForServiceGroup.graphql"); + updateConnectionDecommission = GetQueryText("modelling/updateConnectionDecommission.graphql"); getSelectedConnections = connectionDetailsFragment + GetQueryText("modelling/getSelectedConnections.graphql"); addSelectedConnection = GetQueryText("modelling/addSelectedConnection.graphql"); diff --git a/roles/lib/files/FWO.Data/Device.cs b/roles/lib/files/FWO.Data/Device.cs index a772ecf87b..3855f88bb1 100644 --- a/roles/lib/files/FWO.Data/Device.cs +++ b/roles/lib/files/FWO.Data/Device.cs @@ -1,7 +1,6 @@ using System.Text.Json.Serialization; using FWO.Basics; using Newtonsoft.Json; -using FWO.Basics; namespace FWO.Data { diff --git a/roles/lib/files/FWO.Data/NetworkLocation.cs b/roles/lib/files/FWO.Data/NetworkLocation.cs index c3c7080bf1..5ed59fd9aa 100644 --- a/roles/lib/files/FWO.Data/NetworkLocation.cs +++ b/roles/lib/files/FWO.Data/NetworkLocation.cs @@ -13,7 +13,7 @@ public class NetworkLocation : IComparable public NetworkLocation(NetworkUser user, NetworkObject? networkObject) { - Object = networkObject; + Object = networkObject ?? new(); User = user; } diff --git a/roles/lib/files/FWO.Data/Report/DeviceReport.cs b/roles/lib/files/FWO.Data/Report/DeviceReport.cs index 45372dfd4a..9a0d763e4a 100644 --- a/roles/lib/files/FWO.Data/Report/DeviceReport.cs +++ b/roles/lib/files/FWO.Data/Report/DeviceReport.cs @@ -33,10 +33,13 @@ public List GetRuleList() } public DeviceReport() - { } + { + RulebaseLinks = []; + } public DeviceReport(DeviceReport device) { + RulebaseLinks = []; // TODO: implement this method to return a list of rules associated with the device } diff --git a/roles/lib/files/FWO.Data/Report/ManagementReport.cs b/roles/lib/files/FWO.Data/Report/ManagementReport.cs index e3ea8e52f4..c15a75e0e5 100644 --- a/roles/lib/files/FWO.Data/Report/ManagementReport.cs +++ b/roles/lib/files/FWO.Data/Report/ManagementReport.cs @@ -88,7 +88,9 @@ public class ManagementReport public bool[] Detailed = [false, false, false]; // nobj, nsrv, user public ManagementReport() - { } + { + Uid = string.Empty; + } public string NameAndDeviceNames(string separator = ", ") diff --git a/roles/lib/files/FWO.DeviceAutoDiscovery/AutoDiscoveryFortiManager.cs b/roles/lib/files/FWO.DeviceAutoDiscovery/AutoDiscoveryFortiManager.cs index 9bfcb0edbe..9b21962e6d 100644 --- a/roles/lib/files/FWO.DeviceAutoDiscovery/AutoDiscoveryFortiManager.cs +++ b/roles/lib/files/FWO.DeviceAutoDiscovery/AutoDiscoveryFortiManager.cs @@ -101,7 +101,7 @@ public async Task BuildAdomDeviceVdomStructure(string sessionId, List cust RestResponse deviceResponse = await restClientFM.GetDevicesPerAdom(sessionId, adom.Name); if (deviceResponse != null && deviceResponse.StatusCode == HttpStatusCode.OK && deviceResponse.IsSuccessful) { - adom.DeviceList = deviceResponse.Data?.Result[0].FortiGates; + adom.DeviceList = deviceResponse.Data?.Result[0].FortiGates ?? []; } } // now get vdoms per device diff --git a/roles/lib/files/FWO.Mail/MailerMailKit.cs b/roles/lib/files/FWO.Mail/MailerMailKit.cs index 279fd8933c..4f06245e1c 100644 --- a/roles/lib/files/FWO.Mail/MailerMailKit.cs +++ b/roles/lib/files/FWO.Mail/MailerMailKit.cs @@ -94,7 +94,7 @@ await smtp.ConnectAsync( return true; } - catch (Exception e) + catch (Exception) { return false; } diff --git a/roles/lib/files/FWO.Report.Filter/DynGraphqlQuery.cs b/roles/lib/files/FWO.Report.Filter/DynGraphqlQuery.cs index 17b96bac95..b4655c0a9b 100644 --- a/roles/lib/files/FWO.Report.Filter/DynGraphqlQuery.cs +++ b/roles/lib/files/FWO.Report.Filter/DynGraphqlQuery.cs @@ -424,7 +424,7 @@ private static string GetDevWhereFilter(ref DynGraphqlQuery query, DeviceFilter? devWhereStatement += "_or: [{"; - foreach (ManagementSelect mgmt in deviceFilter.Managements) + foreach (ManagementSelect mgmt in deviceFilter?.Managements ?? []) { foreach (DeviceSelect dev in mgmt.Devices) { diff --git a/roles/lib/files/FWO.Report/Data/DeviceReportController.cs b/roles/lib/files/FWO.Report/Data/DeviceReportController.cs index f4f158c72b..8176cf19de 100644 --- a/roles/lib/files/FWO.Report/Data/DeviceReportController.cs +++ b/roles/lib/files/FWO.Report/Data/DeviceReportController.cs @@ -56,7 +56,7 @@ public void AssignRuleNumbers(RulebaseLink? rbLinkIn = null, int ruleNumber = 1) // } } - public bool ContainsRules() + public new bool ContainsRules() { return true; // if (RbLink?.NextRulebase.Rules.Length>0) diff --git a/roles/lib/files/FWO.Report/Data/RulebaseReportController.cs b/roles/lib/files/FWO.Report/Data/RulebaseReportController.cs index 6d933e9ca4..bd6c439872 100644 --- a/roles/lib/files/FWO.Report/Data/RulebaseReportController.cs +++ b/roles/lib/files/FWO.Report/Data/RulebaseReportController.cs @@ -65,7 +65,7 @@ public static bool Merge(this RulebaseReport[] rulebases, RulebaseReport[] ruleb { if (rulebases[i].Rules != null && rulebasesToMerge[i].Rules != null && rulebasesToMerge[i].Rules.Length > 0) { - rulebases[i].Rules = rulebases[i].Rules?.Concat(rulebasesToMerge[i].Rules!).ToArray(); + rulebases[i].Rules = rulebases[i].Rules.Concat(rulebasesToMerge[i].Rules!).ToArray(); newObjects = true; } } diff --git a/roles/lib/files/FWO.Report/Display/RuleDisplayHtml.cs b/roles/lib/files/FWO.Report/Display/RuleDisplayHtml.cs index 7506eba3dc..7d73d7404e 100644 --- a/roles/lib/files/FWO.Report/Display/RuleDisplayHtml.cs +++ b/roles/lib/files/FWO.Report/Display/RuleDisplayHtml.cs @@ -126,7 +126,7 @@ protected static string EnforcingGatewayToHtml(Device gateway, int mgmtId, int c string gwLink = ReportDevicesBase.GetReportDevicesLinkAddress(location, mgmtId, ObjCatString.NwObj, chapterNumber, gateway.Id, reportType); return DisplayGateway(gateway, reportType, reportType.IsResolvedReport() ? null : - ReportBase.ConstructLink(ReportBase.GetIconClass(ObjCategory.nsrv, "Gateway"), gateway.Name, style, gwLink)).ToString(); + ReportBase.ConstructLink(ReportBase.GetIconClass(ObjCategory.nsrv, "Gateway"), gateway.Name ?? string.Empty, style, gwLink)).ToString(); } private string DisplaySourceOrDestination(Rule rule, int chapterNumber, OutputLocation location, ReportType reportType, string style, bool isSource, bool overwriteIsResolvedReport = false) diff --git a/roles/lib/files/FWO.Report/ReportCompliance.cs b/roles/lib/files/FWO.Report/ReportCompliance.cs index aa0d756482..02c6360045 100644 --- a/roles/lib/files/FWO.Report/ReportCompliance.cs +++ b/roles/lib/files/FWO.Report/ReportCompliance.cs @@ -36,7 +36,7 @@ public class ReportCompliance : ReportBase private readonly int _maxDegreeOfParallelism; private readonly SemaphoreSlim _semaphore; private readonly NatRuleDisplayHtml _natRuleDisplayHtml; - private List _columnsToExport; + private List _columnsToExport = []; private bool _includeHeaderInExport; private char _separator; private int _maxCellSize; @@ -378,6 +378,10 @@ private Task GatherEmptyGroups(NetworkLocation[] networkLocations, List> GatherReportData((List processed, List viewData)[]? results) { + if (results == null) + { + results = []; + } RuleViewData.Capacity = results.Sum(r => r.viewData.Count); List processedRulesFlat = new(results.Sum(r => r.processed.Count)); @@ -422,6 +426,7 @@ protected virtual Dictionary CreateQueryVariables(int offset, in return queryVariables; } + //TODO: Does this need to be async? protected virtual async Task SetComplianceDataForRule(Rule rule, ApiConnection apiConnection, Func? formatter = null) { try diff --git a/roles/lib/files/FWO.Report/ReportDevicesBase.cs b/roles/lib/files/FWO.Report/ReportDevicesBase.cs index a5d138089d..655bf6319b 100644 --- a/roles/lib/files/FWO.Report/ReportDevicesBase.cs +++ b/roles/lib/files/FWO.Report/ReportDevicesBase.cs @@ -111,14 +111,16 @@ public async Task> GetImportIdsInTimeRange(ApiConnection return (unsupportedList, reducedDeviceFilter); } +#pragma warning disable CS1998 // Async method lacks 'await' operators and will run synchronously private static async Task UsageDataAvailable(ApiConnection apiConnection, int devId) +#pragma warning restore CS1998 // Async method lacks 'await' operators and will run synchronously { try { // TODO: the following only deals with first rulebase of a gateway: // return (await apiConnection.SendQueryAsync>(ReportQueries.getUsageDataCount, new { devId }) // )[0].RulebasesOnGateway[0].Rulebase.RulesWithHits.Aggregate.Count > 0; - return false; // TODO: implement + return false; // TODO: implement and remove pragma warning disable once done } catch (Exception) { diff --git a/roles/lib/files/FWO.Report/ReportNatRules.cs b/roles/lib/files/FWO.Report/ReportNatRules.cs index 1d73818623..eebc0a9c61 100644 --- a/roles/lib/files/FWO.Report/ReportNatRules.cs +++ b/roles/lib/files/FWO.Report/ReportNatRules.cs @@ -32,7 +32,7 @@ public override string ExportToHtml() RulebaseLink? initialRulebaseLink = device.RulebaseLinks.FirstOrDefault(_ => _.IsInitialRulebase()); if (initialRulebaseLink != null) { - foreach (var rule in managementReport.Rulebases.FirstOrDefault(rb => rb.Id == initialRulebaseLink.NextRulebaseId)?.Rules) + foreach (var rule in managementReport.Rulebases.FirstOrDefault(rb => rb.Id == initialRulebaseLink.NextRulebaseId)?.Rules ?? []) { AppendNatRuleHeadlineHtml(ref report, device.Name); diff --git a/roles/lib/files/FWO.Report/ReportRules.cs b/roles/lib/files/FWO.Report/ReportRules.cs index 9027e766a8..6b4d8929e6 100644 --- a/roles/lib/files/FWO.Report/ReportRules.cs +++ b/roles/lib/files/FWO.Report/ReportRules.cs @@ -33,7 +33,6 @@ public class ReportRules(DynGraphqlQuery query, UserConfig userConfig, ReportTyp { private const int ColumnCount = 12; protected bool UseAdditionalFilter = false; - private bool VarianceMode = false; private static Dictionary<(int deviceId, int managementId), Rule[]> _rulesCache = new(); diff --git a/roles/lib/files/FWO.Services/ModellingAppRoleHandler.cs b/roles/lib/files/FWO.Services/ModellingAppRoleHandler.cs index c8fb5bdbf7..8d2c37e552 100644 --- a/roles/lib/files/FWO.Services/ModellingAppRoleHandler.cs +++ b/roles/lib/files/FWO.Services/ModellingAppRoleHandler.cs @@ -4,10 +4,6 @@ using FWO.Data.Modelling; using FWO.Basics; using FWO.Config.Api; -using FWO.Basics; -using FWO.Data; -using FWO.Api.Client; -using FWO.Api.Client.Queries; using NetTools; using System.Net; using System.Text.Json; diff --git a/roles/lib/files/FWO.Services/ModellingVarianceAnalysisGetProd.cs b/roles/lib/files/FWO.Services/ModellingVarianceAnalysisGetProd.cs index d4b4b33be1..191c9fb9f2 100644 --- a/roles/lib/files/FWO.Services/ModellingVarianceAnalysisGetProd.cs +++ b/roles/lib/files/FWO.Services/ModellingVarianceAnalysisGetProd.cs @@ -74,7 +74,7 @@ private async Task GetModelledRulesProductionState(ModellingFilter modelli private void IdentifyModelledRules(Management mgt, List rulesByMgt) { // get all rulebase links for this management - List rulebaseLinks = mgt.Devices.Cast().SelectMany(d => d.RulebaseLinks.Where(rl => rl.Removed != null)).ToList(); + List rulebaseLinks = mgt.Devices.SelectMany(d => d.RulebaseLinks.Where(rl => rl.Removed != null)).ToList(); allModelledRules.Add(mgt.Id, []); foreach (var rule in rulesByMgt) { diff --git a/roles/lib/files/FWO.Services/ModellingVarianceAnalysisObjectsForRequest.cs b/roles/lib/files/FWO.Services/ModellingVarianceAnalysisObjectsForRequest.cs index 6518221f62..6c8af216aa 100644 --- a/roles/lib/files/FWO.Services/ModellingVarianceAnalysisObjectsForRequest.cs +++ b/roles/lib/files/FWO.Services/ModellingVarianceAnalysisObjectsForRequest.cs @@ -161,7 +161,7 @@ private WfReqTask ConstructRuleTask(Management mgt, Rule rule, ModellingConnecti { Field = ElemFieldType.rule.ToString(), RuleUid = rule.Uid, - DeviceId = rule.EnforcingGateways.FirstOrDefault().Content?.Id, + DeviceId = rule.EnforcingGateways.FirstOrDefault()?.Content?.Id, Name = rule.Name } ]; diff --git a/roles/lib/files/FWO.Services/RuleTreeBuilder/RuleTreeBuilder.cs b/roles/lib/files/FWO.Services/RuleTreeBuilder/RuleTreeBuilder.cs index a1c5ce8357..00962c9169 100644 --- a/roles/lib/files/FWO.Services/RuleTreeBuilder/RuleTreeBuilder.cs +++ b/roles/lib/files/FWO.Services/RuleTreeBuilder/RuleTreeBuilder.cs @@ -80,54 +80,7 @@ private List HandleRulebaseLinkQueueItem((RulebaseLink link, RulebaseReport // Prepare creation of order numbers. - if (currentQueueItem.link.LinkType == 2 && !currentQueueItem.link.IsGlobal) - { - // Create position root and header item for new ordered layer - - OrderedLayerCount++; - nextPosition = new List { OrderedLayerCount }; - nextParent = RuleTree.AddItem(header: currentQueueItem.rulebase.Name ?? "", position: nextPosition.ToList(), addToChildren: true, addToFlatList: true, setLastAddedItem: true); - nextParent.IsOrderedLayerHeader = true; - lastPosition = nextPosition; - } - else if (currentQueueItem.link.IsSection) - { - // Get the starting point for the next position. - - nextPosition = lastPosition; - - // Get parent for header item. - - nextParent = GetSectionParent(nextPosition); - - // Create header item for section. - - nextParent = nextParent.AddItem(header: currentQueueItem.rulebase.Name ?? "", position: nextPosition.ToList(), addToChildren: true, addToFlatList: true, setLastAddedItem: true); - nextParent.IsSectionHeader = true; - } - else if (currentQueueItem.link.LinkType == 3) - { - nextParent = RuleTree.LastAddedItem as RuleTreeItem; - nextParent.IsInlineLayerRoot = true; - nextPosition = lastPosition.ToList(); - nextPosition.Add(0); - lastPosition = nextPosition; - - // Handle sections in inline layers without direct rules. - - if (nextQueueItem?.link is RulebaseLink nextLink && currentQueueItem.rulebase.Rules.Count() == 0 && nextLink.IsSection && nextLink.FromRulebaseId == currentQueueItem.link.NextRulebaseId) - { - lastPosition = HandleRulebaseLinkQueueItem(RuleTreeBuilderQueue.Dequeue(), lastPosition); - } - } - else if (currentQueueItem.link.LinkType == 4) - { - if (currentQueueItem.link.IsInitial) - { - nextParent = RuleTree; - } - - } + (nextPosition, nextParent, lastPosition) = PrepareOrderNumberCreation(currentQueueItem, lastPosition, nextQueueItem); // Create order number. List currentRules = currentQueueItem.rulebase.Rules.ToList(); @@ -144,19 +97,7 @@ private List HandleRulebaseLinkQueueItem((RulebaseLink link, RulebaseReport // Update next position. - if (nextPosition == null) - { - nextPosition = lastPosition.ToList(); - } - else if (nextParent.GetPositionString() == OrderedLayerCount.ToString() && !nextParent.Children.Any()) - { - nextPosition.Add(0); - } - - if (nextPosition.Count == 0) - { - nextPosition.Add(0); - } + nextPosition = UpdateNextPosition(nextPosition, nextParent, lastPosition); // Update order number. @@ -164,7 +105,7 @@ private List HandleRulebaseLinkQueueItem((RulebaseLink link, RulebaseReport // Get and update tree item that holds currentRule as data. - RuleTreeItem treeItem = nextParent.AddItem(addToChildren: true, addToFlatList: true, setLastAddedItem: true); + RuleTreeItem treeItem = nextParent?.AddItem(addToChildren: true, addToFlatList: true, setLastAddedItem: true) ?? new RuleTreeItem(); treeItem.Data = rule; RuleTree.ElementsFlat.Add(treeItem); treeItem.Position = nextPosition.ToList(); @@ -185,26 +126,22 @@ private List HandleRulebaseLinkQueueItem((RulebaseLink link, RulebaseReport lastPosition = nextPosition; // Handle inline layers. - - if (nextQueueItem?.link is RulebaseLink nextLink) + + if (nextQueueItem?.link is RulebaseLink nextLink && ((nextLink.LinkType == 3 && nextLink.FromRuleId == currentRule.Id) || nextLink.IsSection && RuleTree.LastAddedItem?.Data?.RulebaseId == nextLink.FromRulebaseId && currentRule == currentRules.Last())) { - if ((nextLink.LinkType == 3 && nextLink.FromRuleId == currentRule.Id) || nextLink.IsSection && RuleTree.LastAddedItem.Data.RulebaseId == nextLink.FromRulebaseId && currentRule == currentRules.Last()) - { - nextQueueItem = RuleTreeBuilderQueue.Dequeue(); + nextQueueItem = RuleTreeBuilderQueue.Dequeue(); - lastPosition = HandleRulebaseLinkQueueItem(nextQueueItem.Value, lastPosition); + lastPosition = HandleRulebaseLinkQueueItem(nextQueueItem.Value, lastPosition); - // Update current and next queue items in case this loop continues after handling an inline layer. + // Update current and next queue items in case this loop continues after handling an inline layer. - currentQueueItem = nextQueueItem.Value; - - nextQueueItem = TryPeekNextQueueItem(); - } + currentQueueItem = nextQueueItem.Value; + nextQueueItem = TryPeekNextQueueItem(); } } - return lastPosition; + return lastPosition ?? []; } /// @@ -301,38 +238,110 @@ private List HandleRulebaseLinkQueueItem((RulebaseLink link, RulebaseReport /// private RuleTreeItem GetSectionParent(List? nextPosition = null) { - List? position = nextPosition.ToList(); + List position = nextPosition?.ToList() ?? []; if (position.Last() == 0) position.Remove(position.Last()); - RuleTreeItem item = RuleTree.ElementsFlat.First(x => x.GetPositionString() == string.Join(".", position)) as RuleTreeItem; + RuleTreeItem item = RuleTree.ElementsFlat.First(x => x.GetPositionString() == string.Join(".", position)) as RuleTreeItem ?? new RuleTreeItem(); - if (item.Data is Rule && (item.Parent as RuleTreeItem).IsOrderedLayerHeader && nextPosition.Last() != 0) + if (item.Data is Rule && (item.Parent as RuleTreeItem ?? new RuleTreeItem()).IsOrderedLayerHeader && nextPosition?.Last() != 0) { - return item.Parent as RuleTreeItem; + return item.Parent as RuleTreeItem ?? new RuleTreeItem(); } else if (item.IsOrderedLayerHeader) { return item; } - else if ((item.Parent as RuleTreeItem).IsSectionHeader) + else if ((item.Parent as RuleTreeItem ?? new RuleTreeItem()).IsSectionHeader) { - if (nextPosition.Last() == 0) + if (nextPosition?.Last() == 0) { return item; } - return item.Parent.Parent as RuleTreeItem; + return item.Parent?.Parent as RuleTreeItem ?? new RuleTreeItem(); } else if ((item as RuleTreeItem).IsInlineLayerRoot) { return item; } - else if ((item.Parent as RuleTreeItem).IsInlineLayerRoot) + else if ((item.Parent as RuleTreeItem ?? new RuleTreeItem()).IsInlineLayerRoot) { - return item.Parent as RuleTreeItem; + return item.Parent as RuleTreeItem ?? new RuleTreeItem(); } else { return new(); } } + + private (List?, RuleTreeItem?, List?) PrepareOrderNumberCreation((RulebaseLink link, RulebaseReport rulebase) currentQueueItem, List? lastPosition, (RulebaseLink link, RulebaseReport rulebase)? nextQueueItem) + { + List? nextPosition = null; + RuleTreeItem? nextParent = null; + if (currentQueueItem.link.LinkType == 2 && !currentQueueItem.link.IsGlobal) + { + // Create position root and header item for new ordered layer + + OrderedLayerCount++; + nextPosition = new List { OrderedLayerCount }; + nextParent = RuleTree.AddItem(header: currentQueueItem.rulebase.Name ?? "", position: nextPosition.ToList(), addToChildren: true, addToFlatList: true, setLastAddedItem: true); + nextParent.IsOrderedLayerHeader = true; + lastPosition = nextPosition; + } + else if (currentQueueItem.link.IsSection) + { + // Get the starting point for the next position. + + nextPosition = lastPosition; + + // Get parent for header item. + + nextParent = GetSectionParent(nextPosition); + + // Create header item for section. + + nextParent = nextParent.AddItem(header: currentQueueItem.rulebase.Name ?? "", position: nextPosition?.ToList(), addToChildren: true, addToFlatList: true, setLastAddedItem: true); + nextParent.IsSectionHeader = true; + } + else if (currentQueueItem.link.LinkType == 3) + { + nextParent = RuleTree.LastAddedItem as RuleTreeItem; + if(nextParent !=null) + nextParent.IsInlineLayerRoot = true; + nextPosition = lastPosition?.ToList()?? []; + nextPosition.Add(0); + lastPosition = nextPosition; + + // Handle sections in inline layers without direct rules. + + if (nextQueueItem?.link is RulebaseLink nextLink && currentQueueItem.rulebase.Rules.Count() == 0 && nextLink.IsSection && nextLink.FromRulebaseId == currentQueueItem.link.NextRulebaseId) + { + lastPosition = HandleRulebaseLinkQueueItem(RuleTreeBuilderQueue.Dequeue(), lastPosition); + } + } + else if (currentQueueItem.link.LinkType == 4 && currentQueueItem.link.IsInitial) + { + nextParent = RuleTree; + } + + return(nextPosition, nextParent, lastPosition); + } + + private List UpdateNextPosition(List? nextPosition, RuleTreeItem? nextParent, List? lastPosition) + { + if (nextPosition == null) + { + nextPosition = lastPosition?.ToList() ?? []; + } + else if (nextParent?.GetPositionString() == OrderedLayerCount.ToString() && nextParent?.Children.Count == 0) + { + nextPosition.Add(0); + } + + if (nextPosition.Count == 0) + { + nextPosition.Add(0); + } + + return nextPosition; + } } } diff --git a/roles/lib/files/FWO.Services/RuleTreeBuilder/RuleTreeItem.cs b/roles/lib/files/FWO.Services/RuleTreeBuilder/RuleTreeItem.cs index e04d46a4e3..3a4a411728 100644 --- a/roles/lib/files/FWO.Services/RuleTreeBuilder/RuleTreeItem.cs +++ b/roles/lib/files/FWO.Services/RuleTreeBuilder/RuleTreeItem.cs @@ -26,7 +26,8 @@ public class RuleTreeItem : TreeItem /// public RuleTreeItem AddItem(RuleTreeItem? item = null, List? position = null, string header = "", bool isRoot = false, bool addToFlatList = false, bool addToChildren = false, bool setLastAddedItem = false) { - return base.AddItem(item ?? new(), position, header, isRoot, addToFlatList, addToChildren, setLastAddedItem) as RuleTreeItem; + return base.AddItem(item ?? new RuleTreeItem(), position, header, isRoot, addToFlatList, addToChildren, + setLastAddedItem) as RuleTreeItem ?? new RuleTreeItem(); } } diff --git a/roles/ui/files/FWO.UI/Pages/Compliance/AddMatrix.razor b/roles/ui/files/FWO.UI/Pages/Compliance/AddMatrix.razor index 95c2186836..0c6520e4a1 100644 --- a/roles/ui/files/FWO.UI/Pages/Compliance/AddMatrix.razor +++ b/roles/ui/files/FWO.UI/Pages/Compliance/AddMatrix.razor @@ -66,7 +66,7 @@ ReturnId[]? returnIds = (await apiConnection.SendQueryAsync(ComplianceQueries.addCriterion, new { name = MatrixName, criterionType = CriterionType.Matrix.ToString() })).ReturnIds; if(returnIds != null && returnIds.Length > 0) { - RefreshParent(new(){ Id = returnIds[0].InsertedId, Name = MatrixName, CriterionType = CriterionType.Matrix.ToString() }); + _ = RefreshParent(new(){ Id = returnIds[0].InsertedId, Name = MatrixName, CriterionType = CriterionType.Matrix.ToString() }); } Close(); } diff --git a/roles/ui/files/FWO.UI/Pages/Compliance/CompliancePolicies.razor b/roles/ui/files/FWO.UI/Pages/Compliance/CompliancePolicies.razor index 33f6808b95..9fbe1d09da 100644 --- a/roles/ui/files/FWO.UI/Pages/Compliance/CompliancePolicies.razor +++ b/roles/ui/files/FWO.UI/Pages/Compliance/CompliancePolicies.razor @@ -45,7 +45,6 @@ private CompliancePolicy SelectedPolicy = new(); private List policies = []; - private bool matrixLoaded = false; private bool AddMode = false; private bool EditMode = false; private bool DeleteMode = false; diff --git a/roles/ui/files/FWO.UI/Pages/Reporting/Report.razor b/roles/ui/files/FWO.UI/Pages/Reporting/Report.razor index d4f1347a3d..3a5d46c3e2 100644 --- a/roles/ui/files/FWO.UI/Pages/Reporting/Report.razor +++ b/roles/ui/files/FWO.UI/Pages/Reporting/Report.razor @@ -249,10 +249,8 @@ private ReportTemplateComponent reportTemplateControl = new(); private ReportBase? currentReport; - - private FWO.Ui.Shared.TabSet rsbTabset; + private Sidebar? deviceSelectionSidebar; - private FWO.Ui.Shared.AnchorNavToRSB anchorNavToRSB; private string filterFeedbackStart = ""; private string filterFeedbackError = ""; diff --git a/roles/ui/files/FWO.UI/Pages/Reporting/Reports/RulesReport.razor b/roles/ui/files/FWO.UI/Pages/Reporting/Reports/RulesReport.razor index ee7d9c9bb3..4aa65725b0 100644 --- a/roles/ui/files/FWO.UI/Pages/Reporting/Reports/RulesReport.razor +++ b/roles/ui/files/FWO.UI/Pages/Reporting/Reports/RulesReport.razor @@ -282,7 +282,6 @@ private bool[] EmptyColumns = new bool[ColumnsCount]; private NatRuleDisplayHtml? ruleDisplay; - private int previousRulebaseId = -1; protected override void OnInitialized() { diff --git a/roles/ui/files/FWO.UI/Shared/ImportRollback.razor b/roles/ui/files/FWO.UI/Shared/ImportRollback.razor index 71a982819a..028fefd494 100644 --- a/roles/ui/files/FWO.UI/Shared/ImportRollback.razor +++ b/roles/ui/files/FWO.UI/Shared/ImportRollback.razor @@ -188,7 +188,7 @@ var variablesdeleteLatestConfigOfManagement = new { mgmId = ManagementId }; ReturnId id = await apiConnection.SendQueryAsync(FWO.Api.Client.Queries.ImportQueries.deleteLatestConfigOfManagement, variablesdeleteLatestConfigOfManagement); } - catch (System.Exception exception) + catch (Exception) { Log.WriteDebug("Delete latest config", $"error while deleting latest config for mangement with ID {ManagementId}"); } diff --git a/roles/ui/files/FWO.UI/Shared/RightSidebar.razor b/roles/ui/files/FWO.UI/Shared/RightSidebar.razor index 35c2b615dc..46ec5fbb7d 100644 --- a/roles/ui/files/FWO.UI/Shared/RightSidebar.razor +++ b/roles/ui/files/FWO.UI/Shared/RightSidebar.razor @@ -44,7 +44,7 @@ m.Devices.Any(d => d.RulebaseLinks.Any()))" NameExtractor="man => man.Name" NetworkObjectExtractor="man => man.ReportObjects" NetworkServiceExtractor="man => man.ReportServices" NetworkUserExtractor="man => man.ReportUsers" />