From fe259987f8b98b4e8ef1b0b2bee971a3eb43d346 Mon Sep 17 00:00:00 2001 From: Fraser Greenroyd Date: Wed, 22 Apr 2020 16:59:37 +0100 Subject: [PATCH] Add UniqueConstructions for Openings #1690 --- .../Query/UniqueConstructions.cs | 41 ++++++++++++------- 1 file changed, 27 insertions(+), 14 deletions(-) diff --git a/Environment_Engine/Query/UniqueConstructions.cs b/Environment_Engine/Query/UniqueConstructions.cs index 16a26155a..6bb7cb95f 100644 --- a/Environment_Engine/Query/UniqueConstructions.cs +++ b/Environment_Engine/Query/UniqueConstructions.cs @@ -56,21 +56,34 @@ public static List UniqueConstructions(this List panels, bo unique.Add(be.Construction as Construction); } - foreach (Opening o in be.Openings) + unique.AddRange(be.Openings.UniqueConstructions()); + } + + return unique; + } + + [Description("Returns a collection of unique constructions from a collection of Environment Openings")] + [Input("openings", "A collection of Environment Openings")] + [Input("includeConstructionName", "Flag to determine whether or not to use the construction name as a parameter of uniqueness. Default false")] + [Output("uniqueConstructions", "A collection of unique Construction objects")] + public static List UniqueConstructions(this List openings, bool includeConstructionName = false) + { + List unique = new List(); + + foreach (Opening o in openings) + { + if (o.FrameConstruction != null) + { + Construction t1 = unique.Where(x => x.UniqueConstructionName(includeConstructionName) == o.FrameConstruction.UniqueConstructionName(includeConstructionName)).FirstOrDefault(); + if (t1 == null) + unique.Add(o.FrameConstruction as Construction); + } + + if (o.OpeningConstruction != null) { - if (o.FrameConstruction != null) - { - Construction t2 = unique.Where(x => x.UniqueConstructionName(includeConstructionName) == o.FrameConstruction.UniqueConstructionName(includeConstructionName)).FirstOrDefault(); - if (t2 == null) - unique.Add(o.FrameConstruction as Construction); - } - - if (o.OpeningConstruction != null) - { - Construction t3 = unique.Where(x => x.UniqueConstructionName(includeConstructionName) == o.OpeningConstruction.UniqueConstructionName(includeConstructionName)).FirstOrDefault(); - if (t3 == null) - unique.Add(o.OpeningConstruction as Construction); - } + Construction t2 = unique.Where(x => x.UniqueConstructionName(includeConstructionName) == o.OpeningConstruction.UniqueConstructionName(includeConstructionName)).FirstOrDefault(); + if (t2 == null) + unique.Add(o.OpeningConstruction as Construction); } }