@things-factory/worklist 9.0.0-beta.8 → 9.0.0-beta.80

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 (186) hide show
  1. package/README.md +30 -5
  2. package/dist-client/activity-summary-generator.js +17 -22
  3. package/dist-client/activity-summary-generator.js.map +1 -1
  4. package/dist-client/components/activity-/bowner-view.js +24 -24
  5. package/dist-client/components/activity-/bowner-view.js.map +1 -1
  6. package/dist-client/components/activity-approval-ribon.js +47 -48
  7. package/dist-client/components/activity-approval-ribon.js.map +1 -1
  8. package/dist-client/components/activity-instance-preview.js +34 -32
  9. package/dist-client/components/activity-instance-preview.js.map +1 -1
  10. package/dist-client/components/activity-instance-ribon.js +41 -41
  11. package/dist-client/components/activity-instance-ribon.js.map +1 -1
  12. package/dist-client/components/activity-intro-view.js +24 -24
  13. package/dist-client/components/activity-intro-view.js.map +1 -1
  14. package/dist-client/components/activity-reporter-view.js +24 -24
  15. package/dist-client/components/activity-reporter-view.js.map +1 -1
  16. package/dist-client/components/activity-starter-form.js +53 -54
  17. package/dist-client/components/activity-starter-form.js.map +1 -1
  18. package/dist-client/components/activity-thread-ribon.js +38 -38
  19. package/dist-client/components/activity-thread-ribon.js.map +1 -1
  20. package/dist-client/components/activity-thread-timeline.js +74 -74
  21. package/dist-client/components/activity-thread-timeline.js.map +1 -1
  22. package/dist-client/grist-editor/grist-editor-activity-search-key.js +2 -3
  23. package/dist-client/grist-editor/grist-editor-activity-search-key.js.map +1 -1
  24. package/dist-client/grist-editor/popup-activity-search-keys-input.js +19 -19
  25. package/dist-client/grist-editor/popup-activity-search-keys-input.js.map +1 -1
  26. package/dist-client/pages/activity/activity-list-page.js +34 -34
  27. package/dist-client/pages/activity/activity-list-page.js.map +1 -1
  28. package/dist-client/pages/activity/activity-model-item-list.js +18 -20
  29. package/dist-client/pages/activity/activity-model-item-list.js.map +1 -1
  30. package/dist-client/pages/activity/activity-page.js +64 -46
  31. package/dist-client/pages/activity/activity-page.js.map +1 -1
  32. package/dist-client/pages/activity/activity-partial-view.js +18 -18
  33. package/dist-client/pages/activity/activity-partial-view.js.map +1 -1
  34. package/dist-client/pages/activity/starter-list-page.js +22 -25
  35. package/dist-client/pages/activity/starter-list-page.js.map +1 -1
  36. package/dist-client/pages/activity-approval/activity-approval-importer.js +16 -17
  37. package/dist-client/pages/activity-approval/activity-approval-importer.js.map +1 -1
  38. package/dist-client/pages/activity-approval/activity-approval-list-page.js +30 -23
  39. package/dist-client/pages/activity-approval/activity-approval-list-page.js.map +1 -1
  40. package/dist-client/pages/activity-approval/activity-approval-page.js +105 -78
  41. package/dist-client/pages/activity-approval/activity-approval-page.js.map +1 -1
  42. package/dist-client/pages/activity-instance/activity-instance-list-page.d.ts +17 -2
  43. package/dist-client/pages/activity-instance/activity-instance-list-page.js +235 -40
  44. package/dist-client/pages/activity-instance/activity-instance-list-page.js.map +1 -1
  45. package/dist-client/pages/activity-instance/activity-instance-search-page.js +38 -38
  46. package/dist-client/pages/activity-instance/activity-instance-search-page.js.map +1 -1
  47. package/dist-client/pages/activity-instance/activity-instance-start-page.js +54 -41
  48. package/dist-client/pages/activity-instance/activity-instance-start-page.js.map +1 -1
  49. package/dist-client/pages/activity-instance/activity-instance-view.js +211 -213
  50. package/dist-client/pages/activity-instance/activity-instance-view.js.map +1 -1
  51. package/dist-client/pages/activity-stats/activity-stats-importer.js +16 -17
  52. package/dist-client/pages/activity-stats/activity-stats-importer.js.map +1 -1
  53. package/dist-client/pages/activity-stats/activity-stats-list-page.js +30 -23
  54. package/dist-client/pages/activity-stats/activity-stats-list-page.js.map +1 -1
  55. package/dist-client/pages/activity-store/activity-store-page.js +27 -26
  56. package/dist-client/pages/activity-store/activity-store-page.js.map +1 -1
  57. package/dist-client/pages/activity-supervisor/reporter-list-page.js +26 -29
  58. package/dist-client/pages/activity-supervisor/reporter-list-page.js.map +1 -1
  59. package/dist-client/pages/activity-template/activity-template-importer.js +16 -17
  60. package/dist-client/pages/activity-template/activity-template-importer.js.map +1 -1
  61. package/dist-client/pages/activity-template/activity-template-list-page.js +38 -37
  62. package/dist-client/pages/activity-template/activity-template-list-page.js.map +1 -1
  63. package/dist-client/pages/activity-template/activity-template-model-item-list.js +2 -3
  64. package/dist-client/pages/activity-template/activity-template-model-item-list.js.map +1 -1
  65. package/dist-client/pages/activity-thread/activity-thread-importer.js +16 -17
  66. package/dist-client/pages/activity-thread/activity-thread-importer.js.map +1 -1
  67. package/dist-client/pages/activity-thread/activity-thread-list-page.d.ts +1 -1
  68. package/dist-client/pages/activity-thread/activity-thread-list-page.js +38 -36
  69. package/dist-client/pages/activity-thread/activity-thread-list-page.js.map +1 -1
  70. package/dist-client/pages/activity-thread/activity-thread-page.js +71 -51
  71. package/dist-client/pages/activity-thread/activity-thread-page.js.map +1 -1
  72. package/dist-client/pages/activity-thread/activity-thread-view-page.js +69 -60
  73. package/dist-client/pages/activity-thread/activity-thread-view-page.js.map +1 -1
  74. package/dist-client/pages/activity-thread/activity-thread-view.js +150 -151
  75. package/dist-client/pages/activity-thread/activity-thread-view.js.map +1 -1
  76. package/dist-client/pages/installable-activity/installable-activity-list-page.js +25 -30
  77. package/dist-client/pages/installable-activity/installable-activity-list-page.js.map +1 -1
  78. package/dist-client/pages/todo/approval-done-list-page.js +39 -35
  79. package/dist-client/pages/todo/approval-done-list-page.js.map +1 -1
  80. package/dist-client/pages/todo/approval-pending-list-page.js +58 -53
  81. package/dist-client/pages/todo/approval-pending-list-page.js.map +1 -1
  82. package/dist-client/pages/todo/done-list-calendar-page.js +17 -17
  83. package/dist-client/pages/todo/done-list-calendar-page.js.map +1 -1
  84. package/dist-client/pages/todo/done-list-page.js +40 -35
  85. package/dist-client/pages/todo/done-list-page.js.map +1 -1
  86. package/dist-client/pages/todo/draft-list-page.js +27 -30
  87. package/dist-client/pages/todo/draft-list-page.js.map +1 -1
  88. package/dist-client/pages/todo/pickable-list-page.js +31 -37
  89. package/dist-client/pages/todo/pickable-list-page.js.map +1 -1
  90. package/dist-client/pages/todo/todo-list-page.js +55 -54
  91. package/dist-client/pages/todo/todo-list-page.js.map +1 -1
  92. package/dist-client/templates/activity-approval-context-template.js +49 -49
  93. package/dist-client/templates/activity-approval-context-template.js.map +1 -1
  94. package/dist-client/templates/activity-instance-context-template.js +104 -104
  95. package/dist-client/templates/activity-instance-context-template.js.map +1 -1
  96. package/dist-client/templates/activity-thread-context-template.js +41 -41
  97. package/dist-client/templates/activity-thread-context-template.js.map +1 -1
  98. package/dist-client/tsconfig.tsbuildinfo +1 -1
  99. package/dist-server/controllers/activity-approval/_abort.js +18 -2
  100. package/dist-server/controllers/activity-approval/_abort.js.map +1 -1
  101. package/dist-server/controllers/activity-approval/approve.js +25 -3
  102. package/dist-server/controllers/activity-approval/approve.js.map +1 -1
  103. package/dist-server/controllers/activity-approval/check-authority.js +2 -3
  104. package/dist-server/controllers/activity-approval/check-authority.js.map +1 -1
  105. package/dist-server/controllers/activity-approval/delegate.js +17 -3
  106. package/dist-server/controllers/activity-approval/delegate.js.map +1 -1
  107. package/dist-server/controllers/activity-approval/reject.js +16 -2
  108. package/dist-server/controllers/activity-approval/reject.js.map +1 -1
  109. package/dist-server/controllers/activity-approval/save.js +6 -2
  110. package/dist-server/controllers/activity-approval/save.js.map +1 -1
  111. package/dist-server/controllers/activity-installation/activity-installation-controller.js +1 -1
  112. package/dist-server/controllers/activity-installation/activity-installation-controller.js.map +1 -1
  113. package/dist-server/controllers/activity-installation/call-webhook.js +3 -1
  114. package/dist-server/controllers/activity-installation/call-webhook.js.map +1 -1
  115. package/dist-server/controllers/activity-instance/abort.js +9 -1
  116. package/dist-server/controllers/activity-instance/abort.js.map +1 -1
  117. package/dist-server/controllers/activity-instance/draft.js +19 -2
  118. package/dist-server/controllers/activity-instance/draft.js.map +1 -1
  119. package/dist-server/controllers/activity-instance/end.js +10 -2
  120. package/dist-server/controllers/activity-instance/end.js.map +1 -1
  121. package/dist-server/controllers/activity-instance/issue.js +30 -5
  122. package/dist-server/controllers/activity-instance/issue.js.map +1 -1
  123. package/dist-server/controllers/activity-instance/pick.js +5 -1
  124. package/dist-server/controllers/activity-instance/pick.js.map +1 -1
  125. package/dist-server/controllers/activity-thread/_abort.js +9 -1
  126. package/dist-server/controllers/activity-thread/_abort.js.map +1 -1
  127. package/dist-server/controllers/activity-thread/check-authority.js +2 -3
  128. package/dist-server/controllers/activity-thread/check-authority.js.map +1 -1
  129. package/dist-server/controllers/activity-thread/delegate.js +9 -1
  130. package/dist-server/controllers/activity-thread/delegate.js.map +1 -1
  131. package/dist-server/controllers/activity-thread/end.js +9 -2
  132. package/dist-server/controllers/activity-thread/end.js.map +1 -1
  133. package/dist-server/controllers/activity-thread/restart.js +9 -1
  134. package/dist-server/controllers/activity-thread/restart.js.map +1 -1
  135. package/dist-server/controllers/activity-thread/save.js +7 -1
  136. package/dist-server/controllers/activity-thread/save.js.map +1 -1
  137. package/dist-server/controllers/activity-thread/start.js +8 -1
  138. package/dist-server/controllers/activity-thread/start.js.map +1 -1
  139. package/dist-server/controllers/activity-thread/submit.js +18 -4
  140. package/dist-server/controllers/activity-thread/submit.js.map +1 -1
  141. package/dist-server/controllers/common.js +5 -5
  142. package/dist-server/controllers/common.js.map +1 -1
  143. package/dist-server/routes.js +5 -2
  144. package/dist-server/routes.js.map +1 -1
  145. package/dist-server/service/activity/activity-mutation.js +43 -13
  146. package/dist-server/service/activity/activity-mutation.js.map +1 -1
  147. package/dist-server/service/activity/activity-query.js +3 -3
  148. package/dist-server/service/activity/activity-query.js.map +1 -1
  149. package/dist-server/service/activity-approval/activity-approval-subscription.js +3 -4
  150. package/dist-server/service/activity-approval/activity-approval-subscription.js.map +1 -1
  151. package/dist-server/service/activity-instance/activity-instance-mutation.d.ts +1 -0
  152. package/dist-server/service/activity-instance/activity-instance-mutation.js +36 -3
  153. package/dist-server/service/activity-instance/activity-instance-mutation.js.map +1 -1
  154. package/dist-server/service/activity-instance/activity-instance-query.d.ts +1 -0
  155. package/dist-server/service/activity-instance/activity-instance-query.js +25 -5
  156. package/dist-server/service/activity-instance/activity-instance-query.js.map +1 -1
  157. package/dist-server/service/activity-instance/activity-instance-subscription.js +3 -4
  158. package/dist-server/service/activity-instance/activity-instance-subscription.js.map +1 -1
  159. package/dist-server/service/activity-template/activity-template-mutation.js +25 -7
  160. package/dist-server/service/activity-template/activity-template-mutation.js.map +1 -1
  161. package/dist-server/service/activity-template/activity-template-query.js +1 -1
  162. package/dist-server/service/activity-template/activity-template-query.js.map +1 -1
  163. package/dist-server/service/activity-thread/activity-thread-subscription.js +3 -4
  164. package/dist-server/service/activity-thread/activity-thread-subscription.js.map +1 -1
  165. package/dist-server/service/installable-activity/installable-activity-mutation.js +19 -3
  166. package/dist-server/service/installable-activity/installable-activity-mutation.js.map +1 -1
  167. package/dist-server/tsconfig.tsbuildinfo +1 -1
  168. package/helps/worklist/activity-instance-list-page.md +90 -0
  169. package/helps/worklist/activity-instance-search-page.md +83 -0
  170. package/helps/worklist/activity-instance-start-page.md +92 -0
  171. package/helps/worklist/activity-thread-list-page.md +87 -0
  172. package/helps/worklist/activity-thread-page.md +93 -0
  173. package/helps/worklist/activity-thread-view-page.md +86 -0
  174. package/helps/worklist/approval-done-list-page.md +72 -0
  175. package/helps/worklist/approval-pending-list-page.md +89 -0
  176. package/helps/worklist/done-list-calendar-page.md +66 -0
  177. package/helps/worklist/done-list-page.md +76 -0
  178. package/helps/worklist/draft-list-page.md +80 -0
  179. package/helps/worklist/pickable-list-page.md +75 -0
  180. package/helps/worklist/todo-list-page.md +90 -0
  181. package/package.json +11 -10
  182. package/translations/en.json +3 -1
  183. package/translations/ja.json +2 -0
  184. package/translations/ko.json +2 -0
  185. package/translations/ms.json +2 -0
  186. package/translations/zh.json +2 -0
