@things-factory/worklist 6.0.41 → 6.0.43

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 (150) hide show
  1. package/client/pages/activity/activity-list-page.ts +12 -7
  2. package/client/pages/todo/done-list-page.ts +1 -1
  3. package/client/pages/todo/todo-list-page.ts +1 -1
  4. package/dist-client/pages/activity/activity-list-page.js +12 -7
  5. package/dist-client/pages/activity/activity-list-page.js.map +1 -1
  6. package/dist-client/pages/todo/done-list-page.js +1 -1
  7. package/dist-client/pages/todo/done-list-page.js.map +1 -1
  8. package/dist-client/pages/todo/todo-list-page.js +1 -1
  9. package/dist-client/pages/todo/todo-list-page.js.map +1 -1
  10. package/dist-client/route.d.ts +1 -1
  11. package/dist-client/tsconfig.tsbuildinfo +1 -1
  12. package/dist-server/controllers/activity-approval/_abort.js +11 -0
  13. package/dist-server/controllers/activity-approval/_abort.js.map +1 -0
  14. package/dist-server/controllers/activity-approval/abort.js +34 -0
  15. package/dist-server/controllers/activity-approval/abort.js.map +1 -0
  16. package/dist-server/controllers/activity-approval/approve.js +10 -0
  17. package/dist-server/controllers/activity-approval/approve.js.map +1 -1
  18. package/dist-server/controllers/activity-approval/delegate.js +10 -0
  19. package/dist-server/controllers/activity-approval/delegate.js.map +1 -1
  20. package/dist-server/controllers/activity-approval/reject.js +10 -0
  21. package/dist-server/controllers/activity-approval/reject.js.map +1 -1
  22. package/dist-server/controllers/activity-instance/abort.js +35 -1
  23. package/dist-server/controllers/activity-instance/abort.js.map +1 -1
  24. package/dist-server/controllers/activity-instance/adjust-xxx.js +16 -0
  25. package/dist-server/controllers/activity-instance/adjust-xxx.js.map +1 -0
  26. package/dist-server/controllers/activity-instance/assign.js +11 -0
  27. package/dist-server/controllers/activity-instance/assign.js.map +1 -1
  28. package/dist-server/controllers/activity-instance/end.js +34 -1
  29. package/dist-server/controllers/activity-instance/end.js.map +1 -1
  30. package/dist-server/controllers/activity-instance/index.js +0 -4
  31. package/dist-server/controllers/activity-instance/index.js.map +1 -1
  32. package/dist-server/controllers/activity-instance/pick.js +11 -0
  33. package/dist-server/controllers/activity-instance/pick.js.map +1 -1
  34. package/dist-server/controllers/activity-instance/post.js +10 -0
  35. package/dist-server/controllers/activity-instance/post.js.map +1 -1
  36. package/dist-server/controllers/activity-instance/start-xxx.js +16 -0
  37. package/dist-server/controllers/activity-instance/start-xxx.js.map +1 -0
  38. package/dist-server/controllers/activity-instance/terminate-xxx.js +25 -0
  39. package/dist-server/controllers/activity-instance/terminate-xxx.js.map +1 -0
  40. package/dist-server/controllers/activity-thread/_abort.js +29 -0
  41. package/dist-server/controllers/activity-thread/_abort.js.map +1 -0
  42. package/dist-server/controllers/activity-thread/abort.js +15 -2
  43. package/dist-server/controllers/activity-thread/abort.js.map +1 -1
  44. package/dist-server/controllers/activity-thread/delegate.js +10 -0
  45. package/dist-server/controllers/activity-thread/delegate.js.map +1 -1
  46. package/dist-server/controllers/activity-thread/end.js +12 -0
  47. package/dist-server/controllers/activity-thread/end.js.map +1 -1
  48. package/dist-server/controllers/activity-thread/index.js +0 -2
  49. package/dist-server/controllers/activity-thread/index.js.map +1 -1
  50. package/dist-server/controllers/activity-thread/restart.js +11 -0
  51. package/dist-server/controllers/activity-thread/restart.js.map +1 -1
  52. package/dist-server/controllers/activity-thread/save.js +13 -0
  53. package/dist-server/controllers/activity-thread/save.js.map +1 -1
  54. package/dist-server/controllers/activity-thread/start.js +10 -0
  55. package/dist-server/controllers/activity-thread/start.js.map +1 -1
  56. package/dist-server/controllers/activity-thread/submit.js +10 -0
  57. package/dist-server/controllers/activity-thread/submit.js.map +1 -1
  58. package/dist-server/service/activity/activity-type.js +8 -0
  59. package/dist-server/service/activity/activity-type.js.map +1 -1
  60. package/dist-server/service/activity/activity.js +19 -1
  61. package/dist-server/service/activity/activity.js.map +1 -1
  62. package/dist-server/service/activity-approval/activity-approval.js +1 -1
  63. package/dist-server/service/activity-approval/activity-approval.js.map +1 -1
  64. package/dist-server/service/activity-instance/activity-instance-mutation.js +0 -29
  65. package/dist-server/service/activity-instance/activity-instance-mutation.js.map +1 -1
  66. package/dist-server/tsconfig.tsbuildinfo +1 -1
  67. package/helps/worklist/worklist-concept.md +69 -0
  68. package/package.json +9 -9
  69. package/server/controllers/activity-approval/_abort.ts +20 -0
  70. package/server/controllers/activity-approval/abort.ts +44 -0
  71. package/server/controllers/activity-approval/approve.ts +13 -0
  72. package/server/controllers/activity-approval/delegate.ts +13 -0
  73. package/server/controllers/activity-approval/reject.ts +13 -0
  74. package/server/controllers/activity-instance/abort.ts +46 -2
  75. package/server/controllers/activity-instance/assign.ts +17 -1
  76. package/server/controllers/activity-instance/end.ts +45 -2
  77. package/server/controllers/activity-instance/index.ts +0 -4
  78. package/server/controllers/activity-instance/pick.ts +17 -1
  79. package/server/controllers/activity-instance/post.ts +13 -0
  80. package/server/controllers/activity-thread/_abort.ts +43 -0
  81. package/server/controllers/activity-thread/abort.ts +20 -10
  82. package/server/controllers/activity-thread/delegate.ts +13 -0
  83. package/server/controllers/activity-thread/end.ts +17 -0
  84. package/server/controllers/activity-thread/index.ts +0 -2
  85. package/server/controllers/activity-thread/restart.ts +14 -0
  86. package/server/controllers/activity-thread/save.ts +18 -0
  87. package/server/controllers/activity-thread/start.ts +13 -0
  88. package/server/controllers/activity-thread/submit.ts +13 -0
  89. package/server/service/activity/activity-type.ts +7 -1
  90. package/server/service/activity/activity.ts +19 -0
  91. package/server/service/activity-approval/activity-approval.ts +1 -1
  92. package/server/service/activity-instance/activity-instance-mutation.ts +1 -23
  93. package/dist-client/components/activity-search-keys-input.d.ts +0 -17
  94. package/dist-client/components/activity-search-keys-input.js +0 -173
  95. package/dist-client/components/activity-search-keys-input.js.map +0 -1
  96. package/dist-client/components/grist-editor-activity-search-key.d.ts +0 -12
  97. package/dist-client/components/grist-editor-activity-search-key.js +0 -70
  98. package/dist-client/components/grist-editor-activity-search-key.js.map +0 -1
  99. package/dist-client/components/popup-activity-search-keys-input.d.ts +0 -17
  100. package/dist-client/components/popup-activity-search-keys-input.js +0 -177
  101. package/dist-client/components/popup-activity-search-keys-input.js.map +0 -1
  102. package/dist-client/pages/activity-thread/activity-thread-view.d.ts +0 -11
  103. package/dist-client/pages/activity-thread/activity-thread-view.js +0 -103
  104. package/dist-client/pages/activity-thread/activity-thread-view.js.map +0 -1
  105. package/dist-client/pages/todo/approval-waiting-list-page.d.ts +0 -40
  106. package/dist-client/pages/todo/approval-waiting-list-page.js +0 -361
  107. package/dist-client/pages/todo/approval-waiting-list-page.js.map +0 -1
  108. package/dist-client/pages/todo/assigned-list-page.d.ts +0 -36
  109. package/dist-client/pages/todo/assigned-list-page.js +0 -266
  110. package/dist-client/pages/todo/assigned-list-page.js.map +0 -1
  111. package/dist-client/types/domain.d.ts +0 -16
  112. package/dist-client/types/domain.js +0 -3
  113. package/dist-client/types/domain.js.map +0 -1
  114. package/dist-client/types/privilege.d.ts +0 -16
  115. package/dist-client/types/privilege.js +0 -3
  116. package/dist-client/types/privilege.js.map +0 -1
  117. package/dist-client/types/role.d.ts +0 -19
  118. package/dist-client/types/role.js +0 -3
  119. package/dist-client/types/role.js.map +0 -1
  120. package/dist-client/types/user.d.ts +0 -18
  121. package/dist-client/types/user.js +0 -12
  122. package/dist-client/types/user.js.map +0 -1
  123. package/dist-client/types.d.ts +0 -25
  124. package/dist-client/types.js +0 -38
  125. package/dist-client/types.js.map +0 -1
  126. package/dist-server/controllers/activity-installation/callback-registry.js +0 -21
  127. package/dist-server/controllers/activity-installation/callback-registry.js.map +0 -1
  128. package/dist-server/controllers/activity-installation-controller.js +0 -17
  129. package/dist-server/controllers/activity-installation-controller.js.map +0 -1
  130. package/dist-server/controllers/call-webhook.js +0 -41
  131. package/dist-server/controllers/call-webhook.js.map +0 -1
  132. package/dist-server/service/activity-key-set/activity-key-item-type.js +0 -50
  133. package/dist-server/service/activity-key-set/activity-key-item-type.js.map +0 -1
  134. package/dist-server/service/activity-key-set/activity-key-set-mutation.js +0 -127
  135. package/dist-server/service/activity-key-set/activity-key-set-mutation.js.map +0 -1
  136. package/dist-server/service/activity-key-set/activity-key-set-query.js +0 -97
  137. package/dist-server/service/activity-key-set/activity-key-set-query.js.map +0 -1
  138. package/dist-server/service/activity-key-set/activity-key-set-type.js +0 -74
  139. package/dist-server/service/activity-key-set/activity-key-set-type.js.map +0 -1
  140. package/dist-server/service/activity-key-set/activity-key-set.js +0 -86
  141. package/dist-server/service/activity-key-set/activity-key-set.js.map +0 -1
  142. package/dist-server/service/activity-key-set/index.js +0 -9
  143. package/dist-server/service/activity-key-set/index.js.map +0 -1
  144. package/server/controllers/activity-instance/adjust.ts +0 -25
  145. package/server/controllers/activity-instance/bid.ts +0 -52
  146. package/server/controllers/activity-instance/delegate.ts +0 -56
  147. package/server/controllers/activity-instance/start.ts +0 -20
  148. package/server/controllers/activity-instance/terminate.ts +0 -39
  149. package/server/controllers/activity-thread/adjust.ts +0 -40
  150. package/server/controllers/activity-thread/terminate.ts +0 -37
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports._abort = void 0;
4
+ const activity_approval_1 = require("../../service/activity-approval/activity-approval");
5
+ async function _abort({ activityApproval, comment }, context) {
6
+ const { domain, user, tx } = context.state;
7
+ var result = await tx.getRepository(activity_approval_1.ActivityApproval).save(Object.assign(Object.assign({}, activityApproval), { judgment: activity_approval_1.ActivityApprovalJudgment.Aborted, comment, transaction: 'abort', updater: user, terminatedAt: new Date(), terminator: user }));
8
+ return result;
9
+ }
10
+ exports._abort = _abort;
11
+ //# sourceMappingURL=_abort.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"_abort.js","sourceRoot":"","sources":["../../../server/controllers/activity-approval/_abort.ts"],"names":[],"mappings":";;;AAAA,yFAA8G;AAEvG,KAAK,UAAU,MAAM,CAC1B,EAAE,gBAAgB,EAAE,OAAO,EAA2D,EACtF,OAAwB;IAExB,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,KAAK,CAAA;IAE1C,IAAI,MAAM,GAAG,MAAM,EAAE,CAAC,aAAa,CAAC,oCAAgB,CAAC,CAAC,IAAI,iCACrD,gBAAgB,KACnB,QAAQ,EAAE,4CAAwB,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,OAAO,MAAM,CAAA;AACf,CAAC;AAjBD,wBAiBC","sourcesContent":["import { ActivityApproval, ActivityApprovalJudgment } from '../../service/activity-approval/activity-approval'\n\nexport async function _abort(\n { activityApproval, comment }: { activityApproval: ActivityApproval; comment: string },\n context: ResolverContext\n): Promise<ActivityApproval> {\n const { domain, 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 return result\n}\n"]}
@@ -0,0 +1,34 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.abort = void 0;
4
+ const activity_approval_1 = require("../../service/activity-approval/activity-approval");
5
+ const common_1 = require("../common");
6
+ const _abort_1 = require("./_abort");
7
+ async function abort({ id, comment }, context) {
8
+ const { domain, user, tx } = context.state;
9
+ var repository = tx.getRepository(activity_approval_1.ActivityApproval);
10
+ var activityApproval = await repository.findOne({
11
+ where: { domain: { id: domain.id }, id },
12
+ relations: ['activityThread']
13
+ });
14
+ if (!activityApproval) {
15
+ throw new Error(context.t('error.activity-approval not found', {
16
+ activityApproval: id
17
+ }));
18
+ }
19
+ /*
20
+ Prerequisite of Abortion
21
+ - Previous judgement should be 'pending'
22
+ */
23
+ if (activityApproval.judgment !== activity_approval_1.ActivityApprovalJudgment.Pending) {
24
+ throw new Error(context.t(`error.activity-approval is already terminated`, {
25
+ activityInstance: id,
26
+ actual: activityApproval.judgment
27
+ }));
28
+ }
29
+ var result = await (0, _abort_1._abort)({ activityApproval, comment }, context);
30
+ await (0, common_1.updateActivityInstanceState)(activityApproval.activityThread.activityInstanceId, context);
31
+ return result;
32
+ }
33
+ exports.abort = abort;
34
+ //# sourceMappingURL=abort.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"abort.js","sourceRoot":"","sources":["../../../server/controllers/activity-approval/abort.ts"],"names":[],"mappings":";;;AAAA,yFAA8G;AAC9G,sCAAuD;AACvD,qCAAiC;AAE1B,KAAK,UAAU,KAAK,CACzB,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,oCAAgB,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;QACrB,MAAM,IAAI,KAAK,CACb,OAAO,CAAC,CAAC,CAAC,mCAAmC,EAAE;YAC7C,gBAAgB,EAAE,EAAE;SACrB,CAAC,CACH,CAAA;KACF;IAED;;;MAGE;IACF,IAAI,gBAAgB,CAAC,QAAQ,KAAK,4CAAwB,CAAC,OAAO,EAAE;QAClE,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;KACF;IAED,IAAI,MAAM,GAAG,MAAM,IAAA,eAAM,EAAC,EAAE,gBAAgB,EAAE,OAAO,EAAE,EAAE,OAAO,CAAC,CAAA;IAEjE,MAAM,IAAA,oCAA2B,EAAC,gBAAgB,CAAC,cAAc,CAAC,kBAAkB,EAAE,OAAO,CAAC,CAAA;IAE9F,OAAO,MAAM,CAAA;AACf,CAAC;AAvCD,sBAuCC","sourcesContent":["import { ActivityApproval, ActivityApprovalJudgment } from '../../service/activity-approval/activity-approval'\nimport { updateActivityInstanceState } from '../common'\nimport { _abort } from './_abort'\n\nexport async function abort(\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 /* \n Prerequisite of Abortion\n - Previous judgement 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 _abort({ activityApproval, comment }, context)\n\n await updateActivityInstanceState(activityApproval.activityThread.activityInstanceId, context)\n\n return result\n}\n"]}
@@ -16,6 +16,16 @@ async function approve({ id, comment }, context) {
16
16
  activityApproval: id
17
17
  }));
