@pxp-nd/flow 1.0.31 → 1.0.34

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (51) hide show
  1. package/README.md +1 -1
  2. package/dist/controllers/Action.d.ts +20 -20
  3. package/dist/controllers/Action.js +82 -82
  4. package/dist/controllers/ActionType.d.ts +17 -17
  5. package/dist/controllers/ActionType.js +28 -28
  6. package/dist/controllers/Event.d.ts +17 -17
  7. package/dist/controllers/Event.js +28 -28
  8. package/dist/controllers/FieldMap.d.ts +17 -17
  9. package/dist/controllers/FieldMap.js +28 -28
  10. package/dist/controllers/Flow.d.ts +31 -24
  11. package/dist/controllers/Flow.js +415 -116
  12. package/dist/controllers/FlowInstance.d.ts +20 -20
  13. package/dist/controllers/FlowInstance.js +84 -84
  14. package/dist/controllers/Node.d.ts +23 -23
  15. package/dist/controllers/Node.js +273 -273
  16. package/dist/controllers/NodeInstance.d.ts +21 -21
  17. package/dist/controllers/NodeInstance.js +191 -191
  18. package/dist/controllers/OriginName.d.ts +17 -17
  19. package/dist/controllers/OriginName.js +28 -28
  20. package/dist/controllers/index.d.ts +11 -11
  21. package/dist/controllers/index.js +25 -25
  22. package/dist/entity/Action.d.ts +20 -20
  23. package/dist/entity/Action.js +85 -85
  24. package/dist/entity/ActionType.d.ts +16 -16
  25. package/dist/entity/ActionType.js +71 -71
  26. package/dist/entity/Event.d.ts +9 -9
  27. package/dist/entity/Event.js +44 -44
  28. package/dist/entity/FieldMap.d.ts +11 -11
  29. package/dist/entity/FieldMap.js +52 -52
  30. package/dist/entity/Flow.d.ts +14 -14
  31. package/dist/entity/Flow.js +60 -60
  32. package/dist/entity/FlowInstance.d.ts +16 -16
  33. package/dist/entity/FlowInstance.js +69 -69
  34. package/dist/entity/Node.d.ts +23 -23
  35. package/dist/entity/Node.js +93 -93
  36. package/dist/entity/NodeConnection.d.ts +10 -10
  37. package/dist/entity/NodeConnection.js +49 -49
  38. package/dist/entity/NodeInstance.d.ts +13 -13
  39. package/dist/entity/NodeInstance.js +58 -58
  40. package/dist/entity/OriginName.d.ts +9 -9
  41. package/dist/entity/OriginName.js +43 -43
  42. package/dist/entity/index.d.ts +23 -23
  43. package/dist/entity/index.js +27 -27
  44. package/dist/index.d.ts +3 -3
  45. package/dist/index.js +15 -15
  46. package/dist/subscribers/Event.d.ts +21 -21
  47. package/dist/subscribers/Event.js +85 -85
  48. package/dist/subscribers/index.d.ts +3 -3
  49. package/dist/subscribers/index.js +6 -6
  50. package/package.json +45 -45
  51. package/tsconfig.json +29 -29