@@ -5,8 +5,24 @@ const activity_thread_js_1 = require("../../service/activity-thread/activity-thr
5
5
  const activity_approval_js_1 = require("../../service/activity-approval/activity-approval.js");
6
6
  async function _abort({ activityApproval, comment }, context) {
7
7
  const { user, tx } = context.state;
8
- var result = await tx.getRepository(activity_approval_js_1.ActivityApproval).save(Object.assign(Object.assign({}, activityApproval), { judgment: activity_approval_js_1.ActivityApprovalJudgment.Aborted, comment, transaction: 'abort', updater: user, terminatedAt: new Date(), terminator: user }));
9
- await tx.getRepository(activity_thread_js_1.ActivityThread).save(Object.assign(Object.assign({}, activityApproval.activityThread), { transaction: 'abort', reason: comment, state: activity_thread_js_1.ActivityThreadStatus.Aborted, updater: user, terminatedAt: new Date(), terminator: user }));
8
+ var result = await tx.getRepository(activity_approval_js_1.ActivityApproval).save({
9
+ ...activityApproval,
10
+ judgment: activity_approval_js_1.ActivityApprovalJudgment.Aborted,
11
+ comment,
12
+ transaction: 'abort',
13
+ updater: user,
14
+ terminatedAt: new Date(),
15
+ terminator: user
16
+ });
17
+ await tx.getRepository(activity_thread_js_1.ActivityThread).save({
18
+ ...activityApproval.activityThread,
19
+ transaction: 'abort',
20
+ reason: comment,
21
+ state: activity_thread_js_1.ActivityThreadStatus.Aborted,
22
+ updater: user,
23
+ terminatedAt: new Date(),
24
+ terminator: user
25
+ });
10
26
  return result;
11
27
  }
12
28
  //# sourceMappingURL=_abort.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"_abort.js","sourceRoot":"","sources":["../../../server/controllers/activity-approval/_abort.ts"],"names":[],"mappings":";;AAGA,wBA2BC;AA9BD,yFAAuG;AACvG,+FAAiH;AAE1G,KAAK,UAAU,MAAM,CAC1B,EAAE,gBAAgB,EAAE,OAAO,EAA2D,EACtF,OAAwB;IAExB,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,KAAK,CAAA;IAElC,IAAI,MAAM,GAAG,MAAM,EAAE,CAAC,aAAa,CAAC,uCAAgB,CAAC,CAAC,IAAI,iCACrD,gBAAgB,KACnB,QAAQ,EAAE,+CAAwB,CAAC,OAAO,EAC1C,OAAO,EACP,WAAW,EAAE,OAAO,EACpB,OAAO,EAAE,IAAI,EACb,YAAY,EAAE,IAAI,IAAI,EAAE,EACxB,UAAU,EAAE,IAAI,IAChB,CAAA;IAEF,MAAM,EAAE,CAAC,aAAa,CAAC,mCAAc,CAAC,CAAC,IAAI,iCACtC,gBAAgB,CAAC,cAAc,KAClC,WAAW,EAAE,OAAO,EACpB,MAAM,EAAE,OAAO,EACf,KAAK,EAAE,yCAAoB,CAAC,OAAO,EACnC,OAAO,EAAE,IAAI,EACb,YAAY,EAAE,IAAI,IAAI,EAAE,EACxB,UAAU,EAAE,IAAI,IAChB,CAAA;IAEF,OAAO,MAAM,CAAA;AACf,CAAC","sourcesContent":["import { ActivityThread, ActivityThreadStatus } from '../../service/activity-thread/activity-thread.js'\nimport { ActivityApproval, ActivityApprovalJudgment } from '../../service/activity-approval/activity-approval.js'\n\nexport async function _abort(\n { activityApproval, comment }: { activityApproval: ActivityApproval; comment: string },\n context: ResolverContext\n): Promise<ActivityApproval> {\n const { user, tx } = context.state\n\n var result = await tx.getRepository(ActivityApproval).save({\n ...activityApproval,\n judgment: ActivityApprovalJudgment.Aborted,\n comment,\n transaction: 'abort',\n updater: user,\n terminatedAt: new Date(),\n terminator: user\n })\n\n await tx.getRepository(ActivityThread).save({\n ...activityApproval.activityThread,\n transaction: 'abort',\n reason: comment,\n state: ActivityThreadStatus.Aborted,\n updater: user,\n terminatedAt: new Date(),\n terminator: user\n })\n\n return result\n}\n"]}
1
+ {"version":3,"file":"_abort.js","sourceRoot":"","sources":["../../../server/controllers/activity-approval/_abort.ts"],"names":[],"mappings":";;AAGA,wBA2BC;AA9BD,yFAAuG;AACvG,+FAAiH;AAE1G,KAAK,UAAU,MAAM,CAC1B,EAAE,gBAAgB,EAAE,OAAO,EAA2D,EACtF,OAAwB;IAExB,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,KAAK,CAAA;IAElC,IAAI,MAAM,GAAG,MAAM,EAAE,CAAC,aAAa,CAAC,uCAAgB,CAAC,CAAC,IAAI,CAAC;QACzD,GAAG,gBAAgB;QACnB,QAAQ,EAAE,+CAAwB,CAAC,OAAO;QAC1C,OAAO;QACP,WAAW,EAAE,OAAO;QACpB,OAAO,EAAE,IAAI;QACb,YAAY,EAAE,IAAI,IAAI,EAAE;QACxB,UAAU,EAAE,IAAI;KACjB,CAAC,CAAA;IAEF,MAAM,EAAE,CAAC,aAAa,CAAC,mCAAc,CAAC,CAAC,IAAI,CAAC;QAC1C,GAAG,gBAAgB,CAAC,cAAc;QAClC,WAAW,EAAE,OAAO;QACpB,MAAM,EAAE,OAAO;QACf,KAAK,EAAE,yCAAoB,CAAC,OAAO;QACnC,OAAO,EAAE,IAAI;QACb,YAAY,EAAE,IAAI,IAAI,EAAE;QACxB,UAAU,EAAE,IAAI;KACjB,CAAC,CAAA;IAEF,OAAO,MAAM,CAAA;AACf,CAAC","sourcesContent":["import { ActivityThread, ActivityThreadStatus } from '../../service/activity-thread/activity-thread.js'\nimport { ActivityApproval, ActivityApprovalJudgment } from '../../service/activity-approval/activity-approval.js'\n\nexport async function _abort(\n { activityApproval, comment }: { activityApproval: ActivityApproval; comment: string },\n context: ResolverContext\n): Promise<ActivityApproval> {\n const { user, tx } = context.state\n\n var result = await tx.getRepository(ActivityApproval).save({\n ...activityApproval,\n judgment: ActivityApprovalJudgment.Aborted,\n comment,\n transaction: 'abort',\n updater: user,\n terminatedAt: new Date(),\n terminator: user\n })\n\n await tx.getRepository(ActivityThread).save({\n ...activityApproval.activityThread,\n transaction: 'abort',\n reason: comment,\n state: ActivityThreadStatus.Aborted,\n updater: user,\n terminatedAt: new Date(),\n terminator: user\n })\n\n return result\n}\n"]}
@@ -36,7 +36,15 @@ async function approve({ id, comment }, context) {
36
36
  });
37
37
  const approvalLine = activityThread.activityInstance.approvalLine;
38
38
  const order = activityApproval.order;
39
- const result = await tx.getRepository(activity_approval_js_1.ActivityApproval).save(Object.assign(Object.assign({}, activityApproval), { judgment: approvalLine[order] ? activity_approval_js_1.ActivityApprovalJudgment.Escalated : activity_approval_js_1.ActivityApprovalJudgment.Approved, comment, transaction: approvalLine[order] ? 'escalate' : 'approve', updater: user, terminatedAt: new Date(), terminator: user }));
39
+ const result = await tx.getRepository(activity_approval_js_1.ActivityApproval).save({
40
+ ...activityApproval,
41
+ judgment: approvalLine[order] ? activity_approval_js_1.ActivityApprovalJudgment.Escalated : activity_approval_js_1.ActivityApprovalJudgment.Approved,
42
+ comment,
43
+ transaction: approvalLine[order] ? 'escalate' : 'approve',
44
+ updater: user,
45
+ terminatedAt: new Date(),
46
+ terminator: user
47
+ });
40
48
  if (approvalLine && approvalLine.length > order) {
41
49
  // approvalLine에서 후속 승인자에게 escalating.
42
50
  if (approvalLine[order].type == organization_1.OrgMemberTargetType.Role) {
@@ -79,10 +87,24 @@ async function approve({ id, comment }, context) {
79
87
  updater: user
80
88
  });
81
89
  }
82
- activityThread = await tx.getRepository(activity_thread_js_1.ActivityThread).save(Object.assign(Object.assign({}, activityThread), { transaction: 'escalate', reaseon: comment, state: activity_thread_js_1.ActivityThreadStatus.Escalated, updater: user }));
90
+ activityThread = await tx.getRepository(activity_thread_js_1.ActivityThread).save({
91
+ ...activityThread,
92
+ transaction: 'escalate',
93
+ reaseon: comment,
94
+ state: activity_thread_js_1.ActivityThreadStatus.Escalated,
95
+ updater: user
96
+ });
83
97
  }
84
98
  else {
85
- activityThread = await tx.getRepository(activity_thread_js_1.ActivityThread).save(Object.assign(Object.assign({}, activityThread), { transaction: 'approve', reason: comment, state: activity_thread_js_1.ActivityThreadStatus.Ended, terminatedAt: new Date(), terminator: user, updater: user }));
99
+ activityThread = await tx.getRepository(activity_thread_js_1.ActivityThread).save({
100
+ ...activityThread,
101
+ transaction: 'approve',
102
+ reason: comment,
103
+ state: activity_thread_js_1.ActivityThreadStatus.Ended,
104
+ terminatedAt: new Date(),
105
+ terminator: user,
106
+ updater: user
107
+ });
86
108
  }
87
109
  await (0, common_js_2.updateActivityInstanceState)(activityThread.activityInstanceId, { causedBy: [activityThread] }, context);
88
110
  return result;
@@ -1 +1 @@
1
- {"version":3,"file":"approve.js","sourceRoot":"","sources":["../../../server/controllers/activity-approval/approve.ts"],"names":[],"mappings":"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","sourcesContent":["import { ApprovalLineItem, OrgMemberTargetType } from '@things-factory/organization'\nimport { Role } from '@things-factory/auth-base'\nimport { getSystemUserFromOrgMemberItem } from '../../controllers/common.js'\nimport { ActivityThread, ActivityThreadStatus } from '../../service/activity-thread/activity-thread.js'\nimport { ActivityApproval, ActivityApprovalJudgment } from '../../service/activity-approval/activity-approval.js'\nimport { updateActivityInstanceState } from '../common.js'\nimport { checkAuthority } from './check-authority.js'\n\nexport async function approve(\n { id, comment }: { id: string; comment: string },\n context: ResolverContext\n): Promise<ActivityApproval> {\n const { domain, user, tx } = context.state\n\n var repository = tx.getRepository(ActivityApproval)\n\n var activityApproval = await repository.findOne({\n where: { domain: { id: domain.id }, id }\n })\n\n if (!activityApproval) {\n throw new Error(\n context.t('error.activity-approval not found', {\n activityApproval: id\n })\n )\n }\n\n await checkAuthority(activityApproval, context)\n\n /* \n Prerequisite of Approval\n - Previous judgment should be 'pending'\n */\n if (activityApproval.judgment !== ActivityApprovalJudgment.Pending) {\n throw new Error(\n context.t(`error.activity-approval is already terminated`, {\n activityApproval: id,\n actual: activityApproval.judgment\n })\n )\n }\n\n var activityThread = await tx.getRepository(ActivityThread).findOne({\n where: { domain: { id: domain.id }, id: activityApproval.activityThreadId },\n relations: ['activityInstance']\n })\n\n const approvalLine: ApprovalLineItem[] = activityThread.activityInstance.approvalLine\n const order = activityApproval.order\n\n const result = await tx.getRepository(ActivityApproval).save({\n ...activityApproval,\n judgment: approvalLine[order] ? ActivityApprovalJudgment.Escalated : ActivityApprovalJudgment.Approved,\n comment,\n transaction: approvalLine[order] ? 'escalate' : 'approve',\n updater: user,\n terminatedAt: new Date(),\n terminator: user\n })\n\n if (approvalLine && approvalLine.length > order) {\n // approvalLine에서 후속 승인자에게 escalating.\n\n if (approvalLine[order].type == OrgMemberTargetType.Role) {\n const approverRoleId = approvalLine[0].value\n\n if (approverRoleId) {\n throw 'Cannot specify the approver role for this approval line'\n }\n\n const approverRole = await tx.getRepository(Role).findOneBy({\n id: approverRoleId\n })\n\n if (!approverRole) {\n throw 'Cannot find the approver role for this approval line'\n }\n\n await tx.getRepository(ActivityApproval).save({\n domain,\n activityThread,\n round: activityThread.round,\n order: order + 1,\n judgment: ActivityApprovalJudgment.Pending,\n transaction: 'escalate',\n approverRole: approverRole,\n creator: user,\n updater: user\n })\n } else {\n var approverUser = await getSystemUserFromOrgMemberItem(approvalLine[order], context)\n\n if (!approverUser) {\n throw 'Cannot specify the approval user for this approval line'\n }\n\n await tx.getRepository(ActivityApproval).save({\n domain,\n activityThread,\n round: activityThread.round,\n order: order + 1,\n judgment: ActivityApprovalJudgment.Pending,\n transaction: 'escalate',\n approver: approverUser,\n creator: user,\n updater: user\n })\n }\n\n activityThread = await tx.getRepository(ActivityThread).save({\n ...activityThread,\n transaction: 'escalate',\n reaseon: comment,\n state: ActivityThreadStatus.Escalated,\n updater: user\n })\n } else {\n activityThread = await tx.getRepository(ActivityThread).save({\n ...activityThread,\n transaction: 'approve',\n reason: comment,\n state: ActivityThreadStatus.Ended,\n terminatedAt: new Date(),\n terminator: user,\n updater: user\n })\n }\n\n await updateActivityInstanceState(activityThread.activityInstanceId, { causedBy: [activityThread] }, context)\n\n return result\n}\n"]}
1
+ {"version":3,"file":"approve.js","sourceRoot":"","sources":["../../../server/controllers/activity-approval/approve.ts"],"names":[],"mappings":"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","sourcesContent":["import { ApprovalLineItem, OrgMemberTargetType } from '@things-factory/organization'\nimport { Role } from '@things-factory/auth-base'\nimport { getSystemUserFromOrgMemberItem } from '../../controllers/common.js'\nimport { ActivityThread, ActivityThreadStatus } from '../../service/activity-thread/activity-thread.js'\nimport { ActivityApproval, ActivityApprovalJudgment } from '../../service/activity-approval/activity-approval.js'\nimport { updateActivityInstanceState } from '../common.js'\nimport { checkAuthority } from './check-authority.js'\n\nexport async function approve(\n { id, comment }: { id: string; comment: string },\n context: ResolverContext\n): Promise<ActivityApproval> {\n const { domain, user, tx } = context.state\n\n var repository = tx.getRepository(ActivityApproval)\n\n var activityApproval = await repository.findOne({\n where: { domain: { id: domain.id }, id }\n })\n\n if (!activityApproval) {\n throw new Error(\n context.t('error.activity-approval not found', {\n activityApproval: id\n })\n )\n }\n\n await checkAuthority(activityApproval, context)\n\n /* \n Prerequisite of Approval\n - Previous judgment should be 'pending'\n */\n if (activityApproval.judgment !== ActivityApprovalJudgment.Pending) {\n throw new Error(\n context.t(`error.activity-approval is already terminated`, {\n activityApproval: id,\n actual: activityApproval.judgment\n })\n )\n }\n\n var activityThread = await tx.getRepository(ActivityThread).findOne({\n where: { domain: { id: domain.id }, id: activityApproval.activityThreadId },\n relations: ['activityInstance']\n })\n\n const approvalLine: ApprovalLineItem[] = activityThread.activityInstance.approvalLine\n const order = activityApproval.order\n\n const result = await tx.getRepository(ActivityApproval).save({\n ...activityApproval,\n judgment: approvalLine[order] ? ActivityApprovalJudgment.Escalated : ActivityApprovalJudgment.Approved,\n comment,\n transaction: approvalLine[order] ? 'escalate' : 'approve',\n updater: user,\n terminatedAt: new Date(),\n terminator: user\n })\n\n if (approvalLine && approvalLine.length > order) {\n // approvalLine에서 후속 승인자에게 escalating.\n\n if (approvalLine[order].type == OrgMemberTargetType.Role) {\n const approverRoleId = approvalLine[0].value\n\n if (approverRoleId) {\n throw 'Cannot specify the approver role for this approval line'\n }\n\n const approverRole = await tx.getRepository(Role).findOneBy({\n id: approverRoleId\n })\n\n if (!approverRole) {\n throw 'Cannot find the approver role for this approval line'\n }\n\n await tx.getRepository(ActivityApproval).save({\n domain,\n activityThread,\n round: activityThread.round,\n order: order + 1,\n judgment: ActivityApprovalJudgment.Pending,\n transaction: 'escalate',\n approverRole: approverRole,\n creator: user,\n updater: user\n })\n } else {\n var approverUser = await getSystemUserFromOrgMemberItem(approvalLine[order], context)\n\n if (!approverUser) {\n throw 'Cannot specify the approval user for this approval line'\n }\n\n await tx.getRepository(ActivityApproval).save({\n domain,\n activityThread,\n round: activityThread.round,\n order: order + 1,\n judgment: ActivityApprovalJudgment.Pending,\n transaction: 'escalate',\n approver: approverUser,\n creator: user,\n updater: user\n })\n }\n\n activityThread = await tx.getRepository(ActivityThread).save({\n ...activityThread,\n transaction: 'escalate',\n reaseon: comment,\n state: ActivityThreadStatus.Escalated,\n updater: user\n })\n } else {\n activityThread = await tx.getRepository(ActivityThread).save({\n ...activityThread,\n transaction: 'approve',\n reason: comment,\n state: ActivityThreadStatus.Ended,\n terminatedAt: new Date(),\n terminator: user,\n updater: user\n })\n }\n\n await updateActivityInstanceState(activityThread.activityInstanceId, { causedBy: [activityThread] }, context)\n\n return result\n}\n"]}
@@ -4,16 +4,15 @@ exports.checkAuthority = checkAuthority;
4
4
  const shell_1 = require("@things-factory/shell");
