protected List<Guid> PopulateRootNodesToStorage(RecordTree tree)
		{
			List<Guid> nodeIds = new List<Guid>();
			if (tree.RootNodes == null)
				return nodeIds;

			foreach (var node in tree.RootNodes)
				nodeIds.Add( node.RecordId );

			return nodeIds;
		}
Esempio n. 2
0
        protected List<Guid> PopulateRootNodesToStorage(RecordTree tree)
        {
            List<Guid> nodeIds = new List<Guid>();
            if (tree.RootNodes == null)
                return nodeIds;

            foreach (var node in tree.RootNodes)
                nodeIds.Add( node.RecordId );

            return nodeIds;
        }
Esempio n. 3
0
        public static List <ResponseTreeNode> GetTreeRecords(List <Entity> entities, List <EntityRelation> relationList, RecordTree tree)
        {
            EntityRelation relation = relationList.FirstOrDefault(r => r.Id == tree.RelationId);

            Guid treeEntityId   = relation.OriginEntityId;
            Guid treeRelFieldId = relation.OriginFieldId;

            Entity treeEntity       = entities.FirstOrDefault(e => e.Id == treeEntityId);
            Field  treeIdField      = treeEntity.Fields.FirstOrDefault(f => f.Id == treeRelFieldId);
            Field  treeParrentField = treeEntity.Fields.FirstOrDefault(f => f.Id == tree.NodeParentIdFieldId);
            Field  nameField        = treeEntity.Fields.FirstOrDefault(f => f.Id == tree.NodeNameFieldId);
            Field  labelField       = treeEntity.Fields.FirstOrDefault(f => f.Id == tree.NodeLabelFieldId);
            Field  weightField      = treeEntity.Fields.FirstOrDefault(f => f.Id == tree.NodeWeightFieldId);

            var relIdField = treeEntity.Fields.Single(x => x.Name == "id");

            List <Guid> fieldIdsToInclude = new List <Guid>();

            if (!fieldIdsToInclude.Contains(treeIdField.Id))
            {
                fieldIdsToInclude.Add(treeIdField.Id);
            }

            if (!fieldIdsToInclude.Contains(treeParrentField.Id))
            {
                fieldIdsToInclude.Add(treeParrentField.Id);
            }

            if (!fieldIdsToInclude.Contains(tree.NodeNameFieldId))
            {
                fieldIdsToInclude.Add(tree.NodeNameFieldId);
            }

            if (!fieldIdsToInclude.Contains(tree.NodeLabelFieldId))
            {
                fieldIdsToInclude.Add(tree.NodeLabelFieldId);
            }

            var weightFieldNonNullable = Guid.Empty;

            if (tree.NodeWeightFieldId.HasValue)
            {
                weightFieldNonNullable = tree.NodeWeightFieldId.Value;
            }
            if (weightField != null && !fieldIdsToInclude.Contains(weightFieldNonNullable))
            {
                fieldIdsToInclude.Add(weightFieldNonNullable);
            }

            string queryFields = string.Empty;

            //Add mandatory fields
            foreach (var fieldId in fieldIdsToInclude)
            {
                var f = treeEntity.Fields.SingleOrDefault(x => x.Id == fieldId);
                if (f != null)
                {
                    if (!queryFields.Contains(f.Name))
                    {
                        queryFields += (f.Name + ",");
                    }
                }
            }
            //Add object properties fields
            foreach (var fieldId in tree.NodeObjectProperties)
            {
                var f = treeEntity.Fields.SingleOrDefault(x => x.Id == fieldId);
                if (f != null)
                {
                    if (!queryFields.Contains(f.Name))
                    {
                        queryFields += (f.Name + ",");
                    }
                }
            }
            queryFields += "id";

            EntityQuery   eq         = new EntityQuery(treeEntity.Name, queryFields);
            RecordManager recMan     = new RecordManager();
            var           allRecords = recMan.Find(eq).Object.Data;

            List <ResponseTreeNode> rootNodes = new List <ResponseTreeNode>();

            foreach (var rootNode in tree.RootNodes.OrderBy(x => x.Name))
            {
                List <ResponseTreeNode> children = new List <ResponseTreeNode>();
                int?rootNodeWeight = null;
                if (weightField != null)
                {
                    rootNodeWeight = rootNode.Weight;
                    children       = GetTreeNodeChildren(allRecords, treeIdField.Name,
                                                         treeParrentField.Name, nameField.Name, labelField.Name, rootNode.Id, weightField.Name, 1, tree.DepthLimit);
                }
                else
                {
                    children = GetTreeNodeChildren(allRecords, treeIdField.Name,
                                                   treeParrentField.Name, nameField.Name, labelField.Name, rootNode.Id, "no-weight", 1, tree.DepthLimit);
                }
                rootNodes.Add(new ResponseTreeNode
                {
                    RecordId = rootNode.RecordId,
                    Id       = rootNode.Id.Value,
                    ParentId = rootNode.ParentId,
                    Name     = rootNode.Name,
                    Label    = rootNode.Label,
                    Weight   = rootNodeWeight,
                    Nodes    = children,
                    Object   = allRecords.SingleOrDefault(x => (Guid)x["id"] == rootNode.RecordId)
                });
            }

            return(rootNodes);
        }
		protected IStorageRecordTree CreateEmptyRecordTreeObject(RecordTree item)
		{
			var storageService = service.StorageService;
			return storageService.GetObjectFactory().CreateEmptyRecordTreeObject();
		}
Esempio n. 5
0
 protected IStorageRecordTree CreateEmptyRecordTreeObject(RecordTree item)
 {
     var storageService = service.StorageService;
     return storageService.GetObjectFactory().CreateEmptyRecordTreeObject();
 }