예제 #1
0
 internal ClassificationItem(IIfcClassificationReference entity, bool init) : base(entity)
 {
     Children = new ClassificationItemCollection(this, init);
 }
예제 #2
0
        private static Dictionary <string, ClassificationItem> ConvertClassification(CostModel model, IEnumerable <TZatrideni> zatrideni, ClassificationItemCollection parent)
        {
            var result = new Dictionary <string, ClassificationItem>();

            foreach (var zatr in zatrideni)
            {
                // classification items model classification hierarchy (breakdown structure)
                // there might be several classifications in the model
                var item = new ClassificationItem(model)
                {
                    Sort           = zatr.Typ.ToString(),
                    Name           = zatr.Nazev,
                    Identification = zatr.Cislo,
                    Description    = zatr.ZPOPIS
                };

                // nested level of classification breakdown
                if (zatr.ZATRIDENI?.Any() == true)
                {
                    var children = ConvertClassification(model, zatr.ZATRIDENI, item.Children);
                    foreach (var ch in children)
                    {
                        result.Add(ch.Key, ch.Value);
                    }
                }

                // keep key in the lookup for later use
                if (!string.IsNullOrWhiteSpace(zatr.PolozkaZatrideniUID) && !result.ContainsKey(zatr.PolozkaZatrideniUID))
                {
                    result.Add(zatr.PolozkaZatrideniUID, item);
                }
            }
            return(result);
        }