5
5
  const auth_base_1 = require("@things-factory/auth-base");
6
6
  async function checkAuthority(activityApproval, context) {
7
- var _a;
8
7
  const { user, tx } = context.state;
9
8
  if (activityApproval.approverId && activityApproval.approverId === user.id) {
10
9
  return;
11
10
  }
12
11
  if (!activityApproval.approver && activityApproval.approverRoleId) {
13
- const roles = (_a = (await (0, shell_1.getRepository)(auth_base_1.User, tx).findOne({
12
+ const roles = (await (0, shell_1.getRepository)(auth_base_1.User, tx).findOne({
14
13
  where: { id: user.id },
15
14
  relations: ['roles']
16
- }))) === null || _a === void 0 ? void 0 : _a.roles;
15
+ }))?.roles;
17
16
  if (roles.find(role => role.id == activityApproval.approverRoleId)) {
18
17
  activityApproval.approver = user;
19
18
  return;
@@ -1 +1 @@
1
- {"version":3,"file":"check-authority.js","sourceRoot":"","sources":["../../../server/controllers/activity-approval/check-authority.ts"],"names":[],"mappings":";;AAIA,wCAsBC;AA1BD,iDAAqD;AACrD,yDAAgD;AAGzC,KAAK,UAAU,cAAc,CAAC,gBAAkC,EAAE,OAAwB;;IAC/F,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,KAAK,CAAA;IAElC,IAAI,gBAAgB,CAAC,UAAU,IAAI,gBAAgB,CAAC,UAAU,KAAK,IAAI,CAAC,EAAE,EAAE,CAAC;QAC3E,OAAM;IACR,CAAC;IAED,IAAI,CAAC,gBAAgB,CAAC,QAAQ,IAAI,gBAAgB,CAAC,cAAc,EAAE,CAAC;QAClE,MAAM,KAAK,GAAG,MAAA,CACZ,MAAM,IAAA,qBAAa,EAAC,gBAAI,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC;YACpC,KAAK,EAAE,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE;YACtB,SAAS,EAAE,CAAC,OAAO,CAAC;SACrB,CAAC,CACH,0CAAE,KAAK,CAAA;QAER,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,IAAI,gBAAgB,CAAC,cAAc,CAAC,EAAE,CAAC;YACnE,gBAAgB,CAAC,QAAQ,GAAG,IAAI,CAAA;YAChC,OAAM;QACR,CAAC;IACH,CAAC;IAED,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,0CAA0C,CAAC,CAAC,CAAA;AACxE,CAAC","sourcesContent":["import { getRepository } from '@things-factory/shell'\nimport { User } from '@things-factory/auth-base'\nimport { ActivityApproval } from '../../service/activity-approval/activity-approval.js'\n\nexport async function checkAuthority(activityApproval: ActivityApproval, context: ResolverContext) {\n const { user, tx } = context.state\n\n if (activityApproval.approverId && activityApproval.approverId === user.id) {\n return\n }\n\n if (!activityApproval.approver && activityApproval.approverRoleId) {\n const roles = (\n await getRepository(User, tx).findOne({\n where: { id: user.id },\n relations: ['roles']\n })\n )?.roles\n\n if (roles.find(role => role.id == activityApproval.approverRoleId)) {\n activityApproval.approver = user\n return\n }\n }\n\n throw new Error(context.t(`error.not authorized to handle this task`))\n}\n"]}
1
+ {"version":3,"file":"check-authority.js","sourceRoot":"","sources":["../../../server/controllers/activity-approval/check-authority.ts"],"names":[],"mappings":";;AAIA,wCAsBC;AA1BD,iDAAqD;AACrD,yDAAgD;AAGzC,KAAK,UAAU,cAAc,CAAC,gBAAkC,EAAE,OAAwB;IAC/F,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,KAAK,CAAA;IAElC,IAAI,gBAAgB,CAAC,UAAU,IAAI,gBAAgB,CAAC,UAAU,KAAK,IAAI,CAAC,EAAE,EAAE,CAAC;QAC3E,OAAM;IACR,CAAC;IAED,IAAI,CAAC,gBAAgB,CAAC,QAAQ,IAAI,gBAAgB,CAAC,cAAc,EAAE,CAAC;QAClE,MAAM,KAAK,GAAG,CACZ,MAAM,IAAA,qBAAa,EAAC,gBAAI,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC;YACpC,KAAK,EAAE,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE;YACtB,SAAS,EAAE,CAAC,OAAO,CAAC;SACrB,CAAC,CACH,EAAE,KAAK,CAAA;QAER,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,IAAI,gBAAgB,CAAC,cAAc,CAAC,EAAE,CAAC;YACnE,gBAAgB,CAAC,QAAQ,GAAG,IAAI,CAAA;YAChC,OAAM;QACR,CAAC;IACH,CAAC;IAED,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,0CAA0C,CAAC,CAAC,CAAA;AACxE,CAAC","sourcesContent":["import { getRepository } from '@things-factory/shell'\nimport { User } from '@things-factory/auth-base'\nimport { ActivityApproval } from '../../service/activity-approval/activity-approval.js'\n\nexport async function checkAuthority(activityApproval: ActivityApproval, context: ResolverContext) {\n const { user, tx } = context.state\n\n if (activityApproval.approverId && activityApproval.approverId === user.id) {\n return\n }\n\n if (!activityApproval.approver && activityApproval.approverRoleId) {\n const roles = (\n await getRepository(User, tx).findOne({\n where: { id: user.id },\n relations: ['roles']\n })\n )?.roles\n\n if (roles.find(role => role.id == activityApproval.approverRoleId)) {\n activityApproval.approver = user\n return\n }\n }\n\n throw new Error(context.t(`error.not authorized to handle this task`))\n}\n"]}
@@ -33,10 +33,24 @@ async function delegate({ id, to, comment }, context) {
33
33
  throw new Error(context.t(`error.user not found`));
34
34
  }
35
35
  /* create new delegated approval */
36
- await repository.save(Object.assign(Object.assign({}, activityApproval), { originalApproval: activityApproval, comment,
37
- approver, creator: user, updater: user }));
36
+ await repository.save({
37
+ ...activityApproval,
38
+ originalApproval: activityApproval,
39
+ comment,
40
+ approver,
41
+ creator: user,
42
+ updater: user
43
+ });
38
44
  /* terminate origin approval */
39
- const result = await repository.save(Object.assign(Object.assign({}, activityApproval), { judgment: activity_approval_js_1.ActivityApprovalJudgment.Delegated, reason: comment, transaction: 'delegate', updater: user, terminator: user, terminatedAt: new Date() }));
45
+ const result = await repository.save({
46
+ ...activityApproval,
47
+ judgment: activity_approval_js_1.ActivityApprovalJudgment.Delegated,
48
+ reason: comment,
49
+ transaction: 'delegate',
50
+ updater: user,
51
+ terminator: user,
52
+ terminatedAt: new Date()
53
+ });
40
54
  return result;
41
55
  }
42
56
  //# sourceMappingURL=delegate.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"delegate.js","sourceRoot":"","sources":["../../../server/controllers/activity-approval/delegate.ts"],"names":[],"mappings":";;AAKA,4BAiEC;AAtED,yDAA4D;AAE5D,+FAAiH;AACjH,6DAAqD;AAE9C,KAAK,UAAU,QAAQ,CAC5B,EAAE,EAAE,EAAE,EAAE,EAAE,OAAO,EAAkD,EACnE,OAAwB;IAExB,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,KAAK,CAAA;IAE1C,IAAI,UAAU,GAAG,EAAE,CAAC,aAAa,CAAC,uCAAgB,CAAC,CAAA;IAEnD,IAAI,gBAAgB,GAAG,MAAM,UAAU,CAAC,OAAO,CAAC;QAC9C,KAAK,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE;QACxC,SAAS,EAAE,CAAC,QAAQ,EAAE,gBAAgB,CAAC;KACxC,CAAC,CAAA;IAEF,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACtB,MAAM,IAAI,KAAK,CACb,OAAO,CAAC,CAAC,CAAC,mCAAmC,EAAE;YAC7C,gBAAgB,EAAE,EAAE;SACrB,CAAC,CACH,CAAA;IACH,CAAC;IAED,MAAM,IAAA,mCAAc,EAAC,gBAAgB,EAAE,OAAO,CAAC,CAAA;IAE/C;;;MAGE;IACF,IAAI,gBAAgB,CAAC,QAAQ,KAAK,+CAAwB,CAAC,OAAO,EAAE,CAAC;QACnE,MAAM,IAAI,KAAK,CACb,OAAO,CAAC,CAAC,CAAC,+CAA+C,EAAE;YACzD,gBAAgB,EAAE,EAAE;YACpB,MAAM,EAAE,gBAAgB,CAAC,QAAQ;SAClC,CAAC,CACH,CAAA;IACH,CAAC;IAED,6BAA6B;IAC7B,MAAM,QAAQ,GAAG,MAAM,EAAE,CAAC,aAAa,CAAC,gBAAI,CAAC,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,sBAAU,CAAC,SAAS,EAAE,CAAC,CAAA;IAEpG,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAA;IACpD,CAAC;IAED,mCAAmC;IACnC,MAAM,UAAU,CAAC,IAAI,iCAChB,gBAAgB,KACnB,gBAAgB,EAAE,gBAAgB,EAClC,OAAO;QACP,QAAQ,EACR,OAAO,EAAE,IAAI,EACb,OAAO,EAAE,IAAI,IACb,CAAA;IAEF,+BAA+B;IAC/B,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,IAAI,iCAC/B,gBAAgB,KACnB,QAAQ,EAAE,+CAAwB,CAAC,SAAS,EAC5C,MAAM,EAAE,OAAO,EACf,WAAW,EAAE,UAAU,EACvB,OAAO,EAAE,IAAI,EACb,UAAU,EAAE,IAAI,EAChB,YAAY,EAAE,IAAI,IAAI,EAAE,IACxB,CAAA;IAEF,OAAO,MAAM,CAAA;AACf,CAAC","sourcesContent":["import { User, UserStatus } from '@things-factory/auth-base'\nimport { ObjectRef } from '@things-factory/shell'\nimport { ActivityApproval, ActivityApprovalJudgment } from '../../service/activity-approval/activity-approval.js'\nimport { checkAuthority } from './check-authority.js'\n\nexport async function delegate(\n { id, to, comment }: { id: string; to: ObjectRef; comment: string },\n context: ResolverContext\n): Promise<ActivityApproval> {\n const { domain, user, tx } = context.state\n\n var repository = tx.getRepository(ActivityApproval)\n\n var activityApproval = await repository.findOne({\n where: { domain: { id: domain.id }, id },\n relations: ['domain', 'activityThread']\n })\n\n if (!activityApproval) {\n throw new Error(\n context.t('error.activity-approval not found', {\n activityApproval: id\n })\n )\n }\n\n await checkAuthority(activityApproval, context)\n\n /* \n Prerequisite of Delegation\n - Previous judgment should be 'pending'\n */\n if (activityApproval.judgment !== ActivityApprovalJudgment.Pending) {\n throw new Error(\n context.t(`error.activity-approval is already terminated`, {\n activityInstance: id,\n actual: activityApproval.judgment\n })\n )\n }\n\n /* TODO user validation .. */\n const approver = await tx.getRepository(User).findOneBy({ id: to.id, status: UserStatus.ACTIVATED })\n\n if (!approver) {\n throw new Error(context.t(`error.user not found`))\n }\n\n /* create new delegated approval */\n await repository.save({\n ...activityApproval,\n originalApproval: activityApproval,\n comment,\n approver,\n creator: user,\n updater: user\n })\n\n /* terminate origin approval */\n const result = await repository.save({\n ...activityApproval,\n judgment: ActivityApprovalJudgment.Delegated,\n reason: comment,\n transaction: 'delegate',\n updater: user,\n terminator: user,\n terminatedAt: new Date()\n })\n\n return result\n}\n"]}
1
+ {"version":3,"file":"delegate.js","sourceRoot":"","sources":["../../../server/controllers/activity-approval/delegate.ts"],"names":[],"mappings":";;AAKA,4BAiEC;AAtED,yDAA4D;AAE5D,+FAAiH;AACjH,6DAAqD;AAE9C,KAAK,UAAU,QAAQ,CAC5B,EAAE,EAAE,EAAE,EAAE,EAAE,OAAO,EAAkD,EACnE,OAAwB;IAExB,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,KAAK,CAAA;IAE1C,IAAI,UAAU,GAAG,EAAE,CAAC,aAAa,CAAC,uCAAgB,CAAC,CAAA;IAEnD,IAAI,gBAAgB,GAAG,MAAM,UAAU,CAAC,OAAO,CAAC;QAC9C,KAAK,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE;QACxC,SAAS,EAAE,CAAC,QAAQ,EAAE,gBAAgB,CAAC;KACxC,CAAC,CAAA;IAEF,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACtB,MAAM,IAAI,KAAK,CACb,OAAO,CAAC,CAAC,CAAC,mCAAmC,EAAE;YAC7C,gBAAgB,EAAE,EAAE;SACrB,CAAC,CACH,CAAA;IACH,CAAC;IAED,MAAM,IAAA,mCAAc,EAAC,gBAAgB,EAAE,OAAO,CAAC,CAAA;IAE/C;;;MAGE;IACF,IAAI,gBAAgB,CAAC,QAAQ,KAAK,+CAAwB,CAAC,OAAO,EAAE,CAAC;QACnE,MAAM,IAAI,KAAK,CACb,OAAO,CAAC,CAAC,CAAC,+CAA+C,EAAE;YACzD,gBAAgB,EAAE,EAAE;YACpB,MAAM,EAAE,gBAAgB,CAAC,QAAQ;SAClC,CAAC,CACH,CAAA;IACH,CAAC;IAED,6BAA6B;IAC7B,MAAM,QAAQ,GAAG,MAAM,EAAE,CAAC,aAAa,CAAC,gBAAI,CAAC,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,sBAAU,CAAC,SAAS,EAAE,CAAC,CAAA;IAEpG,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAA;IACpD,CAAC;IAED,mCAAmC;IACnC,MAAM,UAAU,CAAC,IAAI,CAAC;QACpB,GAAG,gBAAgB;QACnB,gBAAgB,EAAE,gBAAgB;QAClC,OAAO;QACP,QAAQ;QACR,OAAO,EAAE,IAAI;QACb,OAAO,EAAE,IAAI;KACd,CAAC,CAAA;IAEF,+BAA+B;IAC/B,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,IAAI,CAAC;QACnC,GAAG,gBAAgB;QACnB,QAAQ,EAAE,+CAAwB,CAAC,SAAS;QAC5C,MAAM,EAAE,OAAO;QACf,WAAW,EAAE,UAAU;QACvB,OAAO,EAAE,IAAI;QACb,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI,IAAI,EAAE;KACzB,CAAC,CAAA;IAEF,OAAO,MAAM,CAAA;AACf,CAAC","sourcesContent":["import { User, UserStatus } from '@things-factory/auth-base'\nimport { ObjectRef } from '@things-factory/shell'\nimport { ActivityApproval, ActivityApprovalJudgment } from '../../service/activity-approval/activity-approval.js'\nimport { checkAuthority } from './check-authority.js'\n\nexport async function delegate(\n { id, to, comment }: { id: string; to: ObjectRef; comment: string },\n context: ResolverContext\n): Promise<ActivityApproval> {\n const { domain, user, tx } = context.state\n\n var repository = tx.getRepository(ActivityApproval)\n\n var activityApproval = await repository.findOne({\n where: { domain: { id: domain.id }, id },\n relations: ['domain', 'activityThread']\n })\n\n if (!activityApproval) {\n throw new Error(\n context.t('error.activity-approval not found', {\n activityApproval: id\n })\n )\n }\n\n await checkAuthority(activityApproval, context)\n\n /* \n Prerequisite of Delegation\n - Previous judgment should be 'pending'\n */\n if (activityApproval.judgment !== ActivityApprovalJudgment.Pending) {\n throw new Error(\n context.t(`error.activity-approval is already terminated`, {\n activityInstance: id,\n actual: activityApproval.judgment\n })\n )\n }\n\n /* TODO user validation .. */\n const approver = await tx.getRepository(User).findOneBy({ id: to.id, status: UserStatus.ACTIVATED })\n\n if (!approver) {\n throw new Error(context.t(`error.user not found`))\n }\n\n /* create new delegated approval */\n await repository.save({\n ...activityApproval,\n originalApproval: activityApproval,\n comment,\n approver,\n creator: user,\n updater: user\n })\n\n /* terminate origin approval */\n const result = await repository.save({\n ...activityApproval,\n judgment: ActivityApprovalJudgment.Delegated,\n reason: comment,\n transaction: 'delegate',\n updater: user,\n terminator: user,\n terminatedAt: new Date()\n })\n\n return result\n}\n"]}
@@ -28,8 +28,22 @@ async function reject({ id, comment }, context) {
28
28
  actual: activityApproval.judgment
29
29
  }));