18
18
  }
19
+ /*
20
+ Prerequisite of Approval
21
+ - Previous judgement should be 'pending'
22
+ */
23
+ if (activityApproval.judgment !== activity_approval_1.ActivityApprovalJudgment.Pending) {
24
+ throw new Error(context.t(`error.activity-approval is already terminated`, {
25
+ activityInstance: id,
26
+ actual: activityApproval.judgment
27
+ }));
28
+ }
19
29
  const activityThread = await tx.getRepository(activity_thread_1.ActivityThread).findOne({
20
30
  where: { domain: { id: domain.id }, id: activityApproval.activityThreadId },
21
31
  relations: ['activityInstance']
@@ -1 +1 @@
1
- {"version":3,"file":"approve.js","sourceRoot":"","sources":["../../../server/controllers/activity-approval/approve.ts"],"names":[],"mappings":"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","sourcesContent":["import { getSystemUserFromOrgMemberItem } from '../../controllers/common'\nimport { ActivityThread, ActivityThreadStatus } from '../../service/activity-thread/activity-thread'\nimport { ActivityApproval, ActivityApprovalJudgment } from '../../service/activity-approval/activity-approval'\nimport { ApprovalLineItem } from '@things-factory/organization'\nimport { updateActivityInstanceState } from '../common'\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 const 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 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 order: order + 1,\n judgment: ActivityApprovalJudgment.Pending,\n transaction: 'escalate',\n approver: approverUser,\n creator: user,\n updater: user\n })\n\n await tx.getRepository(ActivityThread).save({\n ...activityThread,\n transaction: 'escalate',\n state: ActivityThreadStatus.Escalated,\n updater: user\n })\n } else {\n await tx.getRepository(ActivityThread).save({\n ...activityThread,\n transaction: 'approve',\n state: ActivityThreadStatus.Ended,\n terminatedAt: new Date(),\n terminator: user,\n updater: user\n })\n }\n\n await updateActivityInstanceState(activityThread.activityInstanceId, context)\n\n return result\n}\n"]}
1
+ {"version":3,"file":"approve.js","sourceRoot":"","sources":["../../../server/controllers/activity-approval/approve.ts"],"names":[],"mappings":";;;AAAA,qDAAyE;AACzE,mFAAoG;AACpG,yFAA8G;AAE9G,sCAAuD;AAEhD,KAAK,UAAU,OAAO,CAC3B,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,oCAAgB,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;KACzC,CAAC,CAAA;IAEF,IAAI,CAAC,gBAAgB,EAAE;QACrB,MAAM,IAAI,KAAK,CACb,OAAO,CAAC,CAAC,CAAC,mCAAmC,EAAE;YAC7C,gBAAgB,EAAE,EAAE;SACrB,CAAC,CACH,CAAA;KACF;IAED;;;MAGE;IACF,IAAI,gBAAgB,CAAC,QAAQ,KAAK,4CAAwB,CAAC,OAAO,EAAE;QAClE,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;KACF;IAED,MAAM,cAAc,GAAG,MAAM,EAAE,CAAC,aAAa,CAAC,gCAAc,CAAC,CAAC,OAAO,CAAC;QACpE,KAAK,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,gBAAgB,CAAC,gBAAgB,EAAE;QAC3E,SAAS,EAAE,CAAC,kBAAkB,CAAC;KAChC,CAAC,CAAA;IAEF,MAAM,YAAY,GAAuB,cAAc,CAAC,gBAAgB,CAAC,YAAY,CAAA;IACrF,MAAM,KAAK,GAAG,gBAAgB,CAAC,KAAK,CAAA;IAEpC,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,aAAa,CAAC,oCAAgB,CAAC,CAAC,IAAI,iCACvD,gBAAgB,KACnB,QAAQ,EAAE,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,4CAAwB,CAAC,SAAS,CAAC,CAAC,CAAC,4CAAwB,CAAC,QAAQ,EACtG,OAAO,EACP,WAAW,EAAE,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,EACzD,OAAO,EAAE,IAAI,EACb,YAAY,EAAE,IAAI,IAAI,EAAE,EACxB,UAAU,EAAE,IAAI,IAChB,CAAA;IAEF,IAAI,YAAY,IAAI,YAAY,CAAC,MAAM,GAAG,KAAK,EAAE;QAC/C,sCAAsC;QACtC,IAAI,YAAY,GAAG,MAAM,IAAA,uCAA8B,EAAC,YAAY,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC,CAAA;QAErF,IAAI,CAAC,YAAY,EAAE;YACjB,MAAM,yDAAyD,CAAA;SAChE;QAED,MAAM,EAAE,CAAC,aAAa,CAAC,oCAAgB,CAAC,CAAC,IAAI,CAAC;YAC5C,MAAM;YACN,cAAc;YACd,KAAK,EAAE,KAAK,GAAG,CAAC;YAChB,QAAQ,EAAE,4CAAwB,CAAC,OAAO;YAC1C,WAAW,EAAE,UAAU;YACvB,QAAQ,EAAE,YAAY;YACtB,OAAO,EAAE,IAAI;YACb,OAAO,EAAE,IAAI;SACd,CAAC,CAAA;QAEF,MAAM,EAAE,CAAC,aAAa,CAAC,gCAAc,CAAC,CAAC,IAAI,iCACtC,cAAc,KACjB,WAAW,EAAE,UAAU,EACvB,KAAK,EAAE,sCAAoB,CAAC,SAAS,EACrC,OAAO,EAAE,IAAI,IACb,CAAA;KACH;SAAM;QACL,MAAM,EAAE,CAAC,aAAa,CAAC,gCAAc,CAAC,CAAC,IAAI,iCACtC,cAAc,KACjB,WAAW,EAAE,SAAS,EACtB,KAAK,EAAE,sCAAoB,CAAC,KAAK,EACjC,YAAY,EAAE,IAAI,IAAI,EAAE,EACxB,UAAU,EAAE,IAAI,EAChB,OAAO,EAAE,IAAI,IACb,CAAA;KACH;IAED,MAAM,IAAA,oCAA2B,EAAC,cAAc,CAAC,kBAAkB,EAAE,OAAO,CAAC,CAAA;IAE7E,OAAO,MAAM,CAAA;AACf,CAAC;AA1FD,0BA0FC","sourcesContent":["import { getSystemUserFromOrgMemberItem } from '../../controllers/common'\nimport { ActivityThread, ActivityThreadStatus } from '../../service/activity-thread/activity-thread'\nimport { ActivityApproval, ActivityApprovalJudgment } from '../../service/activity-approval/activity-approval'\nimport { ApprovalLineItem } from '@things-factory/organization'\nimport { updateActivityInstanceState } from '../common'\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 /* \n Prerequisite of Approval\n - Previous judgement 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 const 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 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 order: order + 1,\n judgment: ActivityApprovalJudgment.Pending,\n transaction: 'escalate',\n approver: approverUser,\n creator: user,\n updater: user\n })\n\n await tx.getRepository(ActivityThread).save({\n ...activityThread,\n transaction: 'escalate',\n state: ActivityThreadStatus.Escalated,\n updater: user\n })\n } else {\n await tx.getRepository(ActivityThread).save({\n ...activityThread,\n transaction: 'approve',\n state: ActivityThreadStatus.Ended,\n terminatedAt: new Date(),\n terminator: user,\n updater: user\n })\n }\n\n await updateActivityInstanceState(activityThread.activityInstanceId, context)\n\n return result\n}\n"]}
@@ -14,6 +14,16 @@ async function delegate({ id, to, comment }, context) {
14
14
  activityApproval: id
15
15
  }));
