private void SetChilds(IDbSession session, MaterialTypeModelAdpt item)
        {
            var childs = session.Query <MaterialTypeModelAdpt>().Where(c => c.IsUsed == true && c.Parent != null && c.Parent.Id == item.Id).Select(c => c as IHierarchyModel).ToList();

            foreach (var node in childs)
            {
                SetChilds(session, node as MaterialTypeModelAdpt);
            }

            item.Childs = childs;
        }
        private void SetChilds(MaterialTypeModelAdpt node, List <MaterialTypeModelAdpt> list)
        {
            var childs = list.Where(c => c.Parent != null && c.Parent.Id == node.Id).Select(c => c as IHierarchyModel).ToList();

            if (childs != null && childs.Count != 0)
            {
                foreach (var child in childs)
                {
                    SetChilds(child as MaterialTypeModelAdpt, list);
                }

                node.Childs = childs;
            }
        }
        private void SetMaterialChilds(IDbSession session, MaterialTypeModelAdpt item, List <MaterialModelAdpt> results)
        {
            var childs = session.Query <MaterialTypeModelAdpt>().Where(c => c.IsUsed == true && c.Parent != null && c.Parent.Id == item.Id).ToList();

            var childTypeIds = childs.Select(c => c.Id).ToList();

            var materials = session.Query <MaterialModelAdpt>().Where(c => c.IsUsed == true && childTypeIds.Contains(c.MaterialType.Id)).ToList();

            foreach (var mat in materials)
            {
                results.Add(mat);
            }

            foreach (var type in childs)
            {
                SetMaterialChilds(session, type, results);
            }
        }