30
30
  }
31
- var result = await repository.save(Object.assign(Object.assign({}, activityApproval), { judgment: activity_approval_js_1.ActivityApprovalJudgment.Rejected, comment, transaction: 'reject', updater: user, terminatedAt: new Date(), terminator: user }));
32
- var activityThread = await tx.getRepository(activity_thread_js_1.ActivityThread).save(Object.assign(Object.assign({}, activityApproval.activityThread), { transaction: 'reject', reason: comment, state: activity_thread_js_1.ActivityThreadStatus.Rejected, updater: user }));
31
+ var result = await repository.save({
32
+ ...activityApproval,
33
+ judgment: activity_approval_js_1.ActivityApprovalJudgment.Rejected,
34
+ comment,
35
+ transaction: 'reject',
36
+ updater: user,
37
+ terminatedAt: new Date(),
38
+ terminator: user
39
+ });
40
+ var activityThread = await tx.getRepository(activity_thread_js_1.ActivityThread).save({
41
+ ...activityApproval.activityThread,
42
+ transaction: 'reject',
43
+ reason: comment,
44
+ state: activity_thread_js_1.ActivityThreadStatus.Rejected,
45
+ updater: user
46
+ });
33
47
  await (0, common_js_1.updateActivityInstanceState)(activityApproval.activityThread.activityInstanceId, { causedBy: [activityThread] }, context);
34
48
  return result;
35
49
  }
@@ -1 +1 @@
1
- {"version":3,"file":"reject.js","sourceRoot":"","sources":["../../../server/controllers/activity-approval/reject.ts"],"names":[],"mappings":";;AAKA,wBA6DC;AAlED,yFAAuG;AACvG,+FAAiH;AACjH,4CAA0D;AAC1D,6DAAqD;AAE9C,KAAK,UAAU,MAAM,CAC1B,EAAE,EAAE,EAAE,OAAO,EAAmC,EAChD,OAAwB;IAExB,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,KAAK,CAAA;IAE1C,IAAI,UAAU,GAAG,EAAE,CAAC,aAAa,CAAC,uCAAgB,CAAC,CAAA;IAEnD,IAAI,gBAAgB,GAAG,MAAM,UAAU,CAAC,OAAO,CAAC;QAC9C,KAAK,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE;QACxC,SAAS,EAAE,CAAC,gBAAgB,CAAC;KAC9B,CAAC,CAAA;IAEF,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACtB,MAAM,IAAI,KAAK,CACb,OAAO,CAAC,CAAC,CAAC,mCAAmC,EAAE;YAC7C,gBAAgB,EAAE,EAAE;SACrB,CAAC,CACH,CAAA;IACH,CAAC;IAED,MAAM,IAAA,mCAAc,EAAC,gBAAgB,EAAE,OAAO,CAAC,CAAA;IAE/C;;;MAGE;IACF,IAAI,gBAAgB,CAAC,QAAQ,KAAK,+CAAwB,CAAC,OAAO,EAAE,CAAC;QACnE,MAAM,IAAI,KAAK,CACb,OAAO,CAAC,CAAC,CAAC,+CAA+C,EAAE;YACzD,gBAAgB,EAAE,EAAE;YACpB,MAAM,EAAE,gBAAgB,CAAC,QAAQ;SAClC,CAAC,CACH,CAAA;IACH,CAAC;IAED,IAAI,MAAM,GAAG,MAAM,UAAU,CAAC,IAAI,iCAC7B,gBAAgB,KACnB,QAAQ,EAAE,+CAAwB,CAAC,QAAQ,EAC3C,OAAO,EACP,WAAW,EAAE,QAAQ,EACrB,OAAO,EAAE,IAAI,EACb,YAAY,EAAE,IAAI,IAAI,EAAE,EACxB,UAAU,EAAE,IAAI,IAChB,CAAA;IAEF,IAAI,cAAc,GAAG,MAAM,EAAE,CAAC,aAAa,CAAC,mCAAc,CAAC,CAAC,IAAI,iCAC3D,gBAAgB,CAAC,cAAc,KAClC,WAAW,EAAE,QAAQ,EACrB,MAAM,EAAE,OAAO,EACf,KAAK,EAAE,yCAAoB,CAAC,QAAQ,EACpC,OAAO,EAAE,IAAI,IACb,CAAA;IAEF,MAAM,IAAA,uCAA2B,EAC/B,gBAAgB,CAAC,cAAc,CAAC,kBAAkB,EAClD,EAAE,QAAQ,EAAE,CAAC,cAAc,CAAC,EAAE,EAC9B,OAAO,CACR,CAAA;IAED,OAAO,MAAM,CAAA;AACf,CAAC","sourcesContent":["import { ActivityThread, ActivityThreadStatus } from '../../service/activity-thread/activity-thread.js'\nimport { ActivityApproval, ActivityApprovalJudgment } from '../../service/activity-approval/activity-approval.js'\nimport { updateActivityInstanceState } from '../common.js'\nimport { checkAuthority } from './check-authority.js'\n\nexport async function reject(\n { id, comment }: { id: string; comment: string },\n context: ResolverContext\n): Promise<ActivityApproval> {\n const { domain, user, tx } = context.state\n\n var repository = tx.getRepository(ActivityApproval)\n\n var activityApproval = await repository.findOne({\n where: { domain: { id: domain.id }, id },\n relations: ['activityThread']\n })\n\n if (!activityApproval) {\n throw new Error(\n context.t('error.activity-approval not found', {\n activityApproval: id\n })\n )\n }\n\n await checkAuthority(activityApproval, context)\n\n /* \n Prerequisite of Rejection\n - Previous judgment should be 'pending'\n */\n if (activityApproval.judgment !== ActivityApprovalJudgment.Pending) {\n throw new Error(\n context.t(`error.activity-approval is already terminated`, {\n activityInstance: id,\n actual: activityApproval.judgment\n })\n )\n }\n\n var result = await repository.save({\n ...activityApproval,\n judgment: ActivityApprovalJudgment.Rejected,\n comment,\n transaction: 'reject',\n updater: user,\n terminatedAt: new Date(),\n terminator: user\n })\n\n var activityThread = await tx.getRepository(ActivityThread).save({\n ...activityApproval.activityThread,\n transaction: 'reject',\n reason: comment,\n state: ActivityThreadStatus.Rejected,\n updater: user\n })\n\n await updateActivityInstanceState(\n activityApproval.activityThread.activityInstanceId,\n { causedBy: [activityThread] },\n context\n )\n\n return result\n}\n"]}
1
+ {"version":3,"file":"reject.js","sourceRoot":"","sources":["../../../server/controllers/activity-approval/reject.ts"],"names":[],"mappings":";;AAKA,wBA6DC;AAlED,yFAAuG;AACvG,+FAAiH;AACjH,4CAA0D;AAC1D,6DAAqD;AAE9C,KAAK,UAAU,MAAM,CAC1B,EAAE,EAAE,EAAE,OAAO,EAAmC,EAChD,OAAwB;IAExB,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,KAAK,CAAA;IAE1C,IAAI,UAAU,GAAG,EAAE,CAAC,aAAa,CAAC,uCAAgB,CAAC,CAAA;IAEnD,IAAI,gBAAgB,GAAG,MAAM,UAAU,CAAC,OAAO,CAAC;QAC9C,KAAK,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE;QACxC,SAAS,EAAE,CAAC,gBAAgB,CAAC;KAC9B,CAAC,CAAA;IAEF,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACtB,MAAM,IAAI,KAAK,CACb,OAAO,CAAC,CAAC,CAAC,mCAAmC,EAAE;YAC7C,gBAAgB,EAAE,EAAE;SACrB,CAAC,CACH,CAAA;IACH,CAAC;IAED,MAAM,IAAA,mCAAc,EAAC,gBAAgB,EAAE,OAAO,CAAC,CAAA;IAE/C;;;MAGE;IACF,IAAI,gBAAgB,CAAC,QAAQ,KAAK,+CAAwB,CAAC,OAAO,EAAE,CAAC;QACnE,MAAM,IAAI,KAAK,CACb,OAAO,CAAC,CAAC,CAAC,+CAA+C,EAAE;YACzD,gBAAgB,EAAE,EAAE;YACpB,MAAM,EAAE,gBAAgB,CAAC,QAAQ;SAClC,CAAC,CACH,CAAA;IACH,CAAC;IAED,IAAI,MAAM,GAAG,MAAM,UAAU,CAAC,IAAI,CAAC;QACjC,GAAG,gBAAgB;QACnB,QAAQ,EAAE,+CAAwB,CAAC,QAAQ;QAC3C,OAAO;QACP,WAAW,EAAE,QAAQ;QACrB,OAAO,EAAE,IAAI;QACb,YAAY,EAAE,IAAI,IAAI,EAAE;QACxB,UAAU,EAAE,IAAI;KACjB,CAAC,CAAA;IAEF,IAAI,cAAc,GAAG,MAAM,EAAE,CAAC,aAAa,CAAC,mCAAc,CAAC,CAAC,IAAI,CAAC;QAC/D,GAAG,gBAAgB,CAAC,cAAc;QAClC,WAAW,EAAE,QAAQ;QACrB,MAAM,EAAE,OAAO;QACf,KAAK,EAAE,yCAAoB,CAAC,QAAQ;QACpC,OAAO,EAAE,IAAI;KACd,CAAC,CAAA;IAEF,MAAM,IAAA,uCAA2B,EAC/B,gBAAgB,CAAC,cAAc,CAAC,kBAAkB,EAClD,EAAE,QAAQ,EAAE,CAAC,cAAc,CAAC,EAAE,EAC9B,OAAO,CACR,CAAA;IAED,OAAO,MAAM,CAAA;AACf,CAAC","sourcesContent":["import { ActivityThread, ActivityThreadStatus } from '../../service/activity-thread/activity-thread.js'\nimport { ActivityApproval, ActivityApprovalJudgment } from '../../service/activity-approval/activity-approval.js'\nimport { updateActivityInstanceState } from '../common.js'\nimport { checkAuthority } from './check-authority.js'\n\nexport async function reject(\n { id, comment }: { id: string; comment: string },\n context: ResolverContext\n): Promise<ActivityApproval> {\n const { domain, user, tx } = context.state\n\n var repository = tx.getRepository(ActivityApproval)\n\n var activityApproval = await repository.findOne({\n where: { domain: { id: domain.id }, id },\n relations: ['activityThread']\n })\n\n if (!activityApproval) {\n throw new Error(\n context.t('error.activity-approval not found', {\n activityApproval: id\n })\n )\n }\n\n await checkAuthority(activityApproval, context)\n\n /* \n Prerequisite of Rejection\n - Previous judgment should be 'pending'\n */\n if (activityApproval.judgment !== ActivityApprovalJudgment.Pending) {\n throw new Error(\n context.t(`error.activity-approval is already terminated`, {\n activityInstance: id,\n actual: activityApproval.judgment\n })\n )\n }\n\n var result = await repository.save({\n ...activityApproval,\n judgment: ActivityApprovalJudgment.Rejected,\n comment,\n transaction: 'reject',\n updater: user,\n terminatedAt: new Date(),\n terminator: user\n })\n\n var activityThread = await tx.getRepository(ActivityThread).save({\n ...activityApproval.activityThread,\n transaction: 'reject',\n reason: comment,\n state: ActivityThreadStatus.Rejected,\n updater: user\n })\n\n await updateActivityInstanceState(\n activityApproval.activityThread.activityInstanceId,\n { causedBy: [activityThread] },\n context\n )\n\n return result\n}\n"]}
@@ -18,11 +18,15 @@ async function save({ id, comment }, context) {
18
18
  }));
