/// <summary> /// Function returns Node stored in database based on id /// </summary> /// <returns>INode object created based on specified type</returns> public INode GetNode(Guid id) { try { //using var context = new DbEconomyContext(); var node = context.Nodes .Where(n => !n.Deleted) .Where(n => n.Id == id.ToString()) .FirstOrDefault(); NodeActionParameters parameters = new NodeActionParameters(); if (node != null) { if (!string.IsNullOrEmpty(node.Parameters)) { try { parameters = JsonConvert.DeserializeObject <NodeActionParameters>(node.Parameters); } catch (Exception ex) { log.Error("Cannot get Node Parameters from Db. Continue with empty parameters", ex); } } } return(node.Fill(NodeFactory.GetNode((NodeTypes)node.Type, new Guid(node.Id), new Guid(node.AccountId), node.Name, (bool)node.IsActivated, parameters))); } catch (Exception ex) { log.Error("Cannot get Node from Db", ex); return(null); } }
public override void LoadParameters(NodeActionParameters parameters) { Parameters = JsonConvert.SerializeObject(parameters); var o = new object(); lock (o) { ParsedParams = parameters; } }
public BasicNode(Guid id, Guid accId, string name, NodeActionParameters parameters) { Type = NodeTypes.Common; Id = id; AccountId = accId; Name = name; LoadParameters(parameters); IsActivated = false; ActualTriggerType = NodeActionTriggerTypes.None; }
/// <summary> /// Function returns all Nodes stored in database /// </summary> /// <returns>List of INode object created based on specified type</returns> public List <INode> GetNodes() { try { ////using var context = new DbEconomyContext(); var nodes = new List <INode>(); NodeActionParameters parameters = new NodeActionParameters(); foreach (var n in context.Nodes.Where(n => !n.Deleted)) { if (n != null) { if (!string.IsNullOrEmpty(n.Parameters)) { try { parameters = JsonConvert.DeserializeObject <NodeActionParameters>(n.Parameters); } catch (Exception ex) { log.Warn("Cannot get Node Parameters from Db. Continue with empty parameters", ex); } } } var actid = string.Empty; if (!string.IsNullOrEmpty(n.AccountId)) { actid = n.AccountId; } else { actid = Guid.Empty.ToString(); } var node = n.Fill(NodeFactory.GetNode((NodeTypes)n.Type, new Guid(n.Id), new Guid(actid), n.Name, (bool)n.IsActivated, parameters)); node.SetNodeTriggerType(parameters.TriggerType); nodes.Add(node); } return(nodes); } catch (Exception ex) { log.Error("Cannot get Nodes from Db. Continue with empty list!", ex); return(null); } }
public MQTTPublishNode(Guid id, Guid accId, string name, bool isActivated, NodeActionParameters parameters) { Type = NodeTypes.HTTPAPIRequest; Id = id; AccountId = accId; Name = name; if (parameters != null) { LoadParameters(parameters); SetNodeTriggerType(parameters.TriggerType); } IsActivated = isActivated; ActualTriggerType = NodeActionTriggerTypes.None; mqttClient = new MQTTClient("node-" + id.ToString()); }
public override string UpdateNode(string accountAddress, string nodeId, Guid ownerid, string nodeName, NodeTypes type, bool isActivated, NodeActionParameters parameters, IDbConnectorService dbservice) { //IDbConnectorService dbservice = new DbConnectorService(); try { var accountId = Guid.Empty; if (EconomyMainContext.Accounts.TryGetValue(accountAddress, out var account)) { accountId = account.Id; } else { Console.WriteLine("Cannot create node - account not found"); } if (EconomyMainContext.Nodes.TryGetValue(nodeId, out var foundnode)) { foundnode.AccountId = accountId; if (isActivated) { foundnode.Activate(); } else { foundnode.DeActivate(); } foundnode.LoadParameters(parameters); foundnode.SetNodeTriggerType(parameters.TriggerType); foundnode.Name = nodeName; if (EconomyMainContext.WorkWithDb) { if (!dbservice.SaveNode(foundnode)) { return("Cannot save Node to the db!"); } } } else { var id = Guid.NewGuid(); if (string.IsNullOrEmpty(id.ToString())) { id = Guid.NewGuid(); } if (string.IsNullOrEmpty(ownerid.ToString())) { ownerid = Guid.NewGuid(); } var node = NodeFactory.GetNode(type, id, accountId, nodeName, isActivated, parameters); if (node != null) { node.ActionRequest += Node_ActionRequest; EconomyMainContext.Nodes.TryAdd(node.Id.ToString(), node); if (EconomyMainContext.WorkWithDb) { if (!dbservice.SaveNode(node)) { return("Cannot save Node to the db!"); } } } } return("OK"); } catch (Exception ex) { log.Error("Cannot create node", ex); return("Cannot create node!"); } }
public static INode GetNode(NodeTypes type, Guid id, Guid accId, string name, bool isActivated, NodeActionParameters parameters) { switch (type) { case NodeTypes.Common: return(new BasicNode(id, accId, name, parameters)); case NodeTypes.MQTTApiPublish: if (id == Guid.Empty) { id = Guid.NewGuid(); } return(new MQTTPublishNode(id, accId, name, isActivated, parameters)); case NodeTypes.HTTPAPIRequest: if (id == Guid.Empty) { id = Guid.NewGuid(); } return(new HTTPApiRequestNode(id, accId, name, isActivated, parameters)); } return(new BasicNode(id, accId, name, parameters));; }
public abstract void LoadParameters(NodeActionParameters parameters);
public abstract string UpdateNode(string accountAddress, string nodeId, Guid ownerid, string nodeName, NodeTypes type, bool isActivated, NodeActionParameters parameters, IDbConnectorService dbservice);
public HTTPApiRequestNode(Guid id, Guid accId, string name, bool isActivated, NodeActionParameters parameters) { Type = NodeTypes.HTTPAPIRequest; Id = id; AccountId = accId; Name = name; if (parameters != null) { LoadParameters(parameters); SetNodeTriggerType(parameters.TriggerType); } IsActivated = isActivated; ActualTriggerType = NodeActionTriggerTypes.None; }