16
16
  }
17
+ /*
18
+ Prerequisite of Delegation
19
+ - Previous judgement should be 'pending'
20
+ */
21
+ if (activityApproval.judgment !== activity_approval_1.ActivityApprovalJudgment.Pending) {
22
+ throw new Error(context.t(`error.activity-approval is already terminated`, {
23
+ activityInstance: id,
24
+ actual: activityApproval.judgment
25
+ }));
26
+ }
17
27
  /* TODO user validation .. */
18
28
  const approver = await tx.getRepository(auth_base_1.User).findOneBy({ id: to.id });
19
29
  /* create new delegated approval */
@@ -1 +1 @@
1
- {"version":3,"file":"delegate.js","sourceRoot":"","sources":["../../../server/controllers/activity-approval/delegate.ts"],"names":[],"mappings":";;;AAAA,yDAAgD;AAEhD,yFAA8G;AAEvG,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,oCAAgB,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;KACzC,CAAC,CAAA;IAEF,IAAI,CAAC,gBAAgB,EAAE;QACrB,MAAM,IAAI,KAAK,CACb,OAAO,CAAC,CAAC,CAAC,mCAAmC,EAAE;YAC7C,gBAAgB,EAAE,EAAE;SACrB,CAAC,CACH,CAAA;KACF;IAED,6BAA6B;IAC7B,MAAM,QAAQ,GAAG,MAAM,EAAE,CAAC,aAAa,CAAC,gBAAI,CAAC,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,CAAA;IAEtE,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,OAAO,MAAM,UAAU,CAAC,IAAI,iCACvB,gBAAgB,KACnB,QAAQ,EAAE,4CAAwB,CAAC,SAAS,EAC5C,OAAO,EACP,WAAW,EAAE,UAAU,EACvB,OAAO,EAAE,IAAI,EACb,UAAU,EAAE,IAAI,EAChB,YAAY,EAAE,IAAI,IAAI,EAAE,IACxB,CAAA;AACJ,CAAC;AA3CD,4BA2CC","sourcesContent":["import { User } from '@things-factory/auth-base'\nimport { ObjectRef } from '@things-factory/shell'\nimport { ActivityApproval, ActivityApprovalJudgment } from '../../service/activity-approval/activity-approval'\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 })\n\n if (!activityApproval) {\n throw new Error(\n context.t('error.activity-approval not found', {\n activityApproval: id\n })\n )\n }\n\n /* TODO user validation .. */\n const approver = await tx.getRepository(User).findOneBy({ id: to.id })\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 return await repository.save({\n ...activityApproval,\n judgment: ActivityApprovalJudgment.Delegated,\n comment,\n transaction: 'delegate',\n updater: user,\n terminator: user,\n terminatedAt: new Date()\n })\n}\n"]}
1
+ {"version":3,"file":"delegate.js","sourceRoot":"","sources":["../../../server/controllers/activity-approval/delegate.ts"],"names":[],"mappings":";;;AAAA,yDAAgD;AAEhD,yFAA8G;AAEvG,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,oCAAgB,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;KACzC,CAAC,CAAA;IAEF,IAAI,CAAC,gBAAgB,EAAE;QACrB,MAAM,IAAI,KAAK,CACb,OAAO,CAAC,CAAC,CAAC,mCAAmC,EAAE;YAC7C,gBAAgB,EAAE,EAAE;SACrB,CAAC,CACH,CAAA;KACF;IAED;;;MAGE;IACF,IAAI,gBAAgB,CAAC,QAAQ,KAAK,4CAAwB,CAAC,OAAO,EAAE;QAClE,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;KACF;IAED,6BAA6B;IAC7B,MAAM,QAAQ,GAAG,MAAM,EAAE,CAAC,aAAa,CAAC,gBAAI,CAAC,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,CAAA;IAEtE,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,OAAO,MAAM,UAAU,CAAC,IAAI,iCACvB,gBAAgB,KACnB,QAAQ,EAAE,4CAAwB,CAAC,SAAS,EAC5C,OAAO,EACP,WAAW,EAAE,UAAU,EACvB,OAAO,EAAE,IAAI,EACb,UAAU,EAAE,IAAI,EAChB,YAAY,EAAE,IAAI,IAAI,EAAE,IACxB,CAAA;AACJ,CAAC;AAxDD,4BAwDC","sourcesContent":["import { User } from '@things-factory/auth-base'\nimport { ObjectRef } from '@things-factory/shell'\nimport { ActivityApproval, ActivityApprovalJudgment } from '../../service/activity-approval/activity-approval'\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 })\n\n if (!activityApproval) {\n throw new Error(\n context.t('error.activity-approval not found', {\n activityApproval: id\n })\n )\n }\n\n /* \n Prerequisite of Delegation\n - Previous judgement 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 })\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 return await repository.save({\n ...activityApproval,\n judgment: ActivityApprovalJudgment.Delegated,\n comment,\n transaction: 'delegate',\n updater: user,\n terminator: user,\n terminatedAt: new Date()\n })\n}\n"]}
@@ -16,6 +16,16 @@ async function reject({ id, comment }, context) {
16
16
  activityApproval: id
17
17
  }));
18
18
  }
19
+ /*
20
+ Prerequisite of Rejection
21
+ - Previous judgement should be 'pending'
22
+ */
23
+ if (activityApproval.judgment !== activity_approval_1.ActivityApprovalJudgment.Pending) {
24
+ throw new Error(context.t(`error.activity-approval is already terminated`, {
25
+ activityInstance: id,
26
+ actual: activityApproval.judgment
27
+ }));
28
+ }
19
29
  var result = await repository.save(Object.assign(Object.assign({}, activityApproval), { judgment: activity_approval_1.ActivityApprovalJudgment.Rejected, comment, transaction: 'reject', updater: user, terminatedAt: new Date(), terminator: user }));
20
30
  await tx.getRepository(activity_thread_1.ActivityThread).save(Object.assign(Object.assign({}, activityApproval.activityThread), { transaction: 'reject', state: activity_thread_1.ActivityThreadStatus.Rejected, updater: user }));
21
31
  await (0, common_1.updateActivityInstanceState)(activityApproval.activityThread.activityInstanceId, context);
@@ -1 +1 @@
1
- {"version":3,"file":"reject.js","sourceRoot":"","sources":["../../../server/controllers/activity-approval/reject.ts"],"names":[],"mappings":";;;AAAA,mFAAoG;AACpG,yFAA8G;AAC9G,sCAAuD;AAEhD,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,oCAAgB,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;QACrB,MAAM,IAAI,KAAK,CACb,OAAO,CAAC,CAAC,CAAC,mCAAmC,EAAE;YAC7C,gBAAgB,EAAE,EAAE;SACrB,CAAC,CACH,CAAA;KACF;IAED,IAAI,MAAM,GAAG,MAAM,UAAU,CAAC,IAAI,iCAC7B,gBAAgB,KACnB,QAAQ,EAAE,4CAAwB,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,MAAM,EAAE,CAAC,aAAa,CAAC,gCAAc,CAAC,CAAC,IAAI,iCACtC,gBAAgB,CAAC,cAAc,KAClC,WAAW,EAAE,QAAQ,EACrB,KAAK,EAAE,sCAAoB,CAAC,QAAQ,EACpC,OAAO,EAAE,IAAI,IACb,CAAA;IAEF,MAAM,IAAA,oCAA2B,EAAC,gBAAgB,CAAC,cAAc,CAAC,kBAAkB,EAAE,OAAO,CAAC,CAAA;IAE9F,OAAO,MAAM,CAAA;AACf,CAAC;AAzCD,wBAyCC","sourcesContent":["import { ActivityThread, ActivityThreadStatus } from '../../service/activity-thread/activity-thread'\nimport { ActivityApproval, ActivityApprovalJudgment } from '../../service/activity-approval/activity-approval'\nimport { updateActivityInstanceState } from '../common'\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 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 await tx.getRepository(ActivityThread).save({\n ...activityApproval.activityThread,\n transaction: 'reject',\n state: ActivityThreadStatus.Rejected,\n updater: user\n })\n\n await updateActivityInstanceState(activityApproval.activityThread.activityInstanceId, context)\n\n return result\n}\n"]}
1
+ {"version":3,"file":"reject.js","sourceRoot":"","sources":["../../../server/controllers/activity-approval/reject.ts"],"names":[],"mappings":";;;AAAA,mFAAoG;AACpG,yFAA8G;AAC9G,sCAAuD;AAEhD,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,oCAAgB,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;QACrB,MAAM,IAAI,KAAK,CACb,OAAO,CAAC,CAAC,CAAC,mCAAmC,EAAE;YAC7C,gBAAgB,EAAE,EAAE;SACrB,CAAC,CACH,CAAA;KACF;IAED;;;MAGE;IACF,IAAI,gBAAgB,CAAC,QAAQ,KAAK,4CAAwB,CAAC,OAAO,EAAE;QAClE,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;KACF;IAED,IAAI,MAAM,GAAG,MAAM,UAAU,CAAC,IAAI,iCAC7B,gBAAgB,KACnB,QAAQ,EAAE,4CAAwB,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,MAAM,EAAE,CAAC,aAAa,CAAC,gCAAc,CAAC,CAAC,IAAI,iCACtC,gBAAgB,CAAC,cAAc,KAClC,WAAW,EAAE,QAAQ,EACrB,KAAK,EAAE,sCAAoB,CAAC,QAAQ,EACpC,OAAO,EAAE,IAAI,IACb,CAAA;IAEF,MAAM,IAAA,oCAA2B,EAAC,gBAAgB,CAAC,cAAc,CAAC,kBAAkB,EAAE,OAAO,CAAC,CAAA;IAE9F,OAAO,MAAM,CAAA;AACf,CAAC;AAtDD,wBAsDC","sourcesContent":["import { ActivityThread, ActivityThreadStatus } from '../../service/activity-thread/activity-thread'\nimport { ActivityApproval, ActivityApprovalJudgment } from '../../service/activity-approval/activity-approval'\nimport { updateActivityInstanceState } from '../common'\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 /* \n Prerequisite of Rejection\n - Previous judgement 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 await tx.getRepository(ActivityThread).save({\n ...activityApproval.activityThread,\n transaction: 'reject',\n state: ActivityThreadStatus.Rejected,\n updater: user\n })\n\n await updateActivityInstanceState(activityApproval.activityThread.activityInstanceId, context)\n\n return result\n}\n"]}
@@ -1,20 +1,54 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.abort = void 0;
4
+ const activity_thread_1 = require("../../service/activity-thread/activity-thread");
4
5
  const activity_instance_1 = require("../../service/activity-instance/activity-instance");