19
19
  }
20
20
  await (0, check_authority_js_1.checkAuthority)(activityApproval, context);
21
- const result = await repository.save(Object.assign(Object.assign({}, activityApproval), { comment, updater: user }));
21
+ const result = await repository.save({
22
+ ...activityApproval,
23
+ comment,
24
+ updater: user
25
+ });
22
26
  const activityThread = await (0, shell_1.getRepository)(activity_thread_js_1.ActivityThread).findOneBy({
23
27
  id: activityApproval.activityThreadId
24
28
  });
25
- await (0, common_js_1.updateActivityInstanceState)(activityThread === null || activityThread === void 0 ? void 0 : activityThread.activityInstanceId, { causedBy: [activityThread] }, context);
29
+ await (0, common_js_1.updateActivityInstanceState)(activityThread?.activityInstanceId, { causedBy: [activityThread] }, context);
26
30
  return result;
27
31
  }
28
32
  //# sourceMappingURL=save.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"save.js","sourceRoot":"","sources":["../../../server/controllers/activity-approval/save.ts"],"names":[],"mappings":";;AAMA,oBAmCC;AAzCD,iDAAqD;AACrD,6DAAqD;AACrD,+FAAuF;AACvF,yFAAiF;AACjF,4CAA0D;AAEnD,KAAK,UAAU,IAAI,CACxB,EAAE,EAAE,EAAE,OAAO,EAAmC,EAChD,OAAwB;IAExB,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,KAAK,CAAA;IAE1C,IAAI,UAAU,GAAG,IAAA,qBAAa,EAAC,uCAAgB,EAAE,EAAE,CAAC,CAAA;IAEpD,IAAI,gBAAgB,GAAG,MAAM,UAAU,CAAC,OAAO,CAAC;QAC9C,KAAK,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE;KACzC,CAAC,CAAA;IAEF,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACtB,MAAM,IAAI,KAAK,CACb,OAAO,CAAC,CAAC,CAAC,mCAAmC,EAAE;YAC7C,gBAAgB,EAAE,EAAE;SACrB,CAAC,CACH,CAAA;IACH,CAAC;IAED,MAAM,IAAA,mCAAc,EAAC,gBAAgB,EAAE,OAAO,CAAC,CAAA;IAE/C,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,IAAI,iCAC/B,gBAAgB,KACnB,OAAO,EACP,OAAO,EAAE,IAAI,IACb,CAAA;IAEF,MAAM,cAAc,GAAG,MAAM,IAAA,qBAAa,EAAC,mCAAc,CAAC,CAAC,SAAS,CAAC;QACnE,EAAE,EAAE,gBAAgB,CAAC,gBAAgB;KACtC,CAAC,CAAA;IAEF,MAAM,IAAA,uCAA2B,EAAC,cAAc,aAAd,cAAc,uBAAd,cAAc,CAAE,kBAAkB,EAAE,EAAE,QAAQ,EAAE,CAAC,cAAc,CAAC,EAAE,EAAE,OAAO,CAAC,CAAA;IAE9G,OAAO,MAAM,CAAA;AACf,CAAC","sourcesContent":["import { getRepository } from '@things-factory/shell'\nimport { checkAuthority } from './check-authority.js'\nimport { ActivityApproval } from '../../service/activity-approval/activity-approval.js'\nimport { ActivityThread } from '../../service/activity-thread/activity-thread.js'\nimport { updateActivityInstanceState } from '../common.js'\n\nexport async function save(\n { id, comment }: { id: string; comment: string },\n context: ResolverContext\n): Promise<ActivityApproval> {\n const { domain, user, tx } = context.state\n\n var repository = getRepository(ActivityApproval, tx)\n\n var activityApproval = await repository.findOne({\n where: { domain: { id: domain.id }, id }\n })\n\n if (!activityApproval) {\n throw new Error(\n context.t('error.activity-approval not found', {\n activityApproval: id\n })\n )\n }\n\n await checkAuthority(activityApproval, context)\n\n const result = await repository.save({\n ...activityApproval,\n comment,\n updater: user\n })\n\n const activityThread = await getRepository(ActivityThread).findOneBy({\n id: activityApproval.activityThreadId\n })\n\n await updateActivityInstanceState(activityThread?.activityInstanceId, { causedBy: [activityThread] }, context)\n\n return result\n}\n"]}
1
+ {"version":3,"file":"save.js","sourceRoot":"","sources":["../../../server/controllers/activity-approval/save.ts"],"names":[],"mappings":";;AAMA,oBAmCC;AAzCD,iDAAqD;AACrD,6DAAqD;AACrD,+FAAuF;AACvF,yFAAiF;AACjF,4CAA0D;AAEnD,KAAK,UAAU,IAAI,CACxB,EAAE,EAAE,EAAE,OAAO,EAAmC,EAChD,OAAwB;IAExB,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,KAAK,CAAA;IAE1C,IAAI,UAAU,GAAG,IAAA,qBAAa,EAAC,uCAAgB,EAAE,EAAE,CAAC,CAAA;IAEpD,IAAI,gBAAgB,GAAG,MAAM,UAAU,CAAC,OAAO,CAAC;QAC9C,KAAK,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE;KACzC,CAAC,CAAA;IAEF,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACtB,MAAM,IAAI,KAAK,CACb,OAAO,CAAC,CAAC,CAAC,mCAAmC,EAAE;YAC7C,gBAAgB,EAAE,EAAE;SACrB,CAAC,CACH,CAAA;IACH,CAAC;IAED,MAAM,IAAA,mCAAc,EAAC,gBAAgB,EAAE,OAAO,CAAC,CAAA;IAE/C,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,IAAI,CAAC;QACnC,GAAG,gBAAgB;QACnB,OAAO;QACP,OAAO,EAAE,IAAI;KACd,CAAC,CAAA;IAEF,MAAM,cAAc,GAAG,MAAM,IAAA,qBAAa,EAAC,mCAAc,CAAC,CAAC,SAAS,CAAC;QACnE,EAAE,EAAE,gBAAgB,CAAC,gBAAgB;KACtC,CAAC,CAAA;IAEF,MAAM,IAAA,uCAA2B,EAAC,cAAc,EAAE,kBAAkB,EAAE,EAAE,QAAQ,EAAE,CAAC,cAAc,CAAC,EAAE,EAAE,OAAO,CAAC,CAAA;IAE9G,OAAO,MAAM,CAAA;AACf,CAAC","sourcesContent":["import { getRepository } from '@things-factory/shell'\nimport { checkAuthority } from './check-authority.js'\nimport { ActivityApproval } from '../../service/activity-approval/activity-approval.js'\nimport { ActivityThread } from '../../service/activity-thread/activity-thread.js'\nimport { updateActivityInstanceState } from '../common.js'\n\nexport async function save(\n { id, comment }: { id: string; comment: string },\n context: ResolverContext\n): Promise<ActivityApproval> {\n const { domain, user, tx } = context.state\n\n var repository = getRepository(ActivityApproval, tx)\n\n var activityApproval = await repository.findOne({\n where: { domain: { id: domain.id }, id }\n })\n\n if (!activityApproval) {\n throw new Error(\n context.t('error.activity-approval not found', {\n activityApproval: id\n })\n )\n }\n\n await checkAuthority(activityApproval, context)\n\n const result = await repository.save({\n ...activityApproval,\n comment,\n updater: user\n })\n\n const activityThread = await getRepository(ActivityThread).findOneBy({\n id: activityApproval.activityThreadId\n })\n\n await updateActivityInstanceState(activityThread?.activityInstanceId, { causedBy: [activityThread] }, context)\n\n return result\n}\n"]}
@@ -2,6 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.ActivityInstallations = void 0;
4
4
  class ActivityInstallations {
5
+ static { this.templates = {}; }
5
6
  static installActivityTemplate(template) {
6
7
  ActivityInstallations.templates[template.name] = template;
7
8
  }
@@ -29,5 +30,4 @@ class ActivityInstallations {
29
30
  }
30
31
  }
31
32
  exports.ActivityInstallations = ActivityInstallations;
32
- ActivityInstallations.templates = {};
33
33
  //# sourceMappingURL=activity-installation-controller.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"activity-installation-controller.js","sourceRoot":"","sources":["../../../server/controllers/activity-installation/activity-installation-controller.ts"],"names":[],"mappings":";;;AAEA,MAAa,qBAAqB;IAGhC,MAAM,CAAC,uBAAuB,CAAC,QAA6B;QAC1D,qBAAqB,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAA;IAC3D,CAAC;IAED,MAAM,CAAC,GAAG,CAAC,IAAY;QACrB,OAAO,qBAAqB,CAAC,SAAS,CAAC,IAAI,CAAC,CAAA;IAC9C,CAAC;IAED,MAAM,CAAC,IAAI;QACT,OAAO,MAAM,CAAC,MAAM,CAAC,qBAAqB,CAAC,SAAS,CAAC,CAAA;IACvD,CAAC;IAED;;;;;;;OAOG;IACH,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAY,EAAE,gBAAqB,EAAE,eAAsB,EAAE,OAAwB;QACzG,MAAM,mBAAmB,GAAG,qBAAqB,CAAC,SAAS,CAAC,IAAI,CAAC,CAAA;QACjE,IAAI,CAAC,mBAAmB,EAAE,CAAC;YACzB,OAAM;QACR,CAAC;QAED,MAAM,EAAE,QAAQ,EAAE,GAAG,mBAAmB,CAAA;QAExC,QAAQ,IAAI,CAAC,MAAM,QAAQ,CAAC,gBAAgB,EAAE,EAAE,QAAQ,EAAE,eAAe,EAAE,EAAE,OAAO,CAAC,CAAC,CAAA;IACxF,CAAC;;AAhCH,sDAiCC;AAhCQ,+BAAS,GAA4C,EAAE,CAAA","sourcesContent":["import { InstallableActivity } from '../../service/installable-activity/installable-activity.js'\n\nexport class ActivityInstallations {\n static templates: { [name: string]: InstallableActivity } = {}\n\n static installActivityTemplate(template: InstallableActivity) {\n ActivityInstallations.templates[template.name] = template\n }\n\n static get(name: string): InstallableActivity {\n return ActivityInstallations.templates[name]\n }\n\n static list(): InstallableActivity[] {\n return Object.values(ActivityInstallations.templates)\n }\n\n /**\n * 액티비티인스턴스의 변화가 발생했을 때, 호출되는 콜백함수\n * @param name 액티비티인스턴스가 속한 액티비티명\n * @param activityInstance 해당 액티비티인스턴스\n * @param activityThreads 액티비티인스턴스의 변화를 일으킨 원인이 되는 액티비티쓰레드들\n * @param context 서비스 컨텍스트 : domain, user, translation, ..\n * @returns\n */\n static async callback(name: string, activityInstance: any, activityThreads: any[], context: ResolverContext) {\n const installableActivity = ActivityInstallations.templates[name]\n if (!installableActivity) {\n return\n }\n\n const { callback } = installableActivity\n\n callback && (await callback(activityInstance, { causedBy: activityThreads }, context))\n }\n}\n"]}
1
+ {"version":3,"file":"activity-installation-controller.js","sourceRoot":"","sources":["../../../server/controllers/activity-installation/activity-installation-controller.ts"],"names":[],"mappings":";;;AAEA,MAAa,qBAAqB;aACzB,cAAS,GAA4C,EAAE,CAAA;IAE9D,MAAM,CAAC,uBAAuB,CAAC,QAA6B;QAC1D,qBAAqB,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAA;IAC3D,CAAC;IAED,MAAM,CAAC,GAAG,CAAC,IAAY;QACrB,OAAO,qBAAqB,CAAC,SAAS,CAAC,IAAI,CAAC,CAAA;IAC9C,CAAC;IAED,MAAM,CAAC,IAAI;QACT,OAAO,MAAM,CAAC,MAAM,CAAC,qBAAqB,CAAC,SAAS,CAAC,CAAA;IACvD,CAAC;IAED;;;;;;;OAOG;IACH,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAY,EAAE,gBAAqB,EAAE,eAAsB,EAAE,OAAwB;QACzG,MAAM,mBAAmB,GAAG,qBAAqB,CAAC,SAAS,CAAC,IAAI,CAAC,CAAA;QACjE,IAAI,CAAC,mBAAmB,EAAE,CAAC;YACzB,OAAM;QACR,CAAC;QAED,MAAM,EAAE,QAAQ,EAAE,GAAG,mBAAmB,CAAA;QAExC,QAAQ,IAAI,CAAC,MAAM,QAAQ,CAAC,gBAAgB,EAAE,EAAE,QAAQ,EAAE,eAAe,EAAE,EAAE,OAAO,CAAC,CAAC,CAAA;IACxF,CAAC;;AAhCH,sDAiCC","sourcesContent":["import { InstallableActivity } from '../../service/installable-activity/installable-activity.js'\n\nexport class ActivityInstallations {\n static templates: { [name: string]: InstallableActivity } = {}\n\n static installActivityTemplate(template: InstallableActivity) {\n ActivityInstallations.templates[template.name] = template\n }\n\n static get(name: string): InstallableActivity {\n return ActivityInstallations.templates[name]\n }\n\n static list(): InstallableActivity[] {\n return Object.values(ActivityInstallations.templates)\n }\n\n /**\n * 액티비티인스턴스의 변화가 발생했을 때, 호출되는 콜백함수\n * @param name 액티비티인스턴스가 속한 액티비티명\n * @param activityInstance 해당 액티비티인스턴스\n * @param activityThreads 액티비티인스턴스의 변화를 일으킨 원인이 되는 액티비티쓰레드들\n * @param context 서비스 컨텍스트 : domain, user, translation, ..\n * @returns\n */\n static async callback(name: string, activityInstance: any, activityThreads: any[], context: ResolverContext) {\n const installableActivity = ActivityInstallations.templates[name]\n if (!installableActivity) {\n return\n }\n\n const { callback } = installableActivity\n\n callback && (await callback(activityInstance, { causedBy: activityThreads }, context))\n }\n}\n"]}
@@ -1,6 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.callWebhook = callWebhook;
4
+ const tslib_1 = require("tslib");
5
+ const node_fetch_1 = tslib_1.__importDefault(require("node-fetch"));
4
6
  const auth_base_1 = require("@things-factory/auth-base");
5
7
  const shell_1 = require("@things-factory/shell");