@@ -1,116 +1,415 @@
1
- "use strict";
2
- /**
3
- * Effex 2021
4
- *
5
- * MIT
6
- *
7
- * Flow Controller
8
- *
9
- * @summary Flow Controller
10
- * @author Jaime Figueroa
11
- *
12
- * Created at : 2021-07-08 12:55:38
13
- * Last modified :
14
- */
15
- var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
16
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
17
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
18
- else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
19
- return c > 3 && r && Object.defineProperty(target, key, r), r;
20
- };
21
- var __metadata = (this && this.__metadata) || function (k, v) {
22
- if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
23
- };
24
- var __importDefault = (this && this.__importDefault) || function (mod) {
25
- return (mod && mod.__esModule) ? mod : { "default": mod };
26
- };
27
- Object.defineProperty(exports, "__esModule", { value: true });
28
- const typeorm_1 = require("typeorm");
29
- const core_1 = require("@pxp-nd/core");
30
- const Node_1 = __importDefault(require("../entity/Node"));
31
- const NodeConnection_1 = __importDefault(require("../entity/NodeConnection"));
32
- const Flow_1 = __importDefault(require("../entity/Flow"));
33
- let Flow = class Flow extends core_1.Controller {
34
- async get(params) {
35
- const nodes = await Node_1.default.find({ flowId: params.flowId });
36
- const restNodes = [];
37
- for (let node of nodes) {
38
- const { actionConfigJson, action: { actionType: { schemaJson } } } = node;
39
- const actionConfigJsonObject = actionConfigJson ? JSON.parse(actionConfigJson) : {};
40
- const schemaJsonObject = schemaJson ? JSON.parse(schemaJson) : {};
41
- const valuesForShowingInNode = {};
42
- Object.entries(schemaJsonObject).filter(([n, sjo]) => sjo.showInNode === true).forEach(([nameKey, json]) => {
43
- valuesForShowingInNode[nameKey] = {
44
- label: json.label,
45
- value: actionConfigJsonObject[nameKey] || null
46
- };
47
- });
48
- const nodeRow = {
49
- ...node,
50
- valuesForShowingInNode
51
- };
52
- const connections = await NodeConnection_1.default.find({ nodeIdMaster: node.nodeId });
53
- restNodes.push({ node: nodeRow, connections: connections.map(c => c.nodeIdChild) });
54
- }
55
- return restNodes;
56
- }
57
- async copyNodeConnections(nodeId, newNodeId, newFlowId, manager) {
58
- const connections = await core_1.__(NodeConnection_1.default.find({ nodeIdMaster: nodeId }));
59
- for (let connection of connections) {
60
- const newNodeConnection = new NodeConnection_1.default();
61
- const { nodeConnectionId, nodeIdMaster, nodeIdChild, createdAt, modifiedAt, ...nodeConnectionToCopy } = connection;
62
- // get node from nodeIdChild
63
- const dataNodeChild = await Node_1.default.findOne({ nodeId: connection.nodeIdChild });
64
- const { nodeId: newNodeIdChild } = await this.copyNode(dataNodeChild, newFlowId, manager);
65
- Object.assign(newNodeConnection, { ...nodeConnectionToCopy, nodeIdMaster: newNodeId, nodeIdChild: newNodeIdChild });
66
- const insertNewNodeConnection = await core_1.__(manager.save(NodeConnection_1.default, newNodeConnection));
67
- }
68
- }
69
- async copyNode(node, newFlowId, manager) {
70
- // insert new node
71
- const newNode = new Node_1.default();
72
- const { nodeId, flowId, createdAt, modifiedAt, actionConfigJson, ...nodeToCopy } = node;
73
- Object.assign(newNode, { ...nodeToCopy, flowId: newFlowId });
74
- const insertNewNode = await core_1.__(manager.save(Node_1.default, newNode));
75
- // insert connection
76
- await this.copyNodeConnections(node.nodeId, insertNewNode.nodeId, newFlowId, manager);
77
- return { nodeId: insertNewNode.nodeId };
78
- }
79
- async createFlowFromFlow(params, manager) {
80
- // we need clone the flow selected
81
- const dataFlow = await core_1.__(Flow_1.default.findOne(params.flowId));
82
- const { flowId, createdAt, modifiedAt, nodes, ...flowToCopy } = dataFlow;
83
- const newFlow = new Flow_1.default();
84
- Object.assign(newFlow, flowToCopy);
85
- newFlow.name = params.name;
86
- newFlow.description = params.description;
87
- const insertNewFlow = await core_1.__(manager.save(Flow_1.default, newFlow));
88
- // create the nodes
89
- // get the first node "the trigger node"
90
- const dataNode = await Node_1.default.findOne({ where: { flowId: params.flowId }, order: { nodeId: "ASC" } });
91
- dataNode && await this.copyNode(dataNode, insertNewFlow.flowId, manager);
92
- return { flowId: insertNewFlow.flowId };
93
- }
94
- };
95
- __decorate([
96
- core_1.Get(),
97
- core_1.DbSettings('Orm'),
98
- core_1.ReadOnly(true),
99
- core_1.Log(true),
100
- __metadata("design:type", Function),
101
- __metadata("design:paramtypes", [Object]),
102
- __metadata("design:returntype", Promise)
103
- ], Flow.prototype, "get", null);
104
- __decorate([
105
- core_1.Post(),
106
- core_1.DbSettings('Orm'),
107
- core_1.ReadOnly(false),
108
- core_1.Log(true),
109
- __metadata("design:type", Function),
110
- __metadata("design:paramtypes", [Object, typeorm_1.EntityManager]),
111
- __metadata("design:returntype", Promise)
112
- ], Flow.prototype, "createFlowFromFlow", null);
113
- Flow = __decorate([
114
- core_1.Model('flow-nd/Flow')
115
- ], Flow);
116
- exports.default = Flow;
1
+ "use strict";
2
+ /**
3
+ * Copyright(c) 2021 Qorus Inc
4
+ * * All rights reserved
5
+ * * ******************************************************************************
6
+ * * NAME: Flow.ts
7
+ * * DEVELOPER: Jaime Figueroa
8
+ * * DESCRIPTION: Flow Controller
9
+ * * REVISIONS:
10
+ * * Date Change ID Author Description
11
+ * * -------------- ----------- -------------- ------------------------------------
12
+ * 08-Jul-2021 Jaime Rivera Created
13
+ * 18-Jul-2023 SP28JUL23 Mercedes Zambrana Add deleteFlow, saveFlowName, duplicateFlow
14
+ * ******************************************************************************
15
+ */
16
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
17
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
18
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
19
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
20
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
21
+ };
22
+ var __metadata = (this && this.__metadata) || function (k, v) {
23
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
24
+ };
25
+ var __importDefault = (this && this.__importDefault) || function (mod) {
26
+ return (mod && mod.__esModule) ? mod : { "default": mod };
27
+ };
28
+ Object.defineProperty(exports, "__esModule", { value: true });
29
+ const typeorm_1 = require("typeorm");
30
+ const core_1 = require("@pxp-nd/core");
31
+ const Node_1 = __importDefault(require("../entity/Node"));
32
+ const Action_1 = __importDefault(require("../entity/Action"));
33
+ const NodeConnection_1 = __importDefault(require("../entity/NodeConnection"));
34
+ const Flow_1 = __importDefault(require("../entity/Flow"));
35
+ let Flow = class Flow extends core_1.Controller {
36
+ async get(params) {
37
+ const nodes = await Node_1.default.find({ flowId: params.flowId });
38
+ const restNodes = [];
39
+ for (let node of nodes) {
40
+ const { actionConfigJson, action: { actionType: { schemaJson } } } = node;
41
+ const actionConfigJsonObject = actionConfigJson ? JSON.parse(actionConfigJson) : {};
42
+ const schemaJsonObject = schemaJson ? JSON.parse(schemaJson) : {};
43
+ const valuesForShowingInNode = {};
44
+ Object.entries(schemaJsonObject).filter(([n, sjo]) => sjo.showInNode === true).forEach(([nameKey, json]) => {
45
+ valuesForShowingInNode[nameKey] = {
46
+ label: json.label,
47
+ value: actionConfigJsonObject[nameKey] || null
48
+ };
49
+ });
50
+ const nodeRow = {
51
+ ...node,
52
+ valuesForShowingInNode
53
+ };
54
+ const connections = await NodeConnection_1.default.find({ nodeIdMaster: node.nodeId });
55
+ restNodes.push({ node: nodeRow, connections: connections.map(c => c.nodeIdChild) });
56
+ }
57
+ return restNodes;
58
+ }
59
+ async copyNodeConnections(nodeId, newNodeId, newFlowId, manager) {
60
+ const connections = await core_1.__(NodeConnection_1.default.find({ nodeIdMaster: nodeId }));
61
+ for (let connection of connections) {
62
+ const newNodeConnection = new NodeConnection_1.default();
63
+ const { nodeConnectionId, nodeIdMaster, nodeIdChild, createdAt, modifiedAt, ...nodeConnectionToCopy } = connection;
64
+ // get node from nodeIdChild
65
+ const dataNodeChild = await Node_1.default.findOne({ nodeId: connection.nodeIdChild });
66
+ const { nodeId: newNodeIdChild } = await this.copyNode(dataNodeChild, newFlowId, manager);
67
+ Object.assign(newNodeConnection, { ...nodeConnectionToCopy, nodeIdMaster: newNodeId, nodeIdChild: newNodeIdChild });
68
+ const insertNewNodeConnection = await core_1.__(manager.save(NodeConnection_1.default, newNodeConnection));
69
+ }
70
+ }
71
+ async copyNode(node, newFlowId, manager) {
72
+ // insert new node
73
+ const newNode = new Node_1.default();
74
+ const { nodeId, flowId, createdAt, modifiedAt, actionConfigJson, ...nodeToCopy } = node;
75
+ Object.assign(newNode, { ...nodeToCopy, flowId: newFlowId });
76
+ const insertNewNode = await core_1.__(manager.save(Node_1.default, newNode));
77
+ // insert connection
78
+ await this.copyNodeConnections(node.nodeId, insertNewNode.nodeId, newFlowId, manager);
79
+ return { nodeId: insertNewNode.nodeId };
80
+ }
81
+ async createFlowFromFlow(params, manager) {
82
+ // we need clone the flow selected
83
+ const dataFlow = await core_1.__(Flow_1.default.findOne(params.flowId));
84
+ const { flowId, createdAt, modifiedAt, nodes, ...flowToCopy } = dataFlow;
85
+ const newFlow = new Flow_1.default();
86
+ Object.assign(newFlow, flowToCopy);
87
+ newFlow.name = params.name;
88
+ newFlow.description = params.description;
89
+ const insertNewFlow = await core_1.__(manager.save(Flow_1.default, newFlow));
90
+ // create the nodes
91
+ // get the first node "the trigger node"
92
+ const dataNode = await Node_1.default.findOne({ where: { flowId: params.flowId }, order: { nodeId: "ASC" } });
93
+ dataNode && await this.copyNode(dataNode, insertNewFlow.flowId, manager);
94
+ return { flowId: insertNewFlow.flowId };
95
+ }
96
+ async deleteFlow(params, manager) {
97
+ let dataFlow = await core_1.__(Flow_1.default.findOne(params.flowId));
98
+ if (dataFlow) {
99
+ dataFlow.isActive = 0;
100
+ dataFlow.enabled = 'N';
101
+ const updFlow = await core_1.__(manager.save(dataFlow));
102
+ if (updFlow) {
103
+ let flowInstance = `UPDATE twf_flow_instance SET
104
+ is_active = 'N' WHERE flow_id = ${updFlow.flowId}`;
105
+ await manager.query(flowInstance);
106
+ let flowNode = `UPDATE twf_node SET
107
+ is_active = 'N' WHERE flow_id = ${updFlow.flowId}`;
108
+ await manager.query(flowNode);
109
+ const nodesToInact = await manager.find(Node_1.default, { flowId: updFlow.flowId });
110
+ const originalNodeIds = nodesToInact.map((node) => node.nodeId);
111
+ const connectionsToInact = await manager.find(NodeConnection_1.default, {
112
+ where: { nodeIdChild: typeorm_1.In(originalNodeIds) } // Suponiendo que originalNodeIds contiene los IDs de los nodos originales que deseas duplicar
113
+ });
114
+ const originalNodeCIds = connectionsToInact.map((node) => node.nodeConnectionId);
115
+ let flowNodeC = `UPDATE twf_node_connection SET
116
+ is_active = 'N' WHERE node_connection_id in ( ${originalNodeCIds})`;
117
+ await manager.query(flowNodeC);
118
+ return { success: true };
119
+ }
120
+ else {
121
+ return { success: false };
122
+ }
123
+ }
124
+ else {
125
+ return { success: false };
126
+ }
127
+ }
128
+ async saveFlowName(params, manager) {
129
+ let dataFlow = await core_1.__(Flow_1.default.findOne(params.flowId));
130
+ if (dataFlow) {
131
+ dataFlow.name = params.name;
132
+ const updFlow = await core_1.__(manager.save(dataFlow));
133
+ return { success: true };
134
+ }
135
+ else {
136
+ return { success: false };
137
+ }
138
+ }
139
+ async duplicateFlow(params, manager) {
140
+ const flowData = await manager.findOne(Flow_1.default, params.flowId);
141
+ const flowToClone = {
142
+ ...flowData,
143
+ flowId: undefined,
144
+ nodes: [],
145
+ createdAt: undefined
146
+ };
147
+ const flowDataClone = await manager.save(Flow_1.default, { ...flowToClone, name: `${flowData.name} Copy` });
148
+ const nodesToDuplicate = await manager.find(Node_1.default, { flowId: flowData === null || flowData === void 0 ? void 0 : flowData.flowId });
149
+ const originalNodeIds = nodesToDuplicate.map((node) => node.nodeId);
150
+ const duplicatedNodes = nodesToDuplicate.map((node) => {
151
+ const duplicatedNode = manager.create(Node_1.default, { ...node, nodeId: undefined });
152
+ duplicatedNode.flowId = flowDataClone.flowId;
153
+ return duplicatedNode;
154
+ });
155
+ const savedNodes = await manager.save(duplicatedNodes);
156
+ const newNodeIds = savedNodes.map((node) => node.nodeId);
157
+ const connectionsToDuplicate = await manager.find(NodeConnection_1.default, {
158
+ where: { nodeIdChild: typeorm_1.In(originalNodeIds) }
159
+ });
160
+ const duplicatedConnections = newNodeIds.map((nodeId, index) => {
161
+ const duplicatedConnection = manager.create(NodeConnection_1.default, {
162
+ nodeConnectionId: undefined,
163
+ nodeIdMaster: index === 0 ? null : newNodeIds[index - 1],
164
+ nodeIdChild: nodeId,
165
+ });
166
+ return duplicatedConnection;
167
+ });
168
+ await manager.save(duplicatedConnections);
169
+ return { success: true };
170
+ }
171
+ async getFlowRender(params) {
172
+ let actions = await typeorm_1.getManager()
173
+ .createQueryBuilder(Action_1.default, "a")
174
+ .select([
175
+ "a.actionId",
176
+ "a.code",
177
+ "a.name",
178
+ "a.description",
179
+ "at.name"
180
+ ])
181
+ .innerJoin("a.actionType", "at")
182
+ .where(`a.isActive = 1 and a.hidden = 'N'`)
183
+ .getMany();
184
+ const connections = await typeorm_1.getManager()
185
+ .createQueryBuilder(NodeConnection_1.default, "nc")
186
+ .select([
187
+ "nc.nodeIdMaster",
188
+ "nc.nodeIdChild",
189
+ ])
190
+ .innerJoin("nc.childNode", "cn")
191
+ .where(`cn.flowId = :flowId`, { flowId: params.flowId })
192
+ .getMany();
193
+ const nodes = await typeorm_1.getManager()
194
+ .createQueryBuilder(Node_1.default, "n")
195
+ .select([
196
+ "n.nodeId",
197
+ "n.flowId",
198
+ "a.code",
199
+ "a.name",
200
+ "a.description",
201
+ ])
202
+ .innerJoin("n.action", "a")
203
+ .where(`n.flowId = :flowId`, { flowId: params.flowId })
204
+ .getMany();
205
+ let sortedNodes = this.sortNodesByConnections(nodes, connections);
206
+ actions.forEach((item) => {
207
+ item.actionId = `action-${item.actionId}`;
208
+ });
209
+ sortedNodes.forEach((item) => {
210
+ item.nodeId = `node-${item.nodeId}`;
211
+ });
212
+ const actionIds = actions.map((item) => item.actionId);
213
+ const nodeIds = sortedNodes.map((item) => item.nodeId);
214
+ sortedNodes = sortedNodes.map(({ nodeId, ...rest }) => {
215
+ return { id: nodeId, ...rest };
216
+ });
217
+ const modActions = actions.map(({ actionId, ...rest }) => {
218
+ return { id: actionId, type: 'template', ...rest };
219
+ });
220
+ const tasks = [...modActions, ...sortedNodes];
221
+ const tasksObject = tasks.reduce((acc, obj) => {
222
+ acc[obj.id] = obj;
223
+ return acc;
224
+ }, {});
225
+ let response = {
226
+ board: {
227
+ columns: {
228
+ "1-column-config-nodes": {
229
+ id: "1-column-config-nodes",
230
+ name: "Add Nodes",
231
+ taskIds: actionIds,
232
+ },
233
+ "2-column-nodes-configured": {
234
+ id: "2-column-nodes-configured",
235
+ name: "Test Flow",
236
+ taskIds: nodeIds,
237
+ }
238
+ },
239
+ tasks: tasksObject,
240
+ ordered: [
241
+ "1-column-config-nodes",
242
+ "2-column-nodes-configured"
243
+ ],
244
+ }
245
+ };
246
+ return response;
247
+ }
248
+ sortNodesByConnections(nodes, connections) {
249
+ const nodeMap = new Map();
250
+ nodes.forEach((node) => nodeMap.set(node.nodeId, node));
251
+ const sortedNodes = [];
252
+ const visitedNodes = new Set();
253
+ function dfs(nodeId) {
254
+ visitedNodes.add(nodeId);
255
+ const node = nodeMap.get(nodeId);
256
+ if (node) {
257
+ sortedNodes.push(node);
258
+ }
259
+ const connectedNodes = connections.filter((connection) => connection.nodeIdMaster === nodeId);
260
+ connectedNodes.forEach((connection) => {
261
+ if (!visitedNodes.has(connection.nodeIdChild)) {
262
+ dfs(connection.nodeIdChild);
263
+ }
264
+ });
265
+ }
266
+ connections.forEach((connection) => {
267
+ if (connection.nodeIdMaster === null && !visitedNodes.has(connection.nodeIdChild)) {
268
+ dfs(connection.nodeIdChild);
269
+ }
270
+ });
271
+ return sortedNodes;
272
+ }
273
+ async saveFlow(params, manager) {
274
+ let nodeRefIds = params.board.columns['2-column-nodes-configured'].taskIds;
275
+ let nodes = params.board.tasks;
276
+ let masterId = null;
277
+ let id = null;
278
+ let flowId = null;
279
+ let taskIds = [];
280
+ for (const nodeId of nodeRefIds) {
281
+ // console.log ('node:',nodes[`${nodeId}`]);
282
+ if (nodes[`${nodeId}`]) {
283
+ flowId = nodes[`${nodeId}`].flowId;
284
+ if (nodeId != 'new') {
285
+ id = parseInt(nodeId.split("-")[1]);
286
+ taskIds.push(id);
287
+ }
288
+ const connectionsToDel = await manager.find(NodeConnection_1.default, {
289
+ where: { nodeIdChild: id }
290
+ });
291
+ if (connectionsToDel) {
292
+ //console.log("hay para eliminar---->", connectionsToDel);
293
+ const originalNodeCIds = connectionsToDel.map((node) => node.nodeConnectionId);
294
+ //console.log("eliminando: ", originalNodeCIds);
295
+ let flowNodeC = await typeorm_1.getManager().query(`DELETE
296
+ from twf_node_connection
297
+ WHERE node_connection_id = ${originalNodeCIds}`);
298
+ }
299
+ }
300
+ }
301
+ //If there are some nodes in node_connections after delete all records sent, to inactive node
302
+ let connectNoDel = await typeorm_1.getManager().query(`SELECT n.node_id
303
+ from twf_node_connection nd
304
+ inner join twf_node n on n.node_id = nd.node_id_child
305
+ WHERE n.flow_id= ${flowId}`);
306
+ const currentNodesIds = connectNoDel.map((record) => record.node_id);
307
+ // Get nodes to remove
308
+ const nodesToRemove = currentNodesIds.filter((nodeId) => !taskIds.includes(nodeId.toString()));
309
+ // Inactive nodes
310
+ if (nodesToRemove.length > 0) {
311
+ const delNodeConnect = await manager.delete(NodeConnection_1.default, { nodeIdChild: nodesToRemove[0] });
312
+ if (delNodeConnect) {
313
+ let dNode = `UPDATE twf_node SET
314
+ is_active = 'N' WHERE node_id = ${nodesToRemove[0]}`;
315
+ await manager.query(dNode);
316
+ }
317
+ }
318
+ for (const nodeId of nodeRefIds) {
319
+ if (nodes[`${nodeId}`]) {
320
+ if (nodeId === 'new') {
321
+ //get information about Action
322
+ const newAction = await Action_1.default.findOne({ code: nodes[`${nodeId}`].action.code });
323
+ const newNode = manager.create(Node_1.default, {
324
+ nodeId: undefined,
325
+ flowId: nodes[`${nodeId}`].flowId,
326
+ isInit: 'N',
327
+ actionId: newAction.actionId
328
+ });
329
+ const saveNode = await manager.save(newNode);
330
+ id = saveNode.nodeId;
331
+ }
332
+ else {
333
+ id = parseInt(nodeId.split("-")[1]);
334
+ }
335
+ //save in node and node_connection
336
+ const newConnection = manager.create(NodeConnection_1.default, {
337
+ nodeConnectionId: undefined,
338
+ nodeIdMaster: masterId,
339
+ nodeIdChild: id,
340
+ });
341
+ masterId = id;
342
+ const savedNodes = await manager.save(newConnection);
343
+ // }
344
+ }
345
+ }
346
+ return { success: true };
347
+ }
348
+ };
349
+ __decorate([
350
+ core_1.Get(),
351
+ core_1.DbSettings('Orm'),
352
+ core_1.ReadOnly(true),
353
+ core_1.Log(true),
354
+ __metadata("design:type", Function),
355
+ __metadata("design:paramtypes", [Object]),
356
+ __metadata("design:returntype", Promise)
357
+ ], Flow.prototype, "get", null);
358
+ __decorate([
359
+ core_1.Post(),
360
+ core_1.DbSettings('Orm'),
361
+ core_1.ReadOnly(false),
362
+ core_1.Log(true),
363
+ __metadata("design:type", Function),
364
+ __metadata("design:paramtypes", [Object, typeorm_1.EntityManager]),
365
+ __metadata("design:returntype", Promise)
366
+ ], Flow.prototype, "createFlowFromFlow", null);
367
+ __decorate([
368
+ core_1.Post(),
369
+ core_1.DbSettings('Orm'),
370
+ core_1.ReadOnly(false),
371
+ core_1.Log(true),
372
+ __metadata("design:type", Function),
373
+ __metadata("design:paramtypes", [Object, typeorm_1.EntityManager]),
374
+ __metadata("design:returntype", Promise)
375
+ ], Flow.prototype, "deleteFlow", null);
376
+ __decorate([
377
+ core_1.Post(),
378
+ core_1.DbSettings('Orm'),
379
+ core_1.ReadOnly(false),
380
+ core_1.Log(true),
381
+ __metadata("design:type", Function),
382
+ __metadata("design:paramtypes", [Object, typeorm_1.EntityManager]),
383
+ __metadata("design:returntype", Promise)
384
+ ], Flow.prototype, "saveFlowName", null);
385
+ __decorate([
386
+ core_1.Post(),
387
+ core_1.DbSettings('Orm'),
388
+ core_1.ReadOnly(false),
389
+ core_1.Log(true),
390
+ __metadata("design:type", Function),
391
+ __metadata("design:paramtypes", [Object, typeorm_1.EntityManager]),
392
+ __metadata("design:returntype", Promise)
393
+ ], Flow.prototype, "duplicateFlow", null);
394
+ __decorate([
395
+ core_1.Get(),
396
+ core_1.DbSettings('Orm'),
397
+ core_1.ReadOnly(true),
398
+ core_1.Log(true),
399
+ __metadata("design:type", Function),
400
+ __metadata("design:paramtypes", [Object]),
401
+ __metadata("design:returntype", Promise)
402
+ ], Flow.prototype, "getFlowRender", null);
403
+ __decorate([
404
+ core_1.Post(),
405
+ core_1.DbSettings('Orm'),
406
+ core_1.ReadOnly(false),
407
+ core_1.Log(true),
408
+ __metadata("design:type", Function),
409
+ __metadata("design:paramtypes", [Object, typeorm_1.EntityManager]),
410
+ __metadata("design:returntype", Promise)
411
+ ], Flow.prototype, "saveFlow", null);
412
+ Flow = __decorate([
413
+ core_1.Model('flow-nd/Flow')
414
+ ], Flow);
415
+ exports.default = Flow;
@@ -1,20 +1,20 @@
1
- /**
2
- * Kplian 2021
3
- *
4
- * MIT
5
- *
6
- * NodeInstance Controller
7
- *
8
- * @summary Member Controller
9
- * @author Favio Figueroa
10
- * Jaime Rivera
11
- *
12
- * Created at : 2021-07-08 12:55:38
13
- * Last modified :
14
- */
15
- import { EntityManager } from 'typeorm';
16
- import { Controller } from '@pxp-nd/core';
17
- declare class FlowInstance extends Controller {
18
- processPending(params: Record<string, any>, manager: EntityManager): Promise<unknown>;
19
- }
20
- export default FlowInstance;
1
+ /**
2
+ * Kplian 2021
3
+ *
4
+ * MIT
5
+ *
6
+ * NodeInstance Controller
7
+ *
8
+ * @summary Member Controller
9
+ * @author Favio Figueroa
10
+ * Jaime Rivera
11
+ *
12
+ * Created at : 2021-07-08 12:55:38
13
+ * Last modified :
14
+ */
15
+ import { EntityManager } from 'typeorm';
16
+ import { Controller } from '@pxp-nd/core';
17
+ declare class FlowInstance extends Controller {
18
+ processPending(params: Record<string, any>, manager: EntityManager): Promise<unknown>;
19
+ }
20
+ export default FlowInstance;