5
6
  const common_1 = require("../common");
7
+ const _abort_1 = require("../activity-thread/_abort");
6
8
  async function abort({ id, reason }, context) {
7
9
  const { domain, user, tx } = context.state;
8
10
  var repository = tx.getRepository(activity_instance_1.ActivityInstance);
9
11
  var activityInstance = await repository.findOne({
10
12
  where: { domain: { id: domain.id }, id },
11
- relations: ['domain', 'activity', 'assigneeRole', 'supervisoryRole', 'updater', 'creator', 'starter', 'terminator']
13
+ relations: [
14
+ 'domain',
15
+ 'activity',
16
+ 'activityThreads',
17
+ 'assigneeRole',
18
+ 'supervisoryRole',
19
+ 'updater',
20
+ 'creator',
21
+ 'starter',
22
+ 'terminator'
23
+ ]
12
24
  });
13
25
  if (!activityInstance) {
14
26
  throw new Error(context.t('error.activity-instance not found', {
15
27
  activityInstance: id
16
28
  }));
17
29
  }
30
+ /*
31
+ Prerequisites for a Task to Be Aborted.
32
+ - The previous state of the task must not be End or Aborted.
33
+ */
34
+ if (activityInstance.state == activity_instance_1.ActivityInstanceStatus.Aborted ||
35
+ activityInstance.state == activity_instance_1.ActivityInstanceStatus.Ended) {
36
+ throw new Error(context.t(`error.activity-instance is already terminated`, {
37
+ id,
38
+ state: activityInstance.state
39
+ }));
40
+ }
41
+ /*
42
+ Actions to be processed when a task is aborted
43
+ - All related activity threads must be aborted.
44
+ */
45
+ const TERMINATED = [activity_thread_1.ActivityThreadStatus.Aborted, activity_thread_1.ActivityThreadStatus.Delegated, activity_thread_1.ActivityThreadStatus.Ended];
46
+ for (let activityThread of activityInstance.activityThreads) {
47
+ if (TERMINATED.includes(activityThread.state)) {
48
+ continue;
49
+ }
50
+ await (0, _abort_1._abort)({ activityThread, reason }, context);
51
+ }
18
52
  return await repository.save(Object.assign(Object.assign(Object.assign(Object.assign({}, activityInstance), { reason }), (await (0, common_1.evalActivityInstanceState)(id, context))), { transaction: 'abort', updater: user, terminatedAt: new Date(), terminator: user }));
19
53
  }
20
54
  exports.abort = abort;
@@ -1 +1 @@
1
- {"version":3,"file":"abort.js","sourceRoot":"","sources":["../../../server/controllers/activity-instance/abort.ts"],"names":[],"mappings":";;;AAAA,yFAAoF;AACpF,sCAAqD;AAE9C,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,oCAAgB,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,UAAU,EAAE,cAAc,EAAE,iBAAiB,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,YAAY,CAAC;KACpH,CAAC,CAAA;IAEF,IAAI,CAAC,gBAAgB,EAAE;QACrB,MAAM,IAAI,KAAK,CACb,OAAO,CAAC,CAAC,CAAC,mCAAmC,EAAE;YAC7C,gBAAgB,EAAE,EAAE;SACrB,CAAC,CACH,CAAA;KACF;IAED,OAAO,MAAM,UAAU,CAAC,IAAI,6DACvB,gBAAgB,KACnB,MAAM,KACH,CAAC,MAAM,IAAA,kCAAyB,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;AA9BD,sBA8BC","sourcesContent":["import { ActivityInstance } from '../../service/activity-instance/activity-instance'\nimport { evalActivityInstanceState } from '../common'\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: ['domain', 'activity', 'assigneeRole', 'supervisoryRole', 'updater', 'creator', 'starter', 'terminator']\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 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":";;;AAAA,mFAAoF;AACpF,yFAA4G;AAC5G,sCAAqD;AAErD,sDAAyE;AAElE,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,oCAAgB,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;QACrB,MAAM,IAAI,KAAK,CACb,OAAO,CAAC,CAAC,CAAC,mCAAmC,EAAE;YAC7C,gBAAgB,EAAE,EAAE;SACrB,CAAC,CACH,CAAA;KACF;IAED;;;MAGE;IACF,IACE,gBAAgB,CAAC,KAAK,IAAI,0CAAsB,CAAC,OAAO;QACxD,gBAAgB,CAAC,KAAK,IAAI,0CAAsB,CAAC,KAAK,EACtD;QACA,MAAM,IAAI,KAAK,CACb,OAAO,CAAC,CAAC,CAAC,+CAA+C,EAAE;YACzD,EAAE;YACF,KAAK,EAAE,gBAAgB,CAAC,KAAK;SAC9B,CAAC,CACH,CAAA;KACF;IAED;;;MAGE;IAEF,MAAM,UAAU,GAAG,CAAC,sCAAoB,CAAC,OAAO,EAAE,sCAAoB,CAAC,SAAS,EAAE,sCAAoB,CAAC,KAAK,CAAC,CAAA;IAE7G,KAAK,IAAI,cAAc,IAAI,gBAAgB,CAAC,eAAe,EAAE;QAC3D,IAAI,UAAU,CAAC,QAAQ,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE;YAC7C,SAAQ;SACT;QAED,MAAM,IAAA,eAAmB,EAAC,EAAE,cAAc,EAAE,MAAM,EAAE,EAAE,OAAO,CAAC,CAAA;KAC/D;IAED,OAAO,MAAM,UAAU,CAAC,IAAI,6DACvB,gBAAgB,KACnB,MAAM,KACH,CAAC,MAAM,IAAA,kCAAyB,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;AAvED,sBAuEC","sourcesContent":["import { ActivityThreadStatus } from '../../service/activity-thread/activity-thread'\nimport { ActivityInstance, ActivityInstanceStatus } from '../../service/activity-instance/activity-instance'\nimport { evalActivityInstanceState } from '../common'\n\nimport { _abort as abortActivityThread } from '../activity-thread/_abort'\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.Delegated, 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"]}
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.adjust = void 0;
4
+ const activity_instance_1 = require("../../service/activity-instance/activity-instance");
5
+ const common_1 = require("../common");
6
+ async function adjust(id, patch, context) {
7
+ const { domain, user, tx } = context.state;
8
+ const repository = tx.getRepository(activity_instance_1.ActivityInstance);
9
+ const activityInstance = await repository.findOne({
10
+ where: { domain: { id: domain.id }, id },
11
+ relations: ['domain', 'activity', 'assigneeRole', 'supervisoryRole', 'updater', 'creator', 'starter', 'terminator']
12
+ });
13
+ return await repository.save(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({}, activityInstance), patch), { transaction: 'adjust' }), (await (0, common_1.evalActivityInstanceState)(id, context))), { updater: user }));
14
+ }
15
+ exports.adjust = adjust;
16
+ //# sourceMappingURL=adjust-xxx.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"adjust-xxx.js","sourceRoot":"","sources":["../../../server/controllers/activity-instance/adjust-xxx.ts"],"names":[],"mappings":";;;AAAA,yFAAoF;AAEpF,sCAAqD;AAE9C,KAAK,UAAU,MAAM,CAC1B,EAAU,EACV,KAA4B,EAC5B,OAAwB;IAExB,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,KAAK,CAAA;IAE1C,MAAM,UAAU,GAAG,EAAE,CAAC,aAAa,CAAC,oCAAgB,CAAC,CAAA;IACrD,MAAM,gBAAgB,GAAG,MAAM,UAAU,CAAC,OAAO,CAAC;QAChD,KAAK,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE;QACxC,SAAS,EAAE,CAAC,QAAQ,EAAE,UAAU,EAAE,cAAc,EAAE,iBAAiB,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,YAAY,CAAC;KACpH,CAAC,CAAA;IAEF,OAAO,MAAM,UAAU,CAAC,IAAI,2EACvB,gBAAgB,GAChB,KAAK,KACR,WAAW,EAAE,QAAQ,KAClB,CAAC,MAAM,IAAA,kCAAyB,EAAC,EAAE,EAAE,OAAO,CAAC,CAAC,KACjD,OAAO,EAAE,IAAI,IACb,CAAA;AACJ,CAAC;AApBD,wBAoBC","sourcesContent":["import { ActivityInstance } from '../../service/activity-instance/activity-instance'\nimport { ActivityInstancePatch } from '../../service/activity-instance/activity-instance-type'\nimport { evalActivityInstanceState } from '../common'\n\nexport async function adjust(\n id: string,\n patch: ActivityInstancePatch,\n context: ResolverContext\n): Promise<ActivityInstance> {\n const { domain, user, tx } = context.state\n\n const repository = tx.getRepository(ActivityInstance)\n const activityInstance = await repository.findOne({\n where: { domain: { id: domain.id }, id },\n relations: ['domain', 'activity', 'assigneeRole', 'supervisoryRole', 'updater', 'creator', 'starter', 'terminator']\n })\n\n return await repository.save({\n ...activityInstance,\n ...patch,\n transaction: 'adjust',\n ...(await evalActivityInstanceState(id, context)),\n updater: user\n })\n}\n"]}
@@ -17,6 +17,17 @@ async function assign({ id, assignees, reason, dueAt }, context) {
17
17
  activityInstance: id
18
18
  }));
