diff --git a/SLC-GQIDS-DOM-History_1/Provider/DataProvider.cs b/SLC-GQIDS-DOM-History_1/Provider/DataProvider.cs index e0c1c2b..0e11fec 100644 --- a/SLC-GQIDS-DOM-History_1/Provider/DataProvider.cs +++ b/SLC-GQIDS-DOM-History_1/Provider/DataProvider.cs @@ -40,13 +40,24 @@ public IEnumerable GetHistoryForInstance(Guid domInstanceId) var filter = HistoryChangeExposers.SubjectID.Equal(instance.ID.ToFileFriendlyString()); var historyAll = helper.DomInstanceHistory.Read(filter); - helper.StitchDomInstances(new List { instance }); - var fieldMap = instance.Sections.SelectMany(section => + var definition = instance.GetDomDefinition(); + var sectionDefinitionIdFilters = definition.SectionDefinitionLinks.Select(x => SectionDefinitionExposers.ID.Equal(x.SectionDefinitionID)); + var sectionDefinitionFilters = new ORFilterElement(sectionDefinitionIdFilters.ToArray()); + var sectionDefinitions = helper.SectionDefinitions.Read(sectionDefinitionFilters) ?? new List(); + + var fieldMap = new List(); + foreach(var sectionDefinition in sectionDefinitions) { - var sectionDef = section.GetSectionDefinition(); - return sectionDef.GetAllFieldDescriptors().Select(field => - new { Field = field, Section = sectionDef }); - }).ToDictionary(key => key.Field.ID.Id, value => new KeyValuePair(value.Section, value.Field)); + var fields = sectionDefinition.GetAllFieldDescriptors(); + foreach (var field in fields) + { + fieldMap.Add(new DomFieldContainer + { + SectionDefinition = sectionDefinition, + Field = field, + }); + } + } var changes = new List(); changes.AddRange( diff --git a/SLC-GQIDS-DOM-History_1/Provider/DomChange.cs b/SLC-GQIDS-DOM-History_1/Provider/DomChange.cs index fc43a23..4d5865b 100644 --- a/SLC-GQIDS-DOM-History_1/Provider/DomChange.cs +++ b/SLC-GQIDS-DOM-History_1/Provider/DomChange.cs @@ -8,7 +8,6 @@ namespace Skyline.GQI.Sources.DOM.History.Provider using Skyline.DataMiner.Net.Apps.History.DomInstances; using Skyline.DataMiner.Net.History; - using Skyline.DataMiner.Net.Sections; public enum DomChangeType { @@ -25,18 +24,30 @@ public DomChange() { } - public DomChange(Dictionary> fieldMap, HistoryChange history, DomSectionChange sectionChange, DomFieldValueChange fieldChange) + public DomChange( + List fieldMap, + HistoryChange history, + DomSectionChange sectionChange, + DomFieldValueChange fieldChange) { + var helperContainer = fieldMap.Find(x => x.Field.ID.Id == fieldChange.FieldDescriptorId.Id); + if (helperContainer != null) + { + var sectionDefinition = helperContainer.SectionDefinition; + var fieldDescriptor = helperContainer.Field; + + SectionDefinitionName = SectionDefinitionId = Convert.ToString(sectionDefinition.GetID().Id); + SectionDefinitionName = sectionDefinition.GetName(); + FieldDescriptorName = fieldDescriptor.Name; + } + DomHistoryId = history.ID; DomInstanceId = Convert.ToString(history.SubjectId.ToAttachmentString()); DateOfChange = history.Time; Type = DomChangeType.SectionChange; ChangedBy = history.FullUsername; SectionId = Convert.ToString(sectionChange.SectionId.Id); - SectionDefinitionId = Convert.ToString(fieldMap[fieldChange.FieldDescriptorId.Id].Key.GetID().Id); - SectionDefinitionName = fieldMap[fieldChange.FieldDescriptorId.Id].Key.GetName(); FieldDescriptorId = Convert.ToString(fieldChange.FieldDescriptorId.Id); - FieldDescriptorName = fieldMap[fieldChange.FieldDescriptorId.Id].Value.Name; OldValue = Convert.ToString(fieldChange.ValueBefore?.Value); NewValue = Convert.ToString(fieldChange.ValueAfter?.Value); } diff --git a/SLC-GQIDS-DOM-History_1/Provider/DomFieldContainer.cs b/SLC-GQIDS-DOM-History_1/Provider/DomFieldContainer.cs new file mode 100644 index 0000000..0aa89d8 --- /dev/null +++ b/SLC-GQIDS-DOM-History_1/Provider/DomFieldContainer.cs @@ -0,0 +1,15 @@ +// Ignore Spelling: GQI + +namespace Skyline.GQI.Sources.DOM.History.Provider +{ + using Skyline.DataMiner.Net.Sections; + + public class DomFieldContainer + { + public FieldDescriptor Field { get; set; } + + public Section Section { get; set; } + + public SectionDefinition SectionDefinition { get; set; } + } +} diff --git a/SLC-GQIDS-DOM-History_1/SLC-GQIDS-DOM-History_1.cs b/SLC-GQIDS-DOM-History_1/SLC-GQIDS-DOM-History_1.cs index cb0fc1c..e49933d 100644 --- a/SLC-GQIDS-DOM-History_1/SLC-GQIDS-DOM-History_1.cs +++ b/SLC-GQIDS-DOM-History_1/SLC-GQIDS-DOM-History_1.cs @@ -62,7 +62,6 @@ namespace Skyline.GQI.Sources.DOM.History using System.Linq; using Skyline.DataMiner.Analytics.GenericInterface; - using Skyline.DataMiner.Net.Apps.DataMinerObjectModel; using Skyline.GQI.Sources.DOM.History.Provider; [GQIMetaData(Name = "Get DOM History")]