6
8
  async function callWebhook(domain, tag, data, tx) {
@@ -30,7 +32,7 @@ async function callWebhook(domain, tag, data, tx) {
30
32
  .filter(app => app.webhook)
31
33
  .every(app => {
32
34
  const webhook = app.webhook;
33
- fetch(webhook, options);
35
+ (0, node_fetch_1.default)(webhook, options);
34
36
  });
35
37
  }
36
38
  catch (err) {
@@ -1 +1 @@
1
- {"version":3,"file":"call-webhook.js","sourceRoot":"","sources":["../../../server/controllers/activity-installation/call-webhook.ts"],"names":[],"mappings":";;AAIA,kCAmCC;AAtCD,yDAAuD;AACvD,iDAA6D;AAEtD,KAAK,UAAU,WAAW,CAAC,MAAc,EAAE,GAAW,EAAE,IAAS,EAAE,EAAkB;IAC1F;;;;;;MAME;IAEF,MAAM,YAAY,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,aAAa,CAAC,uBAAW,CAAC,CAAC,CAAC,CAAC,IAAA,qBAAa,EAAC,uBAAW,CAAC,CAAC,CAAC,MAAM,CAAC;QAClG,MAAM,EAAE,EAAE,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE;KAC1B,CAAC,CAAA;IACF,MAAM,OAAO,GAAG;QACd,MAAM,EAAE,MAAM;QACd,OAAO,EAAE;YACP,yBAAyB,EAAE,MAAM,CAAC,IAAI;YACtC,cAAc,EAAE,kBAAkB;SACnC;QACD,IAAI,EAAE;YACJ,GAAG;YACH,IAAI;SACE;KACT,CAAA;IAED,IAAI,CAAC;QACH,YAAY;aACT,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC;aAC1B,KAAK,CAAC,GAAG,CAAC,EAAE;YACX,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO,CAAA;YAE3B,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;QACzB,CAAC,CAAC,CAAA;IACN,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;IACpB,CAAC;AACH,CAAC","sourcesContent":["import { EntityManager } from 'typeorm'\nimport { Application } from '@things-factory/auth-base'\nimport { Domain, getRepository } from '@things-factory/shell'\n\nexport async function callWebhook(domain: Domain, tag: string, data: any, tx?: EntityManager) {\n /* \n TODO webhook callback의 다양한 subscription 조건을 지원한다. \n - activity의 client에 해당하는 application\n - activityInstance의 starter에 해당하는 application\n - 모든 이벤트를 받고자하는 application\n - 특정 activity들의 이벤트를 받고자하는 application\n */\n\n const applications = await (tx ? tx.getRepository(Application) : getRepository(Application)).findBy({\n domain: { id: domain.id }\n })\n const options = {\n method: 'post',\n headers: {\n 'x-things-factory-domain': domain.name,\n 'Content-Type': 'application/json'\n },\n body: {\n tag,\n data\n } as any\n }\n\n try {\n applications\n .filter(app => app.webhook)\n .every(app => {\n const webhook = app.webhook\n\n fetch(webhook, options)\n })\n } catch (err) {\n console.error(err)\n }\n}\n"]}
1
+ {"version":3,"file":"call-webhook.js","sourceRoot":"","sources":["../../../server/controllers/activity-installation/call-webhook.ts"],"names":[],"mappings":";;AAMA,kCAmCC;;AAzCD,oEAA8B;AAG9B,yDAAuD;AACvD,iDAA6D;AAEtD,KAAK,UAAU,WAAW,CAAC,MAAc,EAAE,GAAW,EAAE,IAAS,EAAE,EAAkB;IAC1F;;;;;;MAME;IAEF,MAAM,YAAY,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,aAAa,CAAC,uBAAW,CAAC,CAAC,CAAC,CAAC,IAAA,qBAAa,EAAC,uBAAW,CAAC,CAAC,CAAC,MAAM,CAAC;QAClG,MAAM,EAAE,EAAE,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE;KAC1B,CAAC,CAAA;IACF,MAAM,OAAO,GAAG;QACd,MAAM,EAAE,MAAM;QACd,OAAO,EAAE;YACP,yBAAyB,EAAE,MAAM,CAAC,IAAI;YACtC,cAAc,EAAE,kBAAkB;SACnC;QACD,IAAI,EAAE;YACJ,GAAG;YACH,IAAI;SACE;KACT,CAAA;IAED,IAAI,CAAC;QACH,YAAY;aACT,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC;aAC1B,KAAK,CAAC,GAAG,CAAC,EAAE;YACX,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO,CAAA;YAE3B,IAAA,oBAAK,EAAC,OAAO,EAAE,OAAO,CAAC,CAAA;QACzB,CAAC,CAAC,CAAA;IACN,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;IACpB,CAAC;AACH,CAAC","sourcesContent":["import fetch from 'node-fetch'\n\nimport { EntityManager } from 'typeorm'\nimport { Application } from '@things-factory/auth-base'\nimport { Domain, getRepository } from '@things-factory/shell'\n\nexport async function callWebhook(domain: Domain, tag: string, data: any, tx?: EntityManager) {\n /* \n TODO webhook callback의 다양한 subscription 조건을 지원한다. \n - activity의 client에 해당하는 application\n - activityInstance의 starter에 해당하는 application\n - 모든 이벤트를 받고자하는 application\n - 특정 activity들의 이벤트를 받고자하는 application\n */\n\n const applications = await (tx ? tx.getRepository(Application) : getRepository(Application)).findBy({\n domain: { id: domain.id }\n })\n const options = {\n method: 'post',\n headers: {\n 'x-things-factory-domain': domain.name,\n 'Content-Type': 'application/json'\n },\n body: {\n tag,\n data\n } as any\n }\n\n try {\n applications\n .filter(app => app.webhook)\n .every(app => {\n const webhook = app.webhook\n\n fetch(webhook, options)\n })\n } catch (err) {\n console.error(err)\n }\n}\n"]}
@@ -49,6 +49,14 @@ async function abort({ id, reason }, context) {
49
49
  }
50
50
  await (0, _abort_js_1._abort)({ activityThread, reason }, context);
51
51
  }
52
- return await repository.save(Object.assign(Object.assign(Object.assign(Object.assign({}, activityInstance), { reason }), (await (0, common_js_1.evalActivityInstanceState)(id, context))), { transaction: 'abort', updater: user, terminatedAt: new Date(), terminator: user }));
52
+ return await repository.save({
53
+ ...activityInstance,
54
+ reason,
55
+ ...(await (0, common_js_1.evalActivityInstanceState)(id, context)),
56
+ transaction: 'abort',
57
+ updater: user,
58
+ terminatedAt: new Date(),
59
+ terminator: user
60
+ });
53
61
  }
54
62
  //# sourceMappingURL=abort.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"abort.js","sourceRoot":"","sources":["../../../server/controllers/activity-instance/abort.ts"],"names":[],"mappings":";;AAMA,sBAuEC;AA7ED,yFAAuF;AACvF,+FAA+G;AAC/G,4CAAwD;AAExD,4DAA4E;AAErE,KAAK,UAAU,KAAK,CACzB,EAAE,EAAE,EAAE,MAAM,EAAkC,EAC9C,OAAwB;IAExB,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,KAAK,CAAA;IAE1C,IAAI,UAAU,GAAG,EAAE,CAAC,aAAa,CAAC,uCAAgB,CAAC,CAAA;IAEnD,IAAI,gBAAgB,GAAG,MAAM,UAAU,CAAC,OAAO,CAAC;QAC9C,KAAK,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE;QACxC,SAAS,EAAE;YACT,QAAQ;YACR,UAAU;YACV,iBAAiB;YACjB,cAAc;YACd,iBAAiB;YACjB,SAAS;YACT,SAAS;YACT,SAAS;YACT,YAAY;SACb;KACF,CAAC,CAAA;IAEF,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACtB,MAAM,IAAI,KAAK,CACb,OAAO,CAAC,CAAC,CAAC,mCAAmC,EAAE;YAC7C,gBAAgB,EAAE,EAAE;SACrB,CAAC,CACH,CAAA;IACH,CAAC;IAED;;;MAGE;IACF,IACE,gBAAgB,CAAC,KAAK,IAAI,6CAAsB,CAAC,OAAO;QACxD,gBAAgB,CAAC,KAAK,IAAI,6CAAsB,CAAC,KAAK,EACtD,CAAC;QACD,MAAM,IAAI,KAAK,CACb,OAAO,CAAC,CAAC,CAAC,+CAA+C,EAAE;YACzD,EAAE;YACF,KAAK,EAAE,gBAAgB,CAAC,KAAK;SAC9B,CAAC,CACH,CAAA;IACH,CAAC;IAED;;;MAGE;IAEF,MAAM,UAAU,GAAG,CAAC,yCAAoB,CAAC,OAAO,EAAE,yCAAoB,CAAC,KAAK,CAAC,CAAA;IAE7E,KAAK,IAAI,cAAc,IAAI,gBAAgB,CAAC,eAAe,EAAE,CAAC;QAC5D,IAAI,UAAU,CAAC,QAAQ,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE,CAAC;YAC9C,SAAQ;QACV,CAAC;QAED,MAAM,IAAA,kBAAmB,EAAC,EAAE,cAAc,EAAE,MAAM,EAAE,EAAE,OAAO,CAAC,CAAA;IAChE,CAAC;IAED,OAAO,MAAM,UAAU,CAAC,IAAI,6DACvB,gBAAgB,KACnB,MAAM,KACH,CAAC,MAAM,IAAA,qCAAyB,EAAC,EAAE,EAAE,OAAO,CAAC,CAAC,KACjD,WAAW,EAAE,OAAO,EACpB,OAAO,EAAE,IAAI,EACb,YAAY,EAAE,IAAI,IAAI,EAAE,EACxB,UAAU,EAAE,IAAI,IAChB,CAAA;AACJ,CAAC","sourcesContent":["import { ActivityThreadStatus } from '../../service/activity-thread/activity-thread.js'\nimport { ActivityInstance, ActivityInstanceStatus } from '../../service/activity-instance/activity-instance.js'\nimport { evalActivityInstanceState } from '../common.js'\n\nimport { _abort as abortActivityThread } from '../activity-thread/_abort.js'\n\nexport async function abort(\n { id, reason }: { id: string; reason: string },\n context: ResolverContext\n): Promise<ActivityInstance> {\n const { domain, user, tx } = context.state\n\n var repository = tx.getRepository(ActivityInstance)\n\n var activityInstance = await repository.findOne({\n where: { domain: { id: domain.id }, id },\n relations: [\n 'domain',\n 'activity',\n 'activityThreads',\n 'assigneeRole',\n 'supervisoryRole',\n 'updater',\n 'creator',\n 'starter',\n 'terminator'\n ]\n })\n\n if (!activityInstance) {\n throw new Error(\n context.t('error.activity-instance not found', {\n activityInstance: id\n })\n )\n }\n\n /* \n Prerequisites for a Task to Be Aborted.\n - The previous state of the task must not be End or Aborted.\n */\n if (\n activityInstance.state == ActivityInstanceStatus.Aborted ||\n activityInstance.state == ActivityInstanceStatus.Ended\n ) {\n throw new Error(\n context.t(`error.activity-instance is already terminated`, {\n id,\n state: activityInstance.state\n })\n )\n }\n\n /* \n Actions to be processed when a task is aborted\n - All related activity threads must be aborted.\n */\n\n const TERMINATED = [ActivityThreadStatus.Aborted, ActivityThreadStatus.Ended]\n\n for (let activityThread of activityInstance.activityThreads) {\n if (TERMINATED.includes(activityThread.state)) {\n continue\n }\n\n await abortActivityThread({ activityThread, reason }, context)\n }\n\n return await repository.save({\n ...activityInstance,\n reason,\n ...(await evalActivityInstanceState(id, context)),\n transaction: 'abort',\n updater: user,\n terminatedAt: new Date(),\n terminator: user\n })\n}\n"]}
1
+ {"version":3,"file":"abort.js","sourceRoot":"","sources":["../../../server/controllers/activity-instance/abort.ts"],"names":[],"mappings":";;AAMA,sBAuEC;AA7ED,yFAAuF;AACvF,+FAA+G;AAC/G,4CAAwD;AAExD,4DAA4E;AAErE,KAAK,UAAU,KAAK,CACzB,EAAE,EAAE,EAAE,MAAM,EAAkC,EAC9C,OAAwB;IAExB,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,KAAK,CAAA;IAE1C,IAAI,UAAU,GAAG,EAAE,CAAC,aAAa,CAAC,uCAAgB,CAAC,CAAA;IAEnD,IAAI,gBAAgB,GAAG,MAAM,UAAU,CAAC,OAAO,CAAC;QAC9C,KAAK,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE;QACxC,SAAS,EAAE;YACT,QAAQ;YACR,UAAU;YACV,iBAAiB;YACjB,cAAc;YACd,iBAAiB;YACjB,SAAS;YACT,SAAS;YACT,SAAS;YACT,YAAY;SACb;KACF,CAAC,CAAA;IAEF,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACtB,MAAM,IAAI,KAAK,CACb,OAAO,CAAC,CAAC,CAAC,mCAAmC,EAAE;YAC7C,gBAAgB,EAAE,EAAE;SACrB,CAAC,CACH,CAAA;IACH,CAAC;IAED;;;MAGE;IACF,IACE,gBAAgB,CAAC,KAAK,IAAI,6CAAsB,CAAC,OAAO;QACxD,gBAAgB,CAAC,KAAK,IAAI,6CAAsB,CAAC,KAAK,EACtD,CAAC;QACD,MAAM,IAAI,KAAK,CACb,OAAO,CAAC,CAAC,CAAC,+CAA+C,EAAE;YACzD,EAAE;YACF,KAAK,EAAE,gBAAgB,CAAC,KAAK;SAC9B,CAAC,CACH,CAAA;IACH,CAAC;IAED;;;MAGE;IAEF,MAAM,UAAU,GAAG,CAAC,yCAAoB,CAAC,OAAO,EAAE,yCAAoB,CAAC,KAAK,CAAC,CAAA;IAE7E,KAAK,IAAI,cAAc,IAAI,gBAAgB,CAAC,eAAe,EAAE,CAAC;QAC5D,IAAI,UAAU,CAAC,QAAQ,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE,CAAC;YAC9C,SAAQ;QACV,CAAC;QAED,MAAM,IAAA,kBAAmB,EAAC,EAAE,cAAc,EAAE,MAAM,EAAE,EAAE,OAAO,CAAC,CAAA;IAChE,CAAC;IAED,OAAO,MAAM,UAAU,CAAC,IAAI,CAAC;QAC3B,GAAG,gBAAgB;QACnB,MAAM;QACN,GAAG,CAAC,MAAM,IAAA,qCAAyB,EAAC,EAAE,EAAE,OAAO,CAAC,CAAC;QACjD,WAAW,EAAE,OAAO;QACpB,OAAO,EAAE,IAAI;QACb,YAAY,EAAE,IAAI,IAAI,EAAE;QACxB,UAAU,EAAE,IAAI;KACjB,CAAC,CAAA;AACJ,CAAC","sourcesContent":["import { ActivityThreadStatus } from '../../service/activity-thread/activity-thread.js'\nimport { ActivityInstance, ActivityInstanceStatus } from '../../service/activity-instance/activity-instance.js'\nimport { evalActivityInstanceState } from '../common.js'\n\nimport { _abort as abortActivityThread } from '../activity-thread/_abort.js'\n\nexport async function abort(\n { id, reason }: { id: string; reason: string },\n context: ResolverContext\n): Promise<ActivityInstance> {\n const { domain, user, tx } = context.state\n\n var repository = tx.getRepository(ActivityInstance)\n\n var activityInstance = await repository.findOne({\n where: { domain: { id: domain.id }, id },\n relations: [\n 'domain',\n 'activity',\n 'activityThreads',\n 'assigneeRole',\n 'supervisoryRole',\n 'updater',\n 'creator',\n 'starter',\n 'terminator'\n ]\n })\n\n if (!activityInstance) {\n throw new Error(\n context.t('error.activity-instance not found', {\n activityInstance: id\n })\n )\n }\n\n /* \n Prerequisites for a Task to Be Aborted.\n - The previous state of the task must not be End or Aborted.\n */\n if (\n activityInstance.state == ActivityInstanceStatus.Aborted ||\n activityInstance.state == ActivityInstanceStatus.Ended\n ) {\n throw new Error(\n context.t(`error.activity-instance is already terminated`, {\n id,\n state: activityInstance.state\n })\n )\n }\n\n /* \n Actions to be processed when a task is aborted\n - All related activity threads must be aborted.\n */\n\n const TERMINATED = [ActivityThreadStatus.Aborted, ActivityThreadStatus.Ended]\n\n for (let activityThread of activityInstance.activityThreads) {\n if (TERMINATED.includes(activityThread.state)) {\n continue\n }\n\n await abortActivityThread({ activityThread, reason }, context)\n }\n\n return await repository.save({\n ...activityInstance,\n reason,\n ...(await evalActivityInstanceState(id, context)),\n transaction: 'abort',\n updater: user,\n terminatedAt: new Date(),\n terminator: user\n })\n}\n"]}
@@ -51,7 +51,24 @@ async function draft(activityInstance, context) {
51
51
  if (!dueAt && activity.standardTime) {
52
52
  activityInstance.dueAt = new Date(Date.now() + activity.standardTime * 1000);
53
53
  }
54
- const activitySearchKeys = (0, common_js_1.fillActivitySearchKeys)(activity === null || activity === void 0 ? void 0 : activity.searchKeys, input);
55
- return await tx.getRepository(activity_instance_js_1.ActivityInstance).save(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({}, previousActivityInstance), { activityType: activity.activityType, uiType: activity.uiType, uiSource: activity.uiSource, viewType: activity.viewType, viewSource: activity.viewSource, assigneeRole: activity.assigneeRole, supervisoryRole: activity.supervisoryRole }), activityInstance), { transaction: 'draft', activity }), activitySearchKeys), { state: activity_instance_js_1.ActivityInstanceStatus.Draft, domain, creator: user, updater: user }));
54
+ const activitySearchKeys = (0, common_js_1.fillActivitySearchKeys)(activity?.searchKeys, input);
55
+ return await tx.getRepository(activity_instance_js_1.ActivityInstance).save({
56
+ ...previousActivityInstance,
57
+ activityType: activity.activityType,
58
+ uiType: activity.uiType,
59
+ uiSource: activity.uiSource,
60
+ viewType: activity.viewType,
61
+ viewSource: activity.viewSource,
62
+ assigneeRole: activity.assigneeRole,
63
+ supervisoryRole: activity.supervisoryRole,
64
+ ...activityInstance,
65
+ transaction: 'draft',
66
+ activity,
67
+ ...activitySearchKeys,
68
+ state: activity_instance_js_1.ActivityInstanceStatus.Draft,
69
+ domain,
70
+ creator: user,
71
+ updater: user
72
+ });
56
73
  }
57
74
  //# sourceMappingURL=draft.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"draft.js","sourceRoot":"","sources":["../../../server/controllers/activity-instance/draft.ts"],"names":[],"mappings":";;AAKA,sBAqFC;AA1FD,+FAA+G;AAE/G,oEAA6D;AAC7D,4CAAqD;AAE9C,KAAK,UAAU,KAAK,CACzB,gBAAuC,EACvC,OAAwB;IAExB,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,KAAK,CAAA;IAC1C,MAAM,EAAE,EAAE,EAAE,UAAU,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,gBAAgB,CAAA;IAEzD,IAAI,UAAU,GAAG,EAAE,CAAC,aAAa,CAAC,sBAAQ,CAAC,CAAA;IAC3C,IAAI,QAAQ,GAAG,EAAc,CAAA;IAE7B,IAAI,EAAE,EAAE,CAAC;QACP,IAAI,wBAAwB,GAAG,MAAM,EAAE,CAAC,aAAa,CAAC,uCAAgB,CAAC,CAAC,OAAO,CAAC;YAC9E,KAAK,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE;YACxC,SAAS,EAAE,CAAC,UAAU,CAAC;SACxB,CAAC,CAAA;QAEF,IAAI,CAAC,wBAAwB,EAAE,CAAC;YAC9B,MAAM,IAAI,KAAK,CACb,OAAO,CAAC,CAAC,CAAC,kCAAkC,EAAE;gBAC5C,gBAAgB,EAAE,EAAE;aACrB,CAAC,CACH,CAAA;QACH,CAAC;QAED,IAAI,wBAAwB,CAAC,KAAK,KAAK,6CAAsB,CAAC,KAAK,EAAE,CAAC;YACpE,MAAM,IAAI,KAAK,CACb,OAAO,CAAC,CAAC,CAAC,8CAA8C,EAAE;gBACxD,gBAAgB,EAAE,EAAE;gBACpB,KAAK,EAAE,wBAAwB,CAAC,KAAK;aACtC,CAAC,CACH,CAAA;QACH,CAAC;QAED,QAAQ,GAAG,wBAAwB,CAAC,QAAQ,CAAA;IAC9C,CAAC;SAAM,CAAC;QACN,gBAAgB,CAAC,SAAS,GAAG,UAAU,CAAA;QACvC,gBAAgB,CAAC,KAAK,GAAG,UAAU,CAAA;IACrC,CAAC;IAED,IAAI,UAAU,EAAE,CAAC;QACf,QAAQ,GAAG,MAAM,UAAU,CAAC,OAAO,CAAC;YAClC,KAAK,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,UAAU,EAAE;YACpD,SAAS,EAAE,CAAC,cAAc,EAAE,iBAAiB,CAAC;SAC/C,CAAC,CAAA;QAEF,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,MAAM,IAAI,KAAK,CACb,OAAO,CAAC,CAAC,CAAC,0BAA0B,EAAE;gBACpC,QAAQ,EAAE,UAAU;aACrB,CAAC,CACH,CAAA;QACH,CAAC;IACH,CAAC;IAED,IAAI,CAAC,gBAAgB,CAAC,SAAS,EAAE,CAAC;QAChC,gBAAgB,CAAC,SAAS,GAAG,QAAQ,CAAC,SAAS,CAAA;IACjD,CAAC;IACD,IAAI,CAAC,gBAAgB,CAAC,YAAY,EAAE,CAAC;QACnC,gBAAgB,CAAC,YAAY,GAAG,QAAQ,CAAC,YAAY,CAAA;IACvD,CAAC;IAED,IAAI,CAAC,KAAK,IAAI,QAAQ,CAAC,YAAY,EAAE,CAAC;QACpC,gBAAgB,CAAC,KAAK,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,QAAQ,CAAC,YAAY,GAAG,IAAI,CAAC,CAAA;IAC9E,CAAC;IAED,MAAM,kBAAkB,GAAG,IAAA,kCAAsB,EAAC,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,UAAU,EAAE,KAAK,CAAC,CAAA;IAE9E,OAAO,MAAM,EAAE,CAAC,aAAa,CAAC,uCAAgB,CAAC,CAAC,IAAI,yFAC/C,wBAAwB,KAC3B,YAAY,EAAE,QAAQ,CAAC,YAAY,EACnC,MAAM,EAAE,QAAQ,CAAC,MAAM,EACvB,QAAQ,EAAE,QAAQ,CAAC,QAAQ,EAC3B,QAAQ,EAAE,QAAQ,CAAC,QAAQ,EAC3B,UAAU,EAAE,QAAQ,CAAC,UAAU,EAC/B,YAAY,EAAE,QAAQ,CAAC,YAAY,EACnC,eAAe,EAAE,QAAQ,CAAC,eAAe,KACtC,gBAAgB,KACnB,WAAW,EAAE,OAAO,EACpB,QAAQ,KACL,kBAAkB,KACrB,KAAK,EAAE,6CAAsB,CAAC,KAAK,EACnC,MAAM,EACN,OAAO,EAAE,IAAI,EACb,OAAO,EAAE,IAAI,IACb,CAAA;AACJ,CAAC","sourcesContent":["import { ActivityInstance, ActivityInstanceStatus } from '../../service/activity-instance/activity-instance.js'\nimport { ActivityInstanceDraft } from '../../service/activity-instance/activity-instance-type.js'\nimport { Activity } from '../../service/activity/activity.js'\nimport { fillActivitySearchKeys } from '../common.js'\n\nexport async function draft(\n activityInstance: ActivityInstanceDraft,\n context: ResolverContext\n): Promise<ActivityInstance> {\n const { domain, user, tx } = context.state\n const { id, activityId, input, dueAt } = activityInstance\n\n var repository = tx.getRepository(Activity)\n var activity = {} as Activity\n\n if (id) {\n var previousActivityInstance = await tx.getRepository(ActivityInstance).findOne({\n where: { domain: { id: domain.id }, id },\n relations: ['activity']\n })\n\n if (!previousActivityInstance) {\n throw new Error(\n context.t('error.activityInstance not found', {\n activityInstance: id\n })\n )\n }\n\n if (previousActivityInstance.state !== ActivityInstanceStatus.Draft) {\n throw new Error(\n context.t('error.activityInstance state should be draft', {\n activityInstance: id,\n state: previousActivityInstance.state\n })\n )\n }\n\n activity = previousActivityInstance.activity\n } else {\n activityInstance.adhocType = 'standard'\n activityInstance.refBy = activityId\n }\n\n if (activityId) {\n activity = await repository.findOne({\n where: { domain: { id: domain.id }, id: activityId },\n relations: ['assigneeRole', 'supervisoryRole']\n })\n\n if (!activity) {\n throw new Error(\n context.t('error.activity not found', {\n activity: activityId\n })\n )\n }\n }\n\n if (!activityInstance.assignees) {\n activityInstance.assignees = activity.assignees\n }\n if (!activityInstance.approvalLine) {\n activityInstance.approvalLine = activity.approvalLine\n }\n\n if (!dueAt && activity.standardTime) {\n activityInstance.dueAt = new Date(Date.now() + activity.standardTime * 1000)\n }\n\n const activitySearchKeys = fillActivitySearchKeys(activity?.searchKeys, input)\n\n return await tx.getRepository(ActivityInstance).save({\n ...previousActivityInstance,\n activityType: activity.activityType,\n uiType: activity.uiType,\n uiSource: activity.uiSource,\n viewType: activity.viewType,\n viewSource: activity.viewSource,\n assigneeRole: activity.assigneeRole,\n supervisoryRole: activity.supervisoryRole,\n ...activityInstance,\n transaction: 'draft',\n activity,\n ...activitySearchKeys,\n state: ActivityInstanceStatus.Draft,\n domain,\n creator: user,\n updater: user\n })\n}\n"]}
1
+ {"version":3,"file":"draft.js","sourceRoot":"","sources":["../../../server/controllers/activity-instance/draft.ts"],"names":[],"mappings":"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","sourcesContent":["import { ActivityInstance, ActivityInstanceStatus } from '../../service/activity-instance/activity-instance.js'\nimport { ActivityInstanceDraft } from '../../service/activity-instance/activity-instance-type.js'\nimport { Activity } from '../../service/activity/activity.js'\nimport { fillActivitySearchKeys } from '../common.js'\n\nexport async function draft(\n activityInstance: ActivityInstanceDraft,\n context: ResolverContext\n): Promise<ActivityInstance> {\n const { domain, user, tx } = context.state\n const { id, activityId, input, dueAt } = activityInstance\n\n var repository = tx.getRepository(Activity)\n var activity = {} as Activity\n\n if (id) {\n var previousActivityInstance = await tx.getRepository(ActivityInstance).findOne({\n where: { domain: { id: domain.id }, id },\n relations: ['activity']\n })\n\n if (!previousActivityInstance) {\n throw new Error(\n context.t('error.activityInstance not found', {\n activityInstance: id\n })\n )\n }\n\n if (previousActivityInstance.state !== ActivityInstanceStatus.Draft) {\n throw new Error(\n context.t('error.activityInstance state should be draft', {\n activityInstance: id,\n state: previousActivityInstance.state\n })\n )\n }\n\n activity = previousActivityInstance.activity\n } else {\n activityInstance.adhocType = 'standard'\n activityInstance.refBy = activityId\n }\n\n if (activityId) {\n activity = await repository.findOne({\n where: { domain: { id: domain.id }, id: activityId },\n relations: ['assigneeRole', 'supervisoryRole']\n })\n\n if (!activity) {\n throw new Error(\n context.t('error.activity not found', {\n activity: activityId\n })\n )\n }\n }\n\n if (!activityInstance.assignees) {\n activityInstance.assignees = activity.assignees\n }\n if (!activityInstance.approvalLine) {\n activityInstance.approvalLine = activity.approvalLine\n }\n\n if (!dueAt && activity.standardTime) {\n activityInstance.dueAt = new Date(Date.now() + activity.standardTime * 1000)\n }\n\n const activitySearchKeys = fillActivitySearchKeys(activity?.searchKeys, input)\n\n return await tx.getRepository(ActivityInstance).save({\n ...previousActivityInstance,\n activityType: activity.activityType,\n uiType: activity.uiType,\n uiSource: activity.uiSource,\n viewType: activity.viewType,\n viewSource: activity.viewSource,\n assigneeRole: activity.assigneeRole,\n supervisoryRole: activity.supervisoryRole,\n ...activityInstance,\n transaction: 'draft',\n activity,\n ...activitySearchKeys,\n state: ActivityInstanceStatus.Draft,\n domain,\n creator: user,\n updater: user\n })\n}\n"]}
@@ -51,7 +51,15 @@ async function end({ id, output, reason }, context) {
51
51
  if (!activityInstance.startedAt) {
52
52
  activityInstance.startedAt = new Date();
53
53
  }
54
- return await repository.save(Object.assign(Object.assign({}, activityInstance), { reason,
55
- output, transaction: 'end', state: await (0, common_js_1.evalActivityInstanceState)(id, context), updater: user, terminatedAt: new Date(), terminator: user }));
54
+ return await repository.save({
55
+ ...activityInstance,
56
+ reason,
57
+ output,
58
+ transaction: 'end',
59
+ state: await (0, common_js_1.evalActivityInstanceState)(id, context),
60
+ updater: user,
61
+ terminatedAt: new Date(),
62
+ terminator: user
63
+ });
56
64
  }
57
65
  //# sourceMappingURL=end.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"end.js","sourceRoot":"","sources":["../../../server/controllers/activity-instance/end.ts"],"names":[],"mappings":";;AAIA,kBA4EC;AAhFD,+FAA+G;AAC/G,yFAAuF;AACvF,4CAAwD;AAEjD,KAAK,UAAU,GAAG,CACvB,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,EAAoD,EACxE,OAAwB;IAExB,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,KAAK,CAAA;IAC1C,MAAM,UAAU,GAAG,EAAE,CAAC,aAAa,CAAC,uCAAgB,CAAC,CAAA;IAErD,IAAI,gBAAgB,GAAG,MAAM,UAAU,CAAC,OAAO,CAAC;QAC9C,KAAK,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE;QACxC,SAAS,EAAE;YACT,QAAQ;YACR,UAAU;YACV,iBAAiB;YACjB,cAAc;YACd,iBAAiB;YACjB,SAAS;YACT,SAAS;YACT,SAAS;YACT,YAAY;SACb;KACF,CAAC,CAAA;IAEF,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACtB,MAAM,IAAI,KAAK,CACb,OAAO,CAAC,CAAC,CAAC,mCAAmC,EAAE;YAC7C,gBAAgB,EAAE,EAAE;SACrB,CAAC,CACH,CAAA;IACH,CAAC;IAED;;;;MAIE;IACF,IACE,gBAAgB,CAAC,KAAK,IAAI,6CAAsB,CAAC,OAAO;QACxD,gBAAgB,CAAC,KAAK,IAAI,6CAAsB,CAAC,KAAK,EACtD,CAAC;QACD,MAAM,IAAI,KAAK,CACb,OAAO,CAAC,CAAC,CAAC,+CAA+C,EAAE;YACzD,EAAE;YACF,KAAK,EAAE,gBAAgB,CAAC,KAAK;SAC9B,CAAC,CACH,CAAA;IACH,CAAC;IAED,MAAM,UAAU,GAAG,CAAC,yCAAoB,CAAC,OAAO,EAAE,yCAAoB,CAAC,KAAK,CAAC,CAAA;IAE7E,KAAK,IAAI,cAAc,IAAI,gBAAgB,CAAC,eAAe,EAAE,CAAC;QAC5D,IAAI,UAAU,CAAC,QAAQ,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE,CAAC;YAC9C,SAAQ;QACV,CAAC;QAED,MAAM,IAAI,KAAK,CACb,OAAO,CAAC,CAAC,CAAC,iDAAiD,EAAE;YAC3D,cAAc,EAAE,cAAc,CAAC,EAAE;YACjC,KAAK,EAAE,gBAAgB,CAAC,KAAK;SAC9B,CAAC,CACH,CAAA;IACH,CAAC;IAED,IAAI,CAAC,gBAAgB,CAAC,SAAS,EAAE,CAAC;QAChC,gBAAgB,CAAC,SAAS,GAAG,IAAI,IAAI,EAAE,CAAA;IACzC,CAAC;IAED,OAAO,MAAM,UAAU,CAAC,IAAI,CAAC,gCACxB,gBAAgB,KACnB,MAAM;QACN,MAAM,EACN,WAAW,EAAE,KAAK,EAClB,KAAK,EAAE,MAAM,IAAA,qCAAyB,EAAC,EAAE,EAAE,OAAO,CAAC,EACnD,OAAO,EAAE,IAAI,EACb,YAAY,EAAE,IAAI,IAAI,EAAE,EACxB,UAAU,EAAE,IAAI,GACV,CAAC,CAAA;AACX,CAAC","sourcesContent":["import { ActivityInstance, ActivityInstanceStatus } from '../../service/activity-instance/activity-instance.js'\nimport { ActivityThreadStatus } from '../../service/activity-thread/activity-thread.js'\nimport { evalActivityInstanceState } from '../common.js'\n\nexport async function end(\n { id, output, reason }: { id: string; output?: object; reason?: string },\n context: ResolverContext\n): Promise<ActivityInstance> {\n const { domain, user, tx } = context.state\n const repository = tx.getRepository(ActivityInstance)\n\n var activityInstance = await repository.findOne({\n where: { domain: { id: domain.id }, id },\n relations: [\n 'domain',\n 'activity',\n 'activityThreads',\n 'assigneeRole',\n 'supervisoryRole',\n 'updater',\n 'creator',\n 'starter',\n 'terminator'\n ]\n })\n\n if (!activityInstance) {\n throw new Error(\n context.t('error.activity-instance not found', {\n activityInstance: id\n })\n )\n }\n\n /* \n Prerequisites for a Task to Be End.\n - The previous state of the task must not be End or Aborted.\n - There should be no unfinished activity threads.\n */\n if (\n activityInstance.state == ActivityInstanceStatus.Aborted ||\n activityInstance.state == ActivityInstanceStatus.Ended\n ) {\n throw new Error(\n context.t(`error.activity-instance is already terminated`, {\n id,\n state: activityInstance.state\n })\n )\n }\n\n const TERMINATED = [ActivityThreadStatus.Aborted, ActivityThreadStatus.Ended]\n\n for (let activityThread of activityInstance.activityThreads) {\n if (TERMINATED.includes(activityThread.state)) {\n continue\n }\n\n throw new Error(\n context.t(`error.all activity threads should be terminated`, {\n activityThread: activityThread.id,\n state: activityInstance.state\n })\n )\n }\n\n if (!activityInstance.startedAt) {\n activityInstance.startedAt = new Date()\n }\n\n return await repository.save({\n ...activityInstance,\n reason,\n output,\n transaction: 'end',\n state: await evalActivityInstanceState(id, context),\n updater: user,\n terminatedAt: new Date(),\n terminator: user\n } as any)\n}\n"]}
1
+ {"version":3,"file":"end.js","sourceRoot":"","sources":["../../../server/controllers/activity-instance/end.ts"],"names":[],"mappings":";;AAIA,kBA4EC;AAhFD,+FAA+G;AAC/G,yFAAuF;AACvF,4CAAwD;AAEjD,KAAK,UAAU,GAAG,CACvB,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,EAAoD,EACxE,OAAwB;IAExB,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,KAAK,CAAA;IAC1C,MAAM,UAAU,GAAG,EAAE,CAAC,aAAa,CAAC,uCAAgB,CAAC,CAAA;IAErD,IAAI,gBAAgB,GAAG,MAAM,UAAU,CAAC,OAAO,CAAC;QAC9C,KAAK,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE;QACxC,SAAS,EAAE;YACT,QAAQ;YACR,UAAU;YACV,iBAAiB;YACjB,cAAc;YACd,iBAAiB;YACjB,SAAS;YACT,SAAS;YACT,SAAS;YACT,YAAY;SACb;KACF,CAAC,CAAA;IAEF,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACtB,MAAM,IAAI,KAAK,CACb,OAAO,CAAC,CAAC,CAAC,mCAAmC,EAAE;YAC7C,gBAAgB,EAAE,EAAE;SACrB,CAAC,CACH,CAAA;IACH,CAAC;IAED;;;;MAIE;IACF,IACE,gBAAgB,CAAC,KAAK,IAAI,6CAAsB,CAAC,OAAO;QACxD,gBAAgB,CAAC,KAAK,IAAI,6CAAsB,CAAC,KAAK,EACtD,CAAC;QACD,MAAM,IAAI,KAAK,CACb,OAAO,CAAC,CAAC,CAAC,+CAA+C,EAAE;YACzD,EAAE;YACF,KAAK,EAAE,gBAAgB,CAAC,KAAK;SAC9B,CAAC,CACH,CAAA;IACH,CAAC;IAED,MAAM,UAAU,GAAG,CAAC,yCAAoB,CAAC,OAAO,EAAE,yCAAoB,CAAC,KAAK,CAAC,CAAA;IAE7E,KAAK,IAAI,cAAc,IAAI,gBAAgB,CAAC,eAAe,EAAE,CAAC;QAC5D,IAAI,UAAU,CAAC,QAAQ,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE,CAAC;YAC9C,SAAQ;QACV,CAAC;QAED,MAAM,IAAI,KAAK,CACb,OAAO,CAAC,CAAC,CAAC,iDAAiD,EAAE;YAC3D,cAAc,EAAE,cAAc,CAAC,EAAE;YACjC,KAAK,EAAE,gBAAgB,CAAC,KAAK;SAC9B,CAAC,CACH,CAAA;IACH,CAAC;IAED,IAAI,CAAC,gBAAgB,CAAC,SAAS,EAAE,CAAC;QAChC,gBAAgB,CAAC,SAAS,GAAG,IAAI,IAAI,EAAE,CAAA;IACzC,CAAC;IAED,OAAO,MAAM,UAAU,CAAC,IAAI,CAAC;QAC3B,GAAG,gBAAgB;QACnB,MAAM;QACN,MAAM;QACN,WAAW,EAAE,KAAK;QAClB,KAAK,EAAE,MAAM,IAAA,qCAAyB,EAAC,EAAE,EAAE,OAAO,CAAC;QACnD,OAAO,EAAE,IAAI;QACb,YAAY,EAAE,IAAI,IAAI,EAAE;QACxB,UAAU,EAAE,IAAI;KACV,CAAC,CAAA;AACX,CAAC","sourcesContent":["import { ActivityInstance, ActivityInstanceStatus } from '../../service/activity-instance/activity-instance.js'\nimport { ActivityThreadStatus } from '../../service/activity-thread/activity-thread.js'\nimport { evalActivityInstanceState } from '../common.js'\n\nexport async function end(\n { id, output, reason }: { id: string; output?: object; reason?: string },\n context: ResolverContext\n): Promise<ActivityInstance> {\n const { domain, user, tx } = context.state\n const repository = tx.getRepository(ActivityInstance)\n\n var activityInstance = await repository.findOne({\n where: { domain: { id: domain.id }, id },\n relations: [\n 'domain',\n 'activity',\n 'activityThreads',\n 'assigneeRole',\n 'supervisoryRole',\n 'updater',\n 'creator',\n 'starter',\n 'terminator'\n ]\n })\n\n if (!activityInstance) {\n throw new Error(\n context.t('error.activity-instance not found', {\n activityInstance: id\n })\n )\n }\n\n /* \n Prerequisites for a Task to Be End.\n - The previous state of the task must not be End or Aborted.\n - There should be no unfinished activity threads.\n */\n if (\n activityInstance.state == ActivityInstanceStatus.Aborted ||\n activityInstance.state == ActivityInstanceStatus.Ended\n ) {\n throw new Error(\n context.t(`error.activity-instance is already terminated`, {\n id,\n state: activityInstance.state\n })\n )\n }\n\n const TERMINATED = [ActivityThreadStatus.Aborted, ActivityThreadStatus.Ended]\n\n for (let activityThread of activityInstance.activityThreads) {\n if (TERMINATED.includes(activityThread.state)) {\n continue\n }\n\n throw new Error(\n context.t(`error.all activity threads should be terminated`, {\n activityThread: activityThread.id,\n state: activityInstance.state\n })\n )\n }\n\n if (!activityInstance.startedAt) {\n activityInstance.startedAt = new Date()\n }\n\n return await repository.save({\n ...activityInstance,\n reason,\n output,\n transaction: 'end',\n state: await evalActivityInstanceState(id, context),\n updater: user,\n terminatedAt: new Date(),\n terminator: user\n } as any)\n}\n"]}
@@ -36,7 +36,7 @@ async function issue(activityInstance, context) {
36
36
  }));
37
37
  }
38
38
  var repository = tx.getRepository(activity_js_1.Activity);
39
- var activity = (origin === null || origin === void 0 ? void 0 : origin.activity) ||
39
+ var activity = origin?.activity ||
40
40
  (await repository.findOne({
41
41
  where: { domain: domain.parentId ? { id: (0, typeorm_1.In)([domain.id, domain.parentId]) } : { id: domain.id }, id: activityId },
42
42
  relations: ['assigneeRole', 'supervisoryRole']
@@ -56,7 +56,7 @@ async function issue(activityInstance, context) {
56
56
  activityInstance.viewSource = viewSource || activity.viewSource;
57
57
  activityInstance.assigneeRole = assigneeRole || activity.assigneeRole;
58
58
  activityInstance.supervisoryRole = supervisoryRole || activity.supervisoryRole;
59
- activityInstance.priority = priority !== null && priority !== void 0 ? priority : activity.priority;
59
+ activityInstance.priority = priority ?? activity.priority;
60
60
  activityInstance.adhocType = 'standard';
61
61
  activityInstance.refBy = activityId;
62
62
  if (!assignees || !approvalLine) {
@@ -71,14 +71,27 @@ async function issue(activityInstance, context) {
71
71
  }
72
72
  }
73
73
  }
74
- const activitySearchKeys = (0, common_js_1.fillActivitySearchKeys)(activity === null || activity === void 0 ? void 0 : activity.searchKeys, input);
74
+ const activitySearchKeys = (0, common_js_1.fillActivitySearchKeys)(activity?.searchKeys, input);
75
75
  if (activity.startingType == 'post') {
76
76
  /*
77
77
  startingType이 'post'이면,
78
78
  activityInstance 이슈와 동시에 issuer에게 할당된 activityThread가 생성되고 submit까지 모두 완료되게 된다.
79
79
  만일, 결재선이 있다면, 상신되게 된다.
80
80
  */
81
- const posted = await tx.getRepository(activity_instance_js_1.ActivityInstance).save(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({ creator: user }, origin), activityInstance), { transaction: 'post', activity }), activitySearchKeys), { state: activity_instance_js_1.ActivityInstanceStatus.Started, domain, issuer: user, updater: user, issuedAt, startedAt: issuedAt }));
81
+ const posted = await tx.getRepository(activity_instance_js_1.ActivityInstance).save({
82
+ creator: user,
83
+ ...origin,
84
+ ...activityInstance,
85
+ transaction: 'post',
86
+ activity,
87
+ ...activitySearchKeys,
88
+ state: activity_instance_js_1.ActivityInstanceStatus.Started,
89
+ domain,
90
+ issuer: user,
91
+ updater: user,
92
+ issuedAt,
93
+ startedAt: issuedAt
94
+ });
82
95
  const thread = await (0, common_js_1.createActivityThreadForUser)('post', posted, user, context);
83
96
  /* post 방식은 thread가 하나이므로, instance의 output을 그대로 thread의 output이라고 판단할 수 있다. 따라서, 아래 로직은 제거한다. */
84
97
  // const data = { ...activityInstance.input, ...activityInstance.output }
@@ -92,7 +105,19 @@ async function issue(activityInstance, context) {
92
105
  return await tx.getRepository(activity_instance_js_1.ActivityInstance).findOneBy({ id: posted.id });
93
106
  }
94
107
  else {
95
- const issued = await tx.getRepository(activity_instance_js_1.ActivityInstance).save(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({ creator: user }, origin), activityInstance), { transaction: 'issue', activity }), activitySearchKeys), { state: activity_instance_js_1.ActivityInstanceStatus.Issued, domain, issuer: user, updater: user, issuedAt }));
108
+ const issued = await tx.getRepository(activity_instance_js_1.ActivityInstance).save({
109
+ creator: user,
110
+ ...origin,
111
+ ...activityInstance,
112
+ transaction: 'issue',
113
+ activity,
114
+ ...activitySearchKeys,
115
+ state: activity_instance_js_1.ActivityInstanceStatus.Issued,
116
+ domain,
117
+ issuer: user,
118
+ updater: user,
119
+ issuedAt
120
+ });
96
121
  /*
97
122
  1. 하나의 thread가 필요한 경우 (대부분)
98
123
  조건 : activityInstance의 threadsMin이 1 이어야 한다.