19
19
  }
20
+ /*
21
+ Prerequisites for a Task to Be Assigned.
22
+ - The previous state of the task must not be Assigned.
23
+ */
24
+ if (activityInstance.state !== activity_instance_1.ActivityInstanceStatus.Posted &&
25
+ activityInstance.state !== activity_instance_1.ActivityInstanceStatus.PendingAssignment) {
26
+ throw new Error(context.t(`error.activity-instance should not be assigned`, {
27
+ id,
28
+ actual: activityInstance.state
29
+ }));
30
+ }
20
31
  if (dueAt) {
21
32
  activityInstance.dueAt = dueAt;
22
33
  }
@@ -1 +1 @@
1
- {"version":3,"file":"assign.js","sourceRoot":"","sources":["../../../server/controllers/activity-instance/assign.ts"],"names":[],"mappings":";;;AAAA,qCAA4B;AAE5B,yDAAgD;AAEhD,yFAAoF;AACpF,sCAAyD;AAElD,KAAK,UAAU,MAAM,CAC1B,EAAE,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,EAAuE,EACrG,OAAY;IAEZ,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,KAAK,CAAA;IAE1C,MAAM,UAAU,GAAG,EAAE,CAAC,aAAa,CAAC,oCAAgB,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,CAAC,QAAQ,EAAE,UAAU,EAAE,cAAc,EAAE,iBAAiB,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,YAAY,CAAC;KACpH,CAAC,CAAA;IAEF,IAAI,CAAC,gBAAgB,EAAE;QACrB,MAAM,IAAI,KAAK,CACb,OAAO,CAAC,CAAC,CAAC,mCAAmC,EAAE;YAC7C,gBAAgB,EAAE,EAAE;SACrB,CAAC,CACH,CAAA;KACF;IAED,IAAI,KAAK,EAAE;QACT,gBAAgB,CAAC,KAAK,GAAG,KAAK,CAAA;KAC/B;IAED,MAAM,aAAa,GAAG,MAAM,EAAE,CAAC,aAAa,CAAC,gBAAI,CAAC,CAAC,IAAI,CAAC;QACtD,KAAK,EAAE,IAAA,YAAE,EAAC,SAAS,CAAC;KACrB,CAAC,CAAA;IAEF,MAAM,IAAA,sCAA6B,EAAC,QAAQ,EAAE,gBAAgB,EAAE,aAAa,EAAE,OAAO,CAAC,CAAA;IAEvF,OAAO,MAAM,EAAE,CAAC,aAAa,CAAC,oCAAgB,CAAC,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,gBAAgB,CAAC,EAAE,EAAE,CAAC,CAAA;AACxF,CAAC;AAhCD,wBAgCC","sourcesContent":["import { In } from 'typeorm'\n\nimport { User } from '@things-factory/auth-base'\n\nimport { ActivityInstance } from '../../service/activity-instance/activity-instance'\nimport { createActivityThreadsForUsers } from '../common'\n\nexport async function assign(\n { id, assignees, reason, dueAt }: { id: string; assignees?: string[]; reason?: string; dueAt?: Date },\n context: any\n): Promise<ActivityInstance> {\n const { domain, user, tx } = context.state\n\n const repository = tx.getRepository(ActivityInstance)\n\n var activityInstance = await repository.findOne({\n where: { domain: { id: domain.id }, id },\n relations: ['domain', 'activity', 'assigneeRole', 'supervisoryRole', 'updater', 'creator', 'starter', 'terminator']\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 if (dueAt) {\n activityInstance.dueAt = dueAt\n }\n\n const assignedUsers = await tx.getRepository(User).find({\n email: In(assignees)\n })\n\n await createActivityThreadsForUsers('assign', activityInstance, assignedUsers, context)\n\n return await tx.getRepository(ActivityInstance).findOneBy({ id: activityInstance.id })\n}\n"]}
1
+ {"version":3,"file":"assign.js","sourceRoot":"","sources":["../../../server/controllers/activity-instance/assign.ts"],"names":[],"mappings":";;;AAAA,qCAA4B;AAE5B,yDAAgD;AAEhD,yFAA4G;AAC5G,sCAAyD;AAElD,KAAK,UAAU,MAAM,CAC1B,EAAE,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,EAAuE,EACrG,OAAY;IAEZ,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,KAAK,CAAA;IAE1C,MAAM,UAAU,GAAG,EAAE,CAAC,aAAa,CAAC,oCAAgB,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,CAAC,QAAQ,EAAE,UAAU,EAAE,cAAc,EAAE,iBAAiB,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,YAAY,CAAC;KACpH,CAAC,CAAA;IAEF,IAAI,CAAC,gBAAgB,EAAE;QACrB,MAAM,IAAI,KAAK,CACb,OAAO,CAAC,CAAC,CAAC,mCAAmC,EAAE;YAC7C,gBAAgB,EAAE,EAAE;SACrB,CAAC,CACH,CAAA;KACF;IAED;;;MAGE;IACF,IACE,gBAAgB,CAAC,KAAK,KAAK,0CAAsB,CAAC,MAAM;QACxD,gBAAgB,CAAC,KAAK,KAAK,0CAAsB,CAAC,iBAAiB,EACnE;QACA,MAAM,IAAI,KAAK,CACb,OAAO,CAAC,CAAC,CAAC,gDAAgD,EAAE;YAC1D,EAAE;YACF,MAAM,EAAE,gBAAgB,CAAC,KAAK;SAC/B,CAAC,CACH,CAAA;KACF;IAED,IAAI,KAAK,EAAE;QACT,gBAAgB,CAAC,KAAK,GAAG,KAAK,CAAA;KAC/B;IAED,MAAM,aAAa,GAAG,MAAM,EAAE,CAAC,aAAa,CAAC,gBAAI,CAAC,CAAC,IAAI,CAAC;QACtD,KAAK,EAAE,IAAA,YAAE,EAAC,SAAS,CAAC;KACrB,CAAC,CAAA;IAEF,MAAM,IAAA,sCAA6B,EAAC,QAAQ,EAAE,gBAAgB,EAAE,aAAa,EAAE,OAAO,CAAC,CAAA;IAEvF,OAAO,MAAM,EAAE,CAAC,aAAa,CAAC,oCAAgB,CAAC,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,gBAAgB,CAAC,EAAE,EAAE,CAAC,CAAA;AACxF,CAAC;AAhDD,wBAgDC","sourcesContent":["import { In } from 'typeorm'\n\nimport { User } from '@things-factory/auth-base'\n\nimport { ActivityInstance, ActivityInstanceStatus } from '../../service/activity-instance/activity-instance'\nimport { createActivityThreadsForUsers } from '../common'\n\nexport async function assign(\n { id, assignees, reason, dueAt }: { id: string; assignees?: string[]; reason?: string; dueAt?: Date },\n context: any\n): Promise<ActivityInstance> {\n const { domain, user, tx } = context.state\n\n const repository = tx.getRepository(ActivityInstance)\n\n var activityInstance = await repository.findOne({\n where: { domain: { id: domain.id }, id },\n relations: ['domain', 'activity', 'assigneeRole', 'supervisoryRole', 'updater', 'creator', 'starter', 'terminator']\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 Assigned.\n - The previous state of the task must not be Assigned.\n */\n if (\n activityInstance.state !== ActivityInstanceStatus.Posted &&\n activityInstance.state !== ActivityInstanceStatus.PendingAssignment\n ) {\n throw new Error(\n context.t(`error.activity-instance should not be assigned`, {\n id,\n actual: activityInstance.state\n })\n )\n }\n\n if (dueAt) {\n activityInstance.dueAt = dueAt\n }\n\n const assignedUsers = await tx.getRepository(User).find({\n email: In(assignees)\n })\n\n await createActivityThreadsForUsers('assign', activityInstance, assignedUsers, context)\n\n return await tx.getRepository(ActivityInstance).findOneBy({ id: activityInstance.id })\n}\n"]}
@@ -2,19 +2,52 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.end = void 0;
4
4
  const activity_instance_1 = require("../../service/activity-instance/activity-instance");
5
+ const activity_thread_1 = require("../../service/activity-thread/activity-thread");
5
6
  const common_1 = require("../common");
6
7
  async function end({ id, output, reason }, context) {
7
8
  const { domain, user, tx } = context.state;
8
9
  const repository = tx.getRepository(activity_instance_1.ActivityInstance);
9
10
  var activityInstance = await repository.findOne({
10
11
  where: { domain: { id: domain.id }, id },
11
- relations: ['domain', 'activity', 'assigneeRole', 'supervisoryRole', 'updater', 'creator', 'starter', 'terminator']
12
+ relations: [
13
+ 'domain',
14
+ 'activity',
15
+ 'activityThreads',
16
+ 'assigneeRole',
17
+ 'supervisoryRole',
18
+ 'updater',
19
+ 'creator',
20
+ 'starter',
21
+ 'terminator'
22
+ ]
12
23
  });
13
24
  if (!activityInstance) {
14
25
  throw new Error(context.t('error.activity-instance not found', {
15
26
  activityInstance: id
16
27
  }));
17
28
  }
29
+ /*
30
+ Prerequisites for a Task to Be End.
31
+ - The previous state of the task must not be End or Aborted.
32
+ - There should be no unfinished activity threads.
33
+ */
34
+ if (activityInstance.state == activity_instance_1.ActivityInstanceStatus.Aborted ||
35
+ activityInstance.state == activity_instance_1.ActivityInstanceStatus.Ended) {
36
+ throw new Error(context.t(`error.activity-instance is already terminated`, {
37
+ id,
38
+ state: activityInstance.state
39
+ }));
40
+ }
41
+ const TERMINATED = [activity_thread_1.ActivityThreadStatus.Aborted, activity_thread_1.ActivityThreadStatus.Delegated, activity_thread_1.ActivityThreadStatus.Ended];
42
+ for (let activityThread of activityInstance.activityThreads) {
43
+ if (TERMINATED.includes(activityThread.state)) {
44
+ continue;
45
+ }
46
+ throw new Error(context.t(`error.all activity threads should be terminated`, {
47
+ activityThread: activityThread.id,
48
+ state: activityInstance.state
49
+ }));
50
+ }
18
51
  if (!activityInstance.startedAt) {
19
52
  activityInstance.startedAt = new Date();
20
53
  }
@@ -1 +1 @@
1
- {"version":3,"file":"end.js","sourceRoot":"","sources":["../../../server/controllers/activity-instance/end.ts"],"names":[],"mappings":";;;AAAA,yFAAoF;AACpF,sCAAqD;AAE9C,KAAK,UAAU,GAAG,CACvB,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,EAAoD,EACxE,OAAY;IAEZ,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,KAAK,CAAA;IAC1C,MAAM,UAAU,GAAG,EAAE,CAAC,aAAa,CAAC,oCAAgB,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,CAAC,QAAQ,EAAE,UAAU,EAAE,cAAc,EAAE,iBAAiB,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,YAAY,CAAC;KACpH,CAAC,CAAA;IAEF,IAAI,CAAC,gBAAgB,EAAE;QACrB,MAAM,IAAI,KAAK,CACb,OAAO,CAAC,CAAC,CAAC,mCAAmC,EAAE;YAC7C,gBAAgB,EAAE,EAAE;SACrB,CAAC,CACH,CAAA;KACF;IAED,IAAI,CAAC,gBAAgB,CAAC,SAAS,EAAE;QAC/B,gBAAgB,CAAC,SAAS,GAAG,IAAI,IAAI,EAAE,CAAA;KACxC;IAED,OAAO,MAAM,UAAU,CAAC,IAAI,iCACvB,gBAAgB,KACnB,MAAM;QACN,MAAM,EACN,WAAW,EAAE,KAAK,EAClB,KAAK,EAAE,MAAM,IAAA,kCAAyB,EAAC,EAAE,EAAE,OAAO,CAAC,EACnD,OAAO,EAAE,IAAI,EACb,YAAY,EAAE,IAAI,IAAI,EAAE,EACxB,UAAU,EAAE,IAAI,IAChB,CAAA;AACJ,CAAC;AAlCD,kBAkCC","sourcesContent":["import { ActivityInstance } from '../../service/activity-instance/activity-instance'\nimport { evalActivityInstanceState } from '../common'\n\nexport async function end(\n { id, output, reason }: { id: string; output?: object; reason?: string },\n context: any\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: ['domain', 'activity', 'assigneeRole', 'supervisoryRole', 'updater', 'creator', 'starter', 'terminator']\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 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 })\n}\n"]}
1
+ {"version":3,"file":"end.js","sourceRoot":"","sources":["../../../server/controllers/activity-instance/end.ts"],"names":[],"mappings":";;;AAAA,yFAA4G;AAC5G,mFAAoF;AACpF,sCAAqD;AAE9C,KAAK,UAAU,GAAG,CACvB,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,EAAoD,EACxE,OAAY;IAEZ,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,KAAK,CAAA;IAC1C,MAAM,UAAU,GAAG,EAAE,CAAC,aAAa,CAAC,oCAAgB,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;QACrB,MAAM,IAAI,KAAK,CACb,OAAO,CAAC,CAAC,CAAC,mCAAmC,EAAE;YAC7C,gBAAgB,EAAE,EAAE;SACrB,CAAC,CACH,CAAA;KACF;IAED;;;;MAIE;IACF,IACE,gBAAgB,CAAC,KAAK,IAAI,0CAAsB,CAAC,OAAO;QACxD,gBAAgB,CAAC,KAAK,IAAI,0CAAsB,CAAC,KAAK,EACtD;QACA,MAAM,IAAI,KAAK,CACb,OAAO,CAAC,CAAC,CAAC,+CAA+C,EAAE;YACzD,EAAE;YACF,KAAK,EAAE,gBAAgB,CAAC,KAAK;SAC9B,CAAC,CACH,CAAA;KACF;IAED,MAAM,UAAU,GAAG,CAAC,sCAAoB,CAAC,OAAO,EAAE,sCAAoB,CAAC,SAAS,EAAE,sCAAoB,CAAC,KAAK,CAAC,CAAA;IAE7G,KAAK,IAAI,cAAc,IAAI,gBAAgB,CAAC,eAAe,EAAE;QAC3D,IAAI,UAAU,CAAC,QAAQ,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE;YAC7C,SAAQ;SACT;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;KACF;IAED,IAAI,CAAC,gBAAgB,CAAC,SAAS,EAAE;QAC/B,gBAAgB,CAAC,SAAS,GAAG,IAAI,IAAI,EAAE,CAAA;KACxC;IAED,OAAO,MAAM,UAAU,CAAC,IAAI,iCACvB,gBAAgB,KACnB,MAAM;QACN,MAAM,EACN,WAAW,EAAE,KAAK,EAClB,KAAK,EAAE,MAAM,IAAA,kCAAyB,EAAC,EAAE,EAAE,OAAO,CAAC,EACnD,OAAO,EAAE,IAAI,EACb,YAAY,EAAE,IAAI,IAAI,EAAE,EACxB,UAAU,EAAE,IAAI,IAChB,CAAA;AACJ,CAAC;AA5ED,kBA4EC","sourcesContent":["import { ActivityInstance, ActivityInstanceStatus } from '../../service/activity-instance/activity-instance'\nimport { ActivityThreadStatus } from '../../service/activity-thread/activity-thread'\nimport { evalActivityInstanceState } from '../common'\n\nexport async function end(\n { id, output, reason }: { id: string; output?: object; reason?: string },\n context: any\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.Delegated, 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 })\n}\n"]}
@@ -5,10 +5,6 @@ tslib_1.__exportStar(require("./draft"), exports);
5
5
  tslib_1.__exportStar(require("./post"), exports);
6
6
  tslib_1.__exportStar(require("./pick"), exports);
7
7
  tslib_1.__exportStar(require("./assign"), exports);
8
- tslib_1.__exportStar(require("./delegate"), exports);
9
8
  tslib_1.__exportStar(require("./abort"), exports);
10
9
  tslib_1.__exportStar(require("./end"), exports);
11
- tslib_1.__exportStar(require("./start"), exports);
12
- tslib_1.__exportStar(require("./terminate"), exports);
13
- tslib_1.__exportStar(require("./adjust"), exports);
14
10
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../server/controllers/activity-instance/index.ts"],"names":[],"mappings":";;;AAAA,kDAAuB;AACvB,iDAAsB;AACtB,iDAAsB;AACtB,mDAAwB;AACxB,qDAA0B;AAC1B,kDAAuB;AACvB,gDAAqB;AACrB,kDAAuB;AACvB,sDAA2B;AAC3B,mDAAwB","sourcesContent":["export * from './draft'\nexport * from './post'\nexport * from './pick'\nexport * from './assign'\nexport * from './delegate'\nexport * from './abort'\nexport * from './end'\nexport * from './start'\nexport * from './terminate'\nexport * from './adjust'\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../server/controllers/activity-instance/index.ts"],"names":[],"mappings":";;;AAAA,kDAAuB;AACvB,iDAAsB;AACtB,iDAAsB;AACtB,mDAAwB;AACxB,kDAAuB;AACvB,gDAAqB","sourcesContent":["export * from './draft'\nexport * from './post'\nexport * from './pick'\nexport * from './assign'\nexport * from './abort'\nexport * from './end'\n"]}
@@ -15,6 +15,17 @@ async function pick(id, context) {
15
15
  activityInstance: id
16
16
  }));
17
17
  }
18
+ /*
19
+ Prerequisites for a Task to Be Picked.
20
+ - The previous state of the task must not be Assigned.
21
+ */
22
+ if (activityInstance.state !== activity_instance_1.ActivityInstanceStatus.Posted &&
23
+ activityInstance.state !== activity_instance_1.ActivityInstanceStatus.PendingAssignment) {
24
+ throw new Error(context.t(`error.activity-instance should not be assigned`, {
25
+ id,
26
+ actual: activityInstance.state
27
+ }));
28
+ }
18
29
  const picked = await repository.save(Object.assign(Object.assign({}, activityInstance), { transaction: 'pick', updater: user }));
19
30
  return (await (0, common_1.createActivityThreadsForUsers)('pick', picked, [user], context))[0];
20
31
  }
@@ -1 +1 @@
1
- {"version":3,"file":"pick.js","sourceRoot":"","sources":["../../../server/controllers/activity-instance/pick.ts"],"names":[],"mappings":";;;AAAA,yFAAoF;AAEpF,sCAAyD;AAElD,KAAK,UAAU,IAAI,CAAC,EAAU,EAAE,OAAwB;IAC7D,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,KAAK,CAAA;IAC1C,MAAM,UAAU,GAAG,EAAE,CAAC,aAAa,CAAC,oCAAgB,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,CAAC,QAAQ,EAAE,UAAU,EAAE,cAAc,EAAE,iBAAiB,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,YAAY,CAAC;KACpH,CAAC,CAAA;IAEF,IAAI,CAAC,gBAAgB,EAAE;QACrB,MAAM,IAAI,KAAK,CACb,OAAO,CAAC,CAAC,CAAC,mCAAmC,EAAE;YAC7C,gBAAgB,EAAE,EAAE;SACrB,CAAC,CACH,CAAA;KACF;IAED,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,IAAI,iCAC/B,gBAAgB,KACnB,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,IAAI,IACb,CAAA;IAEF,OAAO,CAAC,MAAM,IAAA,sCAA6B,EAAC,MAAM,EAAE,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;AAClF,CAAC;AAxBD,oBAwBC","sourcesContent":["import { ActivityInstance } from '../../service/activity-instance/activity-instance'\nimport { ActivityThread } from '../../service/activity-thread/activity-thread'\nimport { createActivityThreadsForUsers } from '../common'\n\nexport async function pick(id: string, context: ResolverContext): Promise<ActivityThread> {\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: ['domain', 'activity', 'assigneeRole', 'supervisoryRole', 'updater', 'creator', 'starter', 'terminator']\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 const picked = await repository.save({\n ...activityInstance,\n transaction: 'pick',\n updater: user\n })\n\n return (await createActivityThreadsForUsers('pick', picked, [user], context))[0]\n}\n"]}
1
+ {"version":3,"file":"pick.js","sourceRoot":"","sources":["../../../server/controllers/activity-instance/pick.ts"],"names":[],"mappings":";;;AAAA,yFAA4G;AAE5G,sCAAyD;AAElD,KAAK,UAAU,IAAI,CAAC,EAAU,EAAE,OAAwB;IAC7D,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,KAAK,CAAA;IAC1C,MAAM,UAAU,GAAG,EAAE,CAAC,aAAa,CAAC,oCAAgB,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,CAAC,QAAQ,EAAE,UAAU,EAAE,cAAc,EAAE,iBAAiB,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,YAAY,CAAC;KACpH,CAAC,CAAA;IAEF,IAAI,CAAC,gBAAgB,EAAE;QACrB,MAAM,IAAI,KAAK,CACb,OAAO,CAAC,CAAC,CAAC,mCAAmC,EAAE;YAC7C,gBAAgB,EAAE,EAAE;SACrB,CAAC,CACH,CAAA;KACF;IAED;;;MAGE;IACF,IACE,gBAAgB,CAAC,KAAK,KAAK,0CAAsB,CAAC,MAAM;QACxD,gBAAgB,CAAC,KAAK,KAAK,0CAAsB,CAAC,iBAAiB,EACnE;QACA,MAAM,IAAI,KAAK,CACb,OAAO,CAAC,CAAC,CAAC,gDAAgD,EAAE;YAC1D,EAAE;YACF,MAAM,EAAE,gBAAgB,CAAC,KAAK;SAC/B,CAAC,CACH,CAAA;KACF;IAED,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,IAAI,iCAC/B,gBAAgB,KACnB,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,IAAI,IACb,CAAA;IAEF,OAAO,CAAC,MAAM,IAAA,sCAA6B,EAAC,MAAM,EAAE,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;AAClF,CAAC;AAxCD,oBAwCC","sourcesContent":["import { ActivityInstance, ActivityInstanceStatus } from '../../service/activity-instance/activity-instance'\nimport { ActivityThread } from '../../service/activity-thread/activity-thread'\nimport { createActivityThreadsForUsers } from '../common'\n\nexport async function pick(id: string, context: ResolverContext): Promise<ActivityThread> {\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: ['domain', 'activity', 'assigneeRole', 'supervisoryRole', 'updater', 'creator', 'starter', 'terminator']\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 Picked.\n - The previous state of the task must not be Assigned.\n */\n if (\n activityInstance.state !== ActivityInstanceStatus.Posted &&\n activityInstance.state !== ActivityInstanceStatus.PendingAssignment\n ) {\n throw new Error(\n context.t(`error.activity-instance should not be assigned`, {\n id,\n actual: activityInstance.state\n })\n )\n }\n\n const picked = await repository.save({\n ...activityInstance,\n transaction: 'pick',\n updater: user\n })\n\n return (await createActivityThreadsForUsers('pick', picked, [user], context))[0]\n}\n"]}
@@ -23,6 +23,16 @@ async function post(activityInstance, context) {
23
23
  ]
24
24
  })
25
25
  : null;
26
+ /*
27
+ Prerequisites for a Task to Be Posted.
28
+ - The previous state of the task should be Draft.
29
+ */
30
+ if (origin && origin.state !== activity_instance_1.ActivityInstanceStatus.Draft) {
31
+ throw new Error(context.t(`error.activity-instance is already posted`, {
32
+ id: id,
33
+ state: origin.state
34
+ }));
35
+ }
26
36
  if (!origin && activityId) {
27
37
  var repository = tx.getRepository(activity_1.Activity);
28
38
  var activity = {};
@@ -1 +1 @@
1
- {"version":3,"file":"post.js","sourceRoot":"","sources":["../../../server/controllers/activity-instance/post.ts"],"names":[],"mappings":"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","sourcesContent":["import { Activity } from '../../service/activity/activity'\nimport { ActivityInstance, ActivityInstanceStatus } from '../../service/activity-instance/activity-instance'\nimport { ActivityInstancePost } from '../../service/activity-instance/activity-instance-type'\nimport {\n createActivityThreadsForAllRoleUsers,\n createActivityThreadsForUsers,\n getSystemUserFromOrgMemberItem,\n fillActivitySearchKeys\n} from '../common'\n\nexport async function post(\n activityInstance: ActivityInstancePost,\n context: ResolverContext\n): Promise<ActivityInstance> {\n const { domain, user, tx } = context.state\n const issuedAt = new Date()\n var {\n id,\n name,\n description,\n assignees,\n uiType,\n uiSource,\n viewType,\n viewSource,\n dueAt,\n priority,\n approvalLine,\n activityId,\n activityType,\n assigneeRole,\n supervisoryRole,\n input\n } = activityInstance\n\n var origin = id\n ? await tx.getRepository(ActivityInstance).findOne({\n where: { domain: { id: domain.id }, id },\n relations: [\n 'domain',\n 'activity',\n 'assigneeRole',\n 'supervisoryRole',\n 'updater',\n 'creator',\n 'starter',\n 'terminator'\n ]\n })\n : null\n\n if (!origin && activityId) {\n var repository = tx.getRepository(Activity)\n var activity = {} as Activity\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 activityInstance.name = name || activity.name\n activityInstance.description = description || activity.description\n activityInstance.activityType = activityType || activity.activityType\n activityInstance.uiType = uiType || activity.uiType\n activityInstance.uiSource = uiSource || activity.uiSource\n activityInstance.viewType = viewType || activity.viewType\n activityInstance.viewSource = viewSource || activity.viewSource\n activityInstance.assigneeRole = assigneeRole || activity.assigneeRole\n activityInstance.supervisoryRole = supervisoryRole || activity.supervisoryRole\n activityInstance.priority = priority ?? activity.priority\n\n if (!assignees || !approvalLine) {\n activityInstance.adhocType = 'standard'\n activityInstance.refBy = activityId\n if (!assignees) {\n assignees = activityInstance.assignees = activity.assignees\n }\n if (!approvalLine) {\n approvalLine = activityInstance.approvalLine = activity.approvalLine\n }\n\n if (!dueAt && activity.standardTime) {\n activityInstance.dueAt = new Date(issuedAt.getTime() + activity.standardTime * 1000)\n }\n }\n }\n\n const activitySearchKeys = fillActivitySearchKeys(activity?.searchKeys, input)\n\n const posted = await tx.getRepository(ActivityInstance).save({\n creator: user,\n ...origin,\n ...activityInstance,\n transaction: 'post',\n activity,\n ...activitySearchKeys,\n state: ActivityInstanceStatus.Posted,\n domain,\n issuer: user,\n updater: user,\n issuedAt\n })\n\n const assignedUsers = await Promise.all(\n (assignees || []).map(assignee => getSystemUserFromOrgMemberItem(assignee, context))\n )\n\n if (assignedUsers.length == 0 && posted.threadsMin === 0 && posted.assigneeRoleId) {\n await createActivityThreadsForAllRoleUsers('post', posted, context)\n }\n\n if (assignedUsers.length > 0) {\n await createActivityThreadsForUsers('post', posted, assignedUsers, context)\n }\n\n return await tx.getRepository(ActivityInstance).findOneBy({ id: posted.id })\n}\n"]}
1
+ {"version":3,"file":"post.js","sourceRoot":"","sources":["../../../server/controllers/activity-instance/post.ts"],"names":[],"mappings":"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","sourcesContent":["import { Activity } from '../../service/activity/activity'\nimport { ActivityInstance, ActivityInstanceStatus } from '../../service/activity-instance/activity-instance'\nimport { ActivityInstancePost } from '../../service/activity-instance/activity-instance-type'\nimport {\n createActivityThreadsForAllRoleUsers,\n createActivityThreadsForUsers,\n getSystemUserFromOrgMemberItem,\n fillActivitySearchKeys\n} from '../common'\n\nexport async function post(\n activityInstance: ActivityInstancePost,\n context: ResolverContext\n): Promise<ActivityInstance> {\n const { domain, user, tx } = context.state\n const issuedAt = new Date()\n var {\n id,\n name,\n description,\n assignees,\n uiType,\n uiSource,\n viewType,\n viewSource,\n dueAt,\n priority,\n approvalLine,\n activityId,\n activityType,\n assigneeRole,\n supervisoryRole,\n input\n } = activityInstance\n\n var origin = id\n ? await tx.getRepository(ActivityInstance).findOne({\n where: { domain: { id: domain.id }, id },\n relations: [\n 'domain',\n 'activity',\n 'assigneeRole',\n 'supervisoryRole',\n 'updater',\n 'creator',\n 'starter',\n 'terminator'\n ]\n })\n : null\n\n /* \n Prerequisites for a Task to Be Posted.\n - The previous state of the task should be Draft.\n */\n if (origin && origin.state !== ActivityInstanceStatus.Draft) {\n throw new Error(\n context.t(`error.activity-instance is already posted`, {\n id: id,\n state: origin.state\n })\n )\n }\n\n if (!origin && activityId) {\n var repository = tx.getRepository(Activity)\n var activity = {} as Activity\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 activityInstance.name = name || activity.name\n activityInstance.description = description || activity.description\n activityInstance.activityType = activityType || activity.activityType\n activityInstance.uiType = uiType || activity.uiType\n activityInstance.uiSource = uiSource || activity.uiSource\n activityInstance.viewType = viewType || activity.viewType\n activityInstance.viewSource = viewSource || activity.viewSource\n activityInstance.assigneeRole = assigneeRole || activity.assigneeRole\n activityInstance.supervisoryRole = supervisoryRole || activity.supervisoryRole\n activityInstance.priority = priority ?? activity.priority\n\n if (!assignees || !approvalLine) {\n activityInstance.adhocType = 'standard'\n activityInstance.refBy = activityId\n if (!assignees) {\n assignees = activityInstance.assignees = activity.assignees\n }\n if (!approvalLine) {\n approvalLine = activityInstance.approvalLine = activity.approvalLine\n }\n\n if (!dueAt && activity.standardTime) {\n activityInstance.dueAt = new Date(issuedAt.getTime() + activity.standardTime * 1000)\n }\n }\n }\n\n const activitySearchKeys = fillActivitySearchKeys(activity?.searchKeys, input)\n\n const posted = await tx.getRepository(ActivityInstance).save({\n creator: user,\n ...origin,\n ...activityInstance,\n transaction: 'post',\n activity,\n ...activitySearchKeys,\n state: ActivityInstanceStatus.Posted,\n domain,\n issuer: user,\n updater: user,\n issuedAt\n })\n\n const assignedUsers = await Promise.all(\n (assignees || []).map(assignee => getSystemUserFromOrgMemberItem(assignee, context))\n )\n\n if (assignedUsers.length == 0 && posted.threadsMin === 0 && posted.assigneeRoleId) {\n await createActivityThreadsForAllRoleUsers('post', posted, context)\n }\n\n if (assignedUsers.length > 0) {\n await createActivityThreadsForUsers('post', posted, assignedUsers, context)\n }\n\n return await tx.getRepository(ActivityInstance).findOneBy({ id: posted.id })\n}\n"]}
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.start = void 0;
4
+ const activity_instance_1 = require("../../service/activity-instance/activity-instance");
5
+ const common_1 = require("../common");
6
+ async function start(id, context) {
7
+ const { domain, user, tx } = context.state;
8
+ const repository = tx.getRepository(activity_instance_1.ActivityInstance);
9
+ const activityInstance = await repository.findOne({
10
+ where: { domain: { id: domain.id }, id },
11
+ relations: ['domain', 'activity', 'assigneeRole', 'supervisoryRole', 'updater', 'creator', 'starter', 'terminator']
12
+ });
13
+ return await repository.save(Object.assign(Object.assign(Object.assign(Object.assign({}, activityInstance), { transaction: 'start' }), (await (0, common_1.evalActivityInstanceState)(id, context))), { updater: user, startedAt: new Date() }));
14
+ }
15
+ exports.start = start;
16
+ //# sourceMappingURL=start-xxx.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"start-xxx.js","sourceRoot":"","sources":["../../../server/controllers/activity-instance/start-xxx.ts"],"names":[],"mappings":";;;AAAA,yFAA4G;AAC5G,sCAAqD;AAE9C,KAAK,UAAU,KAAK,CAAC,EAAU,EAAE,OAAwB;IAC9D,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,KAAK,CAAA;IAE1C,MAAM,UAAU,GAAG,EAAE,CAAC,aAAa,CAAC,oCAAgB,CAAC,CAAA;IACrD,MAAM,gBAAgB,GAAG,MAAM,UAAU,CAAC,OAAO,CAAC;QAChD,KAAK,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE;QACxC,SAAS,EAAE,CAAC,QAAQ,EAAE,UAAU,EAAE,cAAc,EAAE,iBAAiB,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,YAAY,CAAC;KACpH,CAAC,CAAA;IAEF,OAAO,MAAM,UAAU,CAAC,IAAI,6DACvB,gBAAgB,KACnB,WAAW,EAAE,OAAO,KACjB,CAAC,MAAM,IAAA,kCAAyB,EAAC,EAAE,EAAE,OAAO,CAAC,CAAC,KACjD,OAAO,EAAE,IAAI,EACb,SAAS,EAAE,IAAI,IAAI,EAAE,IACrB,CAAA;AACJ,CAAC;AAhBD,sBAgBC","sourcesContent":["import { ActivityInstance, ActivityInstanceStatus } from '../../service/activity-instance/activity-instance'\nimport { evalActivityInstanceState } from '../common'\n\nexport async function start(id: string, context: ResolverContext): Promise<ActivityInstance> {\n const { domain, user, tx } = context.state\n\n const repository = tx.getRepository(ActivityInstance)\n const activityInstance = await repository.findOne({\n where: { domain: { id: domain.id }, id },\n relations: ['domain', 'activity', 'assigneeRole', 'supervisoryRole', 'updater', 'creator', 'starter', 'terminator']\n })\n\n return await repository.save({\n ...activityInstance,\n transaction: 'start',\n ...(await evalActivityInstanceState(id, context)),\n updater: user,\n startedAt: new Date()\n })\n}\n"]}
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.terminate = void 0;
4
+ const activity_instance_1 = require("../../service/activity-instance/activity-instance");
5
+ const common_1 = require("../common");
6
+ async function terminate({ id, output, reason }, context) {
7
+ const { domain, user, tx } = context.state;
8
+ const repository = tx.getRepository(activity_instance_1.ActivityInstance);
9
+ var activityInstance = await repository.findOne({
10
+ where: { domain: { id: domain.id }, id },
11
+ relations: ['domain', 'activity', 'assigneeRole', 'supervisoryRole', 'updater', 'creator', 'starter', 'terminator']
12
+ });
13
+ if (!activityInstance) {
14
+ throw new Error(context.t('error.activity-instance not found', {
15
+ activityInstance: id
16
+ }));
17
+ }
18
+ if (!activityInstance.startedAt) {
19
+ activityInstance.startedAt = new Date();
20
+ }
21
+ return await repository.save(Object.assign(Object.assign({}, activityInstance), { reason,
22
+ output, transaction: 'terminate', state: await (0, common_1.evalActivityInstanceState)(id, context), updater: user, terminatedAt: new Date(), terminator: user }));
23
+ }
24
+ exports.terminate = terminate;
25
+ //# sourceMappingURL=terminate-xxx.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"terminate-xxx.js","sourceRoot":"","sources":["../../../server/controllers/activity-instance/terminate-xxx.ts"],"names":[],"mappings":";;;AAAA,yFAAoF;AACpF,sCAAqD;AAE9C,KAAK,UAAU,SAAS,CAC7B,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,EAAoD,EACxE,OAAY;IAEZ,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,KAAK,CAAA;IAE1C,MAAM,UAAU,GAAG,EAAE,CAAC,aAAa,CAAC,oCAAgB,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,CAAC,QAAQ,EAAE,UAAU,EAAE,cAAc,EAAE,iBAAiB,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,YAAY,CAAC;KACpH,CAAC,CAAA;IAEF,IAAI,CAAC,gBAAgB,EAAE;QACrB,MAAM,IAAI,KAAK,CACb,OAAO,CAAC,CAAC,CAAC,mCAAmC,EAAE;YAC7C,gBAAgB,EAAE,EAAE;SACrB,CAAC,CACH,CAAA;KACF;IAED,IAAI,CAAC,gBAAgB,CAAC,SAAS,EAAE;QAC/B,gBAAgB,CAAC,SAAS,GAAG,IAAI,IAAI,EAAE,CAAA;KACxC;IAED,OAAO,MAAM,UAAU,CAAC,IAAI,iCACvB,gBAAgB,KACnB,MAAM;QACN,MAAM,EACN,WAAW,EAAE,WAAW,EACxB,KAAK,EAAE,MAAM,IAAA,kCAAyB,EAAC,EAAE,EAAE,OAAO,CAAC,EACnD,OAAO,EAAE,IAAI,EACb,YAAY,EAAE,IAAI,IAAI,EAAE,EACxB,UAAU,EAAE,IAAI,IAChB,CAAA;AACJ,CAAC;AAnCD,8BAmCC","sourcesContent":["import { ActivityInstance } from '../../service/activity-instance/activity-instance'\nimport { evalActivityInstanceState } from '../common'\n\nexport async function terminate(\n { id, output, reason }: { id: string; output?: object; reason?: string },\n context: any\n): Promise<ActivityInstance> {\n const { domain, user, tx } = context.state\n\n const repository = tx.getRepository(ActivityInstance)\n\n var activityInstance = await repository.findOne({\n where: { domain: { id: domain.id }, id },\n relations: ['domain', 'activity', 'assigneeRole', 'supervisoryRole', 'updater', 'creator', 'starter', 'terminator']\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 if (!activityInstance.startedAt) {\n activityInstance.startedAt = new Date()\n }\n\n return await repository.save({\n ...activityInstance,\n reason,\n output,\n transaction: 'terminate',\n state: await evalActivityInstanceState(id, context),\n updater: user,\n terminatedAt: new Date(),\n terminator: user\n })\n}\n"]}
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports._abort = void 0;
4
+ const activity_thread_1 = require("../../service/activity-thread/activity-thread");
5
+ const activity_approval_1 = require("../../service/activity-approval/activity-approval");
6
+ const _abort_1 = require("../activity-approval/_abort");
7
+ async function _abort({ activityThread, reason }, context) {
8
+ const { domain, user, tx } = context.state;
9
+ var repository = tx.getRepository(activity_thread_1.ActivityThread);
10
+ let activityApprovals = await tx.getRepository(activity_approval_1.ActivityApproval).find({
11
+ where: {
12
+ activityThread: { id: activityThread.id },
13
+ judgment: activity_approval_1.ActivityApprovalJudgment.Pending
14
+ }
15
+ });
16
+ /*
17
+ Actions to be processed when a activity thread is aborted
18
+ - All related activity approvals must be aborted.
19
+ */
20
+ for (let activityApproval of activityApprovals) {
21
+ await (0, _abort_1._abort)({
22
+ activityApproval,
23
+ comment: reason
24
+ }, context);
25
+ }
26
+ return await repository.save(Object.assign(Object.assign({}, activityThread), { reason, state: activity_thread_1.ActivityThreadStatus.Aborted, transaction: 'abort', updater: user, terminatedAt: new Date(), terminator: user }));
27
+ }
28
+ exports._abort = _abort;
29
+ //# sourceMappingURL=_abort.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"_abort.js","sourceRoot":"","sources":["../../../server/controllers/activity-thread/_abort.ts"],"names":[],"mappings":";;;AAAA,mFAAoG;AACpG,yFAA8G;AAC9G,wDAA6E;AAEtE,KAAK,UAAU,MAAM,CAC1B,EAAE,cAAc,EAAE,MAAM,EAAsD,EAC9E,OAAwB;IAExB,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,KAAK,CAAA;IAE1C,IAAI,UAAU,GAAG,EAAE,CAAC,aAAa,CAAC,gCAAc,CAAC,CAAA;IAEjD,IAAI,iBAAiB,GAAG,MAAM,EAAE,CAAC,aAAa,CAAC,oCAAgB,CAAC,CAAC,IAAI,CAAC;QACpE,KAAK,EAAE;YACL,cAAc,EAAE,EAAE,EAAE,EAAE,cAAc,CAAC,EAAE,EAAE;YACzC,QAAQ,EAAE,4CAAwB,CAAC,OAAO;SAC3C;KACF,CAAC,CAAA;IAEF;;;MAGE;IACF,KAAK,IAAI,gBAAgB,IAAI,iBAAiB,EAAE;QAC9C,MAAM,IAAA,eAAqB,EACzB;YACE,gBAAgB;YAChB,OAAO,EAAE,MAAM;SAChB,EACD,OAAO,CACR,CAAA;KACF;IAED,OAAO,MAAM,UAAU,CAAC,IAAI,iCACvB,cAAc,KACjB,MAAM,EACN,KAAK,EAAE,sCAAoB,CAAC,OAAO,EACnC,WAAW,EAAE,OAAO,EACpB,OAAO,EAAE,IAAI,EACb,YAAY,EAAE,IAAI,IAAI,EAAE,EACxB,UAAU,EAAE,IAAI,IAChB,CAAA;AACJ,CAAC;AAtCD,wBAsCC","sourcesContent":["import { ActivityThread, ActivityThreadStatus } from '../../service/activity-thread/activity-thread'\nimport { ActivityApproval, ActivityApprovalJudgment } from '../../service/activity-approval/activity-approval'\nimport { _abort as abortActivityApproval } from '../activity-approval/_abort'\n\nexport async function _abort(\n { activityThread, reason }: { activityThread: ActivityThread; reason: string },\n context: ResolverContext\n): Promise<ActivityThread> {\n const { domain, user, tx } = context.state\n\n var repository = tx.getRepository(ActivityThread)\n\n let activityApprovals = await tx.getRepository(ActivityApproval).find({\n where: {\n activityThread: { id: activityThread.id },\n judgment: ActivityApprovalJudgment.Pending\n }\n })\n\n /* \n Actions to be processed when a activity thread is aborted\n - All related activity approvals must be aborted.\n */\n for (let activityApproval of activityApprovals) {\n await abortActivityApproval(\n {\n activityApproval,\n comment: reason\n },\n context\n )\n }\n\n return await repository.save({\n ...activityThread,\n reason,\n state: ActivityThreadStatus.Aborted,\n transaction: 'abort',\n updater: user,\n terminatedAt: new Date(),\n terminator: user\n })\n}\n"]}