public dynamic GetNeighbours(string Forest, int?NodeId = null, int Levels = 1, int SkipLevels = 0, string Lang = null) { var db = new MindContextProvider(Forest); //prepare parameters string user = User.Identity.IsAuthenticated ? User.Identity.Name : null; string lang = Lang ?? "%"; //get the connections var connections = db.Context .GetChildConnections(NodeId, user, Levels, SkipLevels, lang) .ToList(); var ids = connections.Select(c => c.ToId).ToList(); var parents = db.Context .GetParentConnections(NodeId, user, Levels, SkipLevels, lang) .ToArray(); ids.AddRange(parents.Select(c => c.FromId).ToList()); connections.AddRange(parents); //get nodes return(new MindResult() { Connections = connections, Nodes = db.Context .Nodes .Include("Permissions") .Include("Texts") .Where(n => ids.Contains(n.Id)) .ToArray() }); }
public dynamic GetTrees(string Forest = null, string Lang = null) { var db = new MindContextProvider(Forest); var trees = new MindResult(); //prepare parameters string user = User.Identity.IsAuthenticated ? User.Identity.Name : null; string lang = Lang ?? "%"; //get the tree connections trees.Connections = db.Context //.GetChildConnections(null, user, 5, 0, lang) .GetChildConnections(null, user, 2, 0, lang) .ToArray(); //get tree nodes List <long> ids = trees.Connections.Select(c => c.FromId) .Distinct().ToList(); ids.AddRange(trees.Connections.Select(c => c.ToId)); trees.Nodes = db.Context.Nodes .Include("Permissions") .Include("Texts") .Where(n => ids.Contains(n.Id)) .ToArray(); //get forest settings //TODO: implement in db var settings = new KeyValuePair <string, string>[] { new KeyValuePair <string, string>("NodeClasses", ""), new KeyValuePair <string, string>("ConnectionClasses", ""), new KeyValuePair <string, string>("Css", "") }; return(new { trees = trees, settings = settings }); }
public dynamic Roles(string Forest) { var db = new MindContextProvider(Forest); return(db.Context .Roles); }
public SaveResult SaveChanges(string Forest, JObject saveBundle) { var db = new MindContextProvider(Forest); //TODO: intercept updates: check permissions, if node deleted, which has other connctions, ignore delete of node (delete connection only) return(db.SaveChanges(saveBundle)); }
public dynamic Nodes(string Forest, string Lang = null) { var db = new MindContextProvider(Forest); //prepare parameters string user = User.Identity.IsAuthenticated ? User.Identity.Name : null; string lang = Lang ?? "%"; var result = db.Context .GetNodes(user, lang) ; return(result); }
public dynamic Connections(string Forest, string Lang = null) { var db = new MindContextProvider(Forest); //prepare parameters string user = User.Identity.IsAuthenticated ? User.Identity.Name : null; string lang = Lang ?? "%"; var availableNodes = db.Context.GetNodes(user, lang).Select(n => n.Id).ToArray(); var result = db.Context .Connections .Where(c => availableNodes.Contains(c.FromId)) ; return(result); }
public dynamic Test(string Forest, string Lang = null) { var db = new MindContextProvider(Forest); //prepare parameters string user = User.Identity.IsAuthenticated ? User.Identity.Name : null; string lang = Lang ?? "%"; var result = db.Context .Nodes .Include("Texts") .Include("ConnectionsFrom") ; return(result); }
public dynamic GetNodeLookup(string Forest, int?RootNodeId = null, string Lang = null) { var db = new MindContextProvider(Forest); //prepare parameters string user = User.Identity.IsAuthenticated ? User.Identity.Name : null; string lang = Lang ?? "%"; if (!RootNodeId.HasValue) { //get the root RootNodeId = (int?)db.Context .GetChildConnections(null, user, 1, 0, lang) .Select(c => c.FromId) .FirstOrDefault(); } var result = db.Context .NodeLookup(RootNodeId, user, lang) .ToArray() ; return(result); }
public string Metadata(string Forest = null) { var db = new MindContextProvider(Forest); return(db.Metadata()); }