@things-factory/worklist 6.0.27 → 6.0.32

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 (195) hide show
  1. package/client/bootstrap.ts +9 -1
  2. package/client/components/activity-starter-form.ts +35 -10
  3. package/client/grist-editor/grist-editor-activity-search-key.ts +79 -0
  4. package/client/grist-editor/popup-activity-search-keys-input.ts +167 -0
  5. package/client/pages/activity/activity-list-page.ts +122 -11
  6. package/client/pages/activity/activity-partial-view.ts +85 -0
  7. package/client/pages/activity/starter-list-page.ts +1 -0
  8. package/client/pages/activity-approval/activity-approval-page.ts +6 -6
  9. package/client/pages/activity-instance/activity-instance-search-page.ts +377 -0
  10. package/client/pages/activity-instance/activity-instance-view.ts +135 -0
  11. package/client/pages/activity-store/activity-store-page.ts +1 -1
  12. package/client/pages/activity-template/activity-template-list-page.ts +29 -1
  13. package/client/pages/activity-thread/activity-thread-page.ts +8 -3
  14. package/client/pages/activity-thread/activity-thread-view.ts +102 -0
  15. package/client/pages/installable-activity/installable-activity-list-page.ts +29 -1
  16. package/client/pages/todo/approval-waiting-list-page.ts +19 -9
  17. package/client/pages/todo/done-list-page.ts +344 -0
  18. package/client/pages/todo/draft-list-page.ts +13 -2
  19. package/client/pages/todo/todo-list-page.ts +14 -3
  20. package/client/route.ts +8 -0
  21. package/client/types/activity-instance-type.ts +123 -0
  22. package/client/types/activity-instance.ts +124 -0
  23. package/client/types/activity-model-type.ts +40 -0
  24. package/client/types/activity-search-key-item-type.ts +9 -0
  25. package/client/types/activity-thread-type.ts +19 -0
  26. package/client/types/activity-thread.ts +88 -0
  27. package/client/types/activity.ts +103 -0
  28. package/client/{types.js → types/types.ts} +0 -9
  29. package/dist-client/bootstrap.js +4 -1
  30. package/dist-client/bootstrap.js.map +1 -1
  31. package/dist-client/components/activity-starter-form.d.ts +1 -1
  32. package/dist-client/components/activity-starter-form.js +34 -9
  33. package/dist-client/components/activity-starter-form.js.map +1 -1
  34. package/dist-client/grist-editor/grist-editor-activity-search-key.d.ts +12 -0
  35. package/dist-client/grist-editor/grist-editor-activity-search-key.js +70 -0
  36. package/dist-client/grist-editor/grist-editor-activity-search-key.js.map +1 -0
  37. package/dist-client/grist-editor/popup-activity-search-keys-input.d.ts +17 -0
  38. package/dist-client/grist-editor/popup-activity-search-keys-input.js +177 -0
  39. package/dist-client/grist-editor/popup-activity-search-keys-input.js.map +1 -0
  40. package/dist-client/pages/activity/activity-list-page.d.ts +4 -0
  41. package/dist-client/pages/activity/activity-list-page.js +121 -11
  42. package/dist-client/pages/activity/activity-list-page.js.map +1 -1
  43. package/dist-client/pages/activity/activity-partial-view.d.ts +13 -0
  44. package/dist-client/pages/activity/activity-partial-view.js +56 -0
  45. package/dist-client/pages/activity/activity-partial-view.js.map +1 -0
  46. package/dist-client/pages/activity/starter-list-page.js.map +1 -1
  47. package/dist-client/pages/activity-approval/activity-approval-page.js +6 -6
  48. package/dist-client/pages/activity-approval/activity-approval-page.js.map +1 -1
  49. package/dist-client/pages/activity-instance/activity-instance-search-page.d.ts +76 -0
  50. package/dist-client/pages/activity-instance/activity-instance-search-page.js +371 -0
  51. package/dist-client/pages/activity-instance/activity-instance-search-page.js.map +1 -0
  52. package/dist-client/pages/activity-instance/activity-instance-view.d.ts +14 -0
  53. package/dist-client/pages/activity-instance/activity-instance-view.js +130 -0
  54. package/dist-client/pages/activity-instance/activity-instance-view.js.map +1 -0
  55. package/dist-client/pages/activity-store/activity-store-page.js +1 -1
  56. package/dist-client/pages/activity-store/activity-store-page.js.map +1 -1
  57. package/dist-client/pages/activity-template/activity-template-list-page.js +29 -1
  58. package/dist-client/pages/activity-template/activity-template-list-page.js.map +1 -1
  59. package/dist-client/pages/activity-thread/activity-thread-page.js +8 -3
  60. package/dist-client/pages/activity-thread/activity-thread-page.js.map +1 -1
  61. package/dist-client/pages/activity-thread/activity-thread-view.d.ts +11 -0
  62. package/dist-client/pages/activity-thread/activity-thread-view.js +103 -0
  63. package/dist-client/pages/activity-thread/activity-thread-view.js.map +1 -0
  64. package/dist-client/pages/installable-activity/installable-activity-list-page.js +29 -1
  65. package/dist-client/pages/installable-activity/installable-activity-list-page.js.map +1 -1
  66. package/dist-client/pages/todo/approval-waiting-list-page.js +19 -9
  67. package/dist-client/pages/todo/approval-waiting-list-page.js.map +1 -1
  68. package/dist-client/pages/todo/done-list-page.d.ts +44 -0
  69. package/dist-client/pages/todo/done-list-page.js +342 -0
  70. package/dist-client/pages/todo/done-list-page.js.map +1 -0
  71. package/dist-client/pages/todo/draft-list-page.js +12 -2
  72. package/dist-client/pages/todo/draft-list-page.js.map +1 -1
  73. package/dist-client/pages/todo/todo-list-page.js +13 -3
  74. package/dist-client/pages/todo/todo-list-page.js.map +1 -1
  75. package/dist-client/route.d.ts +1 -1
  76. package/dist-client/route.js +6 -0
  77. package/dist-client/route.js.map +1 -1
  78. package/dist-client/tsconfig.tsbuildinfo +1 -1
  79. package/dist-client/types/activity-instance-type.d.ts +76 -0
  80. package/dist-client/types/activity-instance-type.js +11 -0
  81. package/dist-client/types/activity-instance-type.js.map +1 -0
  82. package/dist-client/types/activity-instance.d.ts +70 -0
  83. package/dist-client/types/activity-instance.js +36 -0
  84. package/dist-client/types/activity-instance.js.map +1 -0
  85. package/dist-client/types/activity-model-type.d.ts +31 -0
  86. package/dist-client/types/activity-model-type.js +18 -0
  87. package/dist-client/types/activity-model-type.js.map +1 -0
  88. package/dist-client/types/activity-search-key-item-type.d.ts +6 -0
  89. package/dist-client/types/activity-search-key-item-type.js +3 -0
  90. package/dist-client/types/activity-search-key-item-type.js.map +1 -0
  91. package/dist-client/types/activity-thread-type.d.ts +15 -0
  92. package/dist-client/types/activity-thread-type.js +7 -0
  93. package/dist-client/types/activity-thread-type.js.map +1 -0
  94. package/dist-client/types/activity-thread.d.ts +37 -0
  95. package/dist-client/types/activity-thread.js +51 -0
  96. package/dist-client/types/activity-thread.js.map +1 -0
  97. package/dist-client/types/activity.d.ts +65 -0
  98. package/dist-client/types/activity.js +35 -0
  99. package/dist-client/types/activity.js.map +1 -0
  100. package/dist-client/{types.d.ts → types/types.d.ts} +3 -7
  101. package/dist-client/{types.js → types/types.js} +0 -8
  102. package/dist-client/types/types.js.map +1 -0
  103. package/dist-server/controllers/activity-approval/approve.js +2 -0
  104. package/dist-server/controllers/activity-approval/approve.js.map +1 -1
  105. package/dist-server/controllers/activity-approval/reject.js +2 -0
  106. package/dist-server/controllers/activity-approval/reject.js.map +1 -1
  107. package/dist-server/controllers/{activity-installation-controller.js → activity-installation/activity-installation-controller.js} +8 -0
  108. package/dist-server/controllers/activity-installation/activity-installation-controller.js.map +1 -0
  109. package/dist-server/controllers/activity-installation/call-webhook.js.map +1 -0
  110. package/dist-server/controllers/activity-instance/abort.js +1 -1
  111. package/dist-server/controllers/activity-instance/abort.js.map +1 -1
  112. package/dist-server/controllers/activity-instance/adjust.js +1 -1
  113. package/dist-server/controllers/activity-instance/adjust.js.map +1 -1
  114. package/dist-server/controllers/activity-instance/delegate.js +5 -0
  115. package/dist-server/controllers/activity-instance/delegate.js.map +1 -1
  116. package/dist-server/controllers/activity-instance/draft.js +16 -1
  117. package/dist-server/controllers/activity-instance/draft.js.map +1 -1
  118. package/dist-server/controllers/activity-instance/post.js +38 -3
  119. package/dist-server/controllers/activity-instance/post.js.map +1 -1
  120. package/dist-server/controllers/activity-instance/start.js +1 -1
  121. package/dist-server/controllers/activity-instance/start.js.map +1 -1
  122. package/dist-server/controllers/activity-thread/submit.js +1 -1
  123. package/dist-server/controllers/activity-thread/submit.js.map +1 -1
  124. package/dist-server/controllers/common.js +72 -25
  125. package/dist-server/controllers/common.js.map +1 -1
  126. package/dist-server/controllers/index.js +1 -1
  127. package/dist-server/controllers/index.js.map +1 -1
  128. package/dist-server/service/activity/activity-history.js +38 -1
  129. package/dist-server/service/activity/activity-history.js.map +1 -1
  130. package/dist-server/service/activity/activity-search-key-item-type.js +28 -0
  131. package/dist-server/service/activity/activity-search-key-item-type.js.map +1 -0
  132. package/dist-server/service/activity/activity-type.js +56 -0
  133. package/dist-server/service/activity/activity-type.js.map +1 -1
  134. package/dist-server/service/activity/activity.js +40 -4
  135. package/dist-server/service/activity/activity.js.map +1 -1
  136. package/dist-server/service/activity-approval/event-subscriber.js +1 -1
  137. package/dist-server/service/activity-approval/event-subscriber.js.map +1 -1
  138. package/dist-server/service/activity-instance/activity-instance-history.js +53 -0
  139. package/dist-server/service/activity-instance/activity-instance-history.js.map +1 -1
  140. package/dist-server/service/activity-instance/activity-instance-query.js +29 -0
  141. package/dist-server/service/activity-instance/activity-instance-query.js.map +1 -1
  142. package/dist-server/service/activity-instance/activity-instance-type.js +16 -0
  143. package/dist-server/service/activity-instance/activity-instance-type.js.map +1 -1
  144. package/dist-server/service/activity-instance/activity-instance.js +63 -0
  145. package/dist-server/service/activity-instance/activity-instance.js.map +1 -1
  146. package/dist-server/service/activity-instance/event-subscriber.js +4 -4
  147. package/dist-server/service/activity-instance/event-subscriber.js.map +1 -1
  148. package/dist-server/service/activity-thread/activity-thread-query.js +27 -0
  149. package/dist-server/service/activity-thread/activity-thread-query.js.map +1 -1
  150. package/dist-server/service/activity-thread/activity-thread.js +4 -1
  151. package/dist-server/service/activity-thread/activity-thread.js.map +1 -1
  152. package/dist-server/service/installable-activity/installable-activity-mutation.js +1 -1
  153. package/dist-server/service/installable-activity/installable-activity-mutation.js.map +1 -1
  154. package/dist-server/service/installable-activity/installable-activity-query.js +1 -1
  155. package/dist-server/service/installable-activity/installable-activity-query.js.map +1 -1
  156. package/dist-server/service/installable-activity/installable-activity.js.map +1 -1
  157. package/dist-server/tsconfig.tsbuildinfo +1 -1
  158. package/package.json +9 -8
  159. package/server/controllers/activity-approval/approve.ts +3 -0
  160. package/server/controllers/activity-approval/reject.ts +3 -0
  161. package/server/controllers/{activity-installation-controller.ts → activity-installation/activity-installation-controller.ts} +12 -1
  162. package/server/controllers/activity-instance/abort.ts +1 -1
  163. package/server/controllers/activity-instance/adjust.ts +1 -1
  164. package/server/controllers/activity-instance/delegate.ts +9 -1
  165. package/server/controllers/activity-instance/draft.ts +16 -5
  166. package/server/controllers/activity-instance/post.ts +54 -6
  167. package/server/controllers/activity-instance/start.ts +1 -1
  168. package/server/controllers/activity-thread/submit.ts +1 -0
  169. package/server/controllers/common.ts +85 -28
  170. package/server/controllers/index.ts +1 -1
  171. package/server/service/activity/activity-history.ts +32 -1
  172. package/server/service/activity/activity-search-key-item-type.ts +16 -0
  173. package/server/service/activity/activity-type.ts +46 -1
  174. package/server/service/activity/activity.ts +34 -4
  175. package/server/service/activity-approval/event-subscriber.ts +1 -1
  176. package/server/service/activity-instance/activity-instance-history.ts +41 -0
  177. package/server/service/activity-instance/activity-instance-query.ts +30 -1
  178. package/server/service/activity-instance/activity-instance-type.ts +12 -0
  179. package/server/service/activity-instance/activity-instance.ts +49 -0
  180. package/server/service/activity-instance/event-subscriber.ts +4 -4
  181. package/server/service/activity-thread/activity-thread-query.ts +24 -0
  182. package/server/service/activity-thread/activity-thread.ts +6 -3
  183. package/server/service/installable-activity/installable-activity-mutation.ts +1 -1
  184. package/server/service/installable-activity/installable-activity-query.ts +1 -1
  185. package/server/service/installable-activity/installable-activity.ts +3 -1
  186. package/things-factory.config.js +5 -1
  187. package/translations/en.json +7 -0
  188. package/translations/ko.json +7 -0
  189. package/translations/ms.json +7 -0
  190. package/translations/zh.json +7 -0
  191. package/dist-client/types.js.map +0 -1
  192. package/dist-server/controllers/activity-installation-controller.js.map +0 -1
  193. package/dist-server/controllers/call-webhook.js.map +0 -1
  194. /package/dist-server/controllers/{call-webhook.js → activity-installation/call-webhook.js} +0 -0
  195. /package/server/controllers/{call-webhook.ts → activity-installation/call-webhook.ts} +0 -0
@@ -11,6 +11,14 @@ class ActivityInstallations {
11
11
  static list() {
12
12
  return Object.values(ActivityInstallations.templates);
13
13
  }
14
+ static async callback(name, activityInstance, context) {
15
+ const installableActivity = ActivityInstallations.templates[name];
16
+ if (!installableActivity) {
17
+ return;
18
+ }
19
+ const { callback } = installableActivity;
20
+ callback && (await callback(activityInstance, context));
21
+ }
14
22
  }
15
23
  exports.ActivityInstallations = ActivityInstallations;
16
24
  ActivityInstallations.templates = {};
@@ -0,0 +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,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAY,EAAE,gBAAqB,EAAE,OAAwB;QACjF,MAAM,mBAAmB,GAAG,qBAAqB,CAAC,SAAS,CAAC,IAAI,CAAC,CAAA;QACjE,IAAI,CAAC,mBAAmB,EAAE;YACxB,OAAM;SACP;QAED,MAAM,EAAE,QAAQ,EAAE,GAAG,mBAAmB,CAAA;QAExC,QAAQ,IAAI,CAAC,MAAM,QAAQ,CAAC,gBAAgB,EAAE,OAAO,CAAC,CAAC,CAAA;IACzD,CAAC;;AAxBH,sDAyBC;AAxBQ,+BAAS,GAA4C,EAAE,CAAA","sourcesContent":["import { InstallableActivity } from '../../service/installable-activity/installable-activity'\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 static async callback(name: string, activityInstance: 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, context))\n }\n}\n"]}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"call-webhook.js","sourceRoot":"","sources":["../../../server/controllers/activity-installation/call-webhook.ts"],"names":[],"mappings":";;;AACA,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;QACF,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;KACL;IAAC,OAAO,GAAG,EAAE;QACZ,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;KACnB;AACH,CAAC;AAnCD,kCAmCC","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"]}
@@ -15,7 +15,7 @@ async function abort({ id, reason }, context) {
15
15
  activityInstance: id
16
16
  }));
17
17
  }
18
- return await repository.save(Object.assign(Object.assign({}, activityInstance), { reason, state: await (0, common_1.evalActivityInstanceState)(id, context), transaction: 'abort', updater: user, terminatedAt: new Date(), terminator: user }));
18
+ 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
19
  }
20
20
  exports.abort = abort;
21
21
  //# sourceMappingURL=abort.js.map
@@ -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,iCACvB,gBAAgB,KACnB,MAAM,EACN,KAAK,EAAE,MAAM,IAAA,kCAAyB,EAAC,EAAE,EAAE,OAAO,CAAC,EACnD,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 state: 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,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"]}
@@ -10,7 +10,7 @@ async function adjust(id, patch, context) {
10
10
  where: { domain: { id: domain.id }, id },
11
11
  relations: ['domain', 'activity', 'assigneeRole', 'supervisoryRole', 'updater', 'creator', 'starter', 'terminator']
12
12
  });
13
- return await repository.save(Object.assign(Object.assign(Object.assign({}, activityInstance), patch), { transaction: 'adjust', state: await (0, common_1.evalActivityInstanceState)(id, context), updater: user }));
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
14
  }
15
15
  exports.adjust = adjust;
16
16
  //# sourceMappingURL=adjust.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"adjust.js","sourceRoot":"","sources":["../../../server/controllers/activity-instance/adjust.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,+CACvB,gBAAgB,GAChB,KAAK,KACR,WAAW,EAAE,QAAQ,EACrB,KAAK,EAAE,MAAM,IAAA,kCAAyB,EAAC,EAAE,EAAE,OAAO,CAAC,EACnD,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 state: await evalActivityInstanceState(id, context),\n updater: user\n })\n}\n"]}
1
+ {"version":3,"file":"adjust.js","sourceRoot":"","sources":["../../../server/controllers/activity-instance/adjust.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"]}
@@ -15,6 +15,11 @@ async function delegate({ id, assigneeRole, dueAt, reason }, context) {
15
15
  activityInstance: id
16
16
  }));
17
17
  }
18
+ if (!activityInstance.isDelegatable()) {
19
+ throw new Error(context.t('error.activity-instance not delegatable', {
20
+ activityInstance: id
21
+ }));
22
+ }
18
23
  if (dueAt) {
19
24
  activityInstance.dueAt = dueAt;
20
25
  }
@@ -1 +1 @@
1
- {"version":3,"file":"delegate.js","sourceRoot":"","sources":["../../../server/controllers/activity-instance/delegate.ts"],"names":[],"mappings":";;;AAAA,yFAAoF;AACpF,sCAAqD;AAE9C,KAAK,UAAU,QAAQ,CAC5B,EACE,EAAE,EACF,YAAY,EACZ,KAAK,EACL,MAAM,EAMP,EACD,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,OAAO,MAAM,UAAU,CAAC,IAAI,iCACvB,gBAAgB,KACnB,MAAM;QACN,YAAY,EACZ,WAAW,EAAE,UAAU,EACvB,KAAK,EAAE,MAAM,IAAA,kCAAyB,EAAC,EAAE,EAAE,OAAO,CAAC,EACnD,OAAO,EAAE,IAAI,EACb,UAAU,EAAE,IAAI,IAAI,EAAE,IACtB,CAAA;AACJ,CAAC;AA5CD,4BA4CC","sourcesContent":["import { ActivityInstance } from '../../service/activity-instance/activity-instance'\nimport { evalActivityInstanceState } from '../common'\n\nexport async function delegate(\n {\n id,\n assigneeRole,\n dueAt,\n reason\n }: {\n id: string\n assigneeRole?: object\n dueAt?: Date\n reason?: string\n },\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 return await repository.save({\n ...activityInstance,\n reason,\n assigneeRole,\n transaction: 'delegate',\n state: await evalActivityInstanceState(id, context),\n updater: user,\n assignedAt: new Date()\n })\n}\n"]}
1
+ {"version":3,"file":"delegate.js","sourceRoot":"","sources":["../../../server/controllers/activity-instance/delegate.ts"],"names":[],"mappings":";;;AAAA,yFAA4G;AAC5G,sCAAqD;AAE9C,KAAK,UAAU,QAAQ,CAC5B,EACE,EAAE,EACF,YAAY,EACZ,KAAK,EACL,MAAM,EAMP,EACD,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,aAAa,EAAE,EAAE;QACrC,MAAM,IAAI,KAAK,CACb,OAAO,CAAC,CAAC,CAAC,yCAAyC,EAAE;YACnD,gBAAgB,EAAE,EAAE;SACrB,CAAC,CACH,CAAA;KACF;IAED,IAAI,KAAK,EAAE;QACT,gBAAgB,CAAC,KAAK,GAAG,KAAK,CAAA;KAC/B;IAED,OAAO,MAAM,UAAU,CAAC,IAAI,iCACvB,gBAAgB,KACnB,MAAM;QACN,YAAY,EACZ,WAAW,EAAE,UAAU,EACvB,KAAK,EAAE,MAAM,IAAA,kCAAyB,EAAC,EAAE,EAAE,OAAO,CAAC,EACnD,OAAO,EAAE,IAAI,EACb,UAAU,EAAE,IAAI,IAAI,EAAE,IACtB,CAAA;AACJ,CAAC;AApDD,4BAoDC","sourcesContent":["import { ActivityInstance, ActivityInstanceStatus } from '../../service/activity-instance/activity-instance'\nimport { evalActivityInstanceState } from '../common'\n\nexport async function delegate(\n {\n id,\n assigneeRole,\n dueAt,\n reason\n }: {\n id: string\n assigneeRole?: object\n dueAt?: Date\n reason?: string\n },\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.isDelegatable()) {\n throw new Error(\n context.t('error.activity-instance not delegatable', {\n activityInstance: id\n })\n )\n }\n\n if (dueAt) {\n activityInstance.dueAt = dueAt\n }\n\n return await repository.save({\n ...activityInstance,\n reason,\n assigneeRole,\n transaction: 'delegate',\n state: await evalActivityInstanceState(id, context),\n updater: user,\n assignedAt: new Date()\n })\n}\n"]}
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.draft = void 0;
4
4
  const activity_instance_1 = require("../../service/activity-instance/activity-instance");
5
5
  const activity_1 = require("../../service/activity/activity");
6
+ const common_1 = require("../common");
6
7
  async function draft(activityInstance, context) {
7
8
  const { domain, user, tx } = context.state;
8
9
  const { activityId, input, dueAt } = activityInstance;
@@ -21,6 +22,12 @@ async function draft(activityInstance, context) {
21
22
  }
22
23
  activityInstance.adhocType = 'standard';
23
24
  activityInstance.refBy = activityId;
25
+ if (!activityInstance.assignees) {
26
+ activityInstance.assignees = activity.assignees;
27
+ }
28
+ if (!activityInstance.approvalLine) {
29
+ activityInstance.approvalLine = activity.approvalLine;
30
+ }
24
31
  if (!dueAt && activity.standardTime) {
25
32
  activityInstance.dueAt = new Date(Date.now() + activity.standardTime * 1000);
26
33
  }
@@ -32,6 +39,8 @@ async function draft(activityInstance, context) {
32
39
  };
33
40
  });
34
41
  }
42
+ else {
43
+ }
35
44
  if (activityInstance.approvalLine) {
36
45
  activityInstance.approvalLine = activityInstance.approvalLine.map(approval => {
37
46
  return {
@@ -40,7 +49,13 @@ async function draft(activityInstance, context) {
40
49
  };
41
50
  });
42
51
  }
43
- return await tx.getRepository(activity_instance_1.ActivityInstance).save(Object.assign(Object.assign({ activityType: activity.activityType, uiType: activity.uiType, uiSource: activity.uiSource, assigneeRole: activity.assigneeRole, supervisoryRole: activity.supervisoryRole, adhocType: activity.adhocType, refBy: activity.refBy }, activityInstance), { transaction: 'draft', activity, state: activity_instance_1.ActivityInstanceStatus.Draft, domain, creator: user, updater: user }));
52
+ const activitySearchKeys = (0, common_1.fillActivitySearchKeys)(activity === null || activity === void 0 ? void 0 : activity.searchKeys, input);
53
+ return await tx.getRepository(activity_instance_1.ActivityInstance).save(Object.assign(Object.assign(Object.assign(Object.assign({ activityType: activity.activityType,
54
+ // uiType: activity.uiType,
55
+ // uiSource: activity.uiSource,
56
+ // viewType: activity.viewType,
57
+ // viewSource: activity.viewSource,
58
+ assigneeRole: activity.assigneeRole, supervisoryRole: activity.supervisoryRole }, activityInstance), { transaction: 'draft', activity }), activitySearchKeys), { state: activity_instance_1.ActivityInstanceStatus.Draft, domain, creator: user, updater: user }));
44
59
  }
45
60
  exports.draft = draft;
46
61
  //# sourceMappingURL=draft.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"draft.js","sourceRoot":"","sources":["../../../server/controllers/activity-instance/draft.ts"],"names":[],"mappings":";;;AAAA,yFAA4G;AAE5G,8DAA0D;AAEnD,KAAK,UAAU,KAAK,CACzB,gBAAqC,EACrC,OAAwB;IAExB,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,KAAK,CAAA;IAC1C,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,gBAAgB,CAAA;IAErD,IAAI,UAAU,GAAG,EAAE,CAAC,aAAa,CAAC,mBAAQ,CAAC,CAAA;IAC3C,IAAI,QAAQ,GAAG,EAAS,CAAA;IAExB,IAAI,UAAU,EAAE;QACd,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;YACb,MAAM,IAAI,KAAK,CACb,OAAO,CAAC,CAAC,CAAC,0BAA0B,EAAE;gBACpC,QAAQ,EAAE,UAAU;aACrB,CAAC,CACH,CAAA;SACF;KACF;IAED,gBAAgB,CAAC,SAAS,GAAG,UAAU,CAAA;IACvC,gBAAgB,CAAC,KAAK,GAAG,UAAU,CAAA;IAEnC,IAAI,CAAC,KAAK,IAAI,QAAQ,CAAC,YAAY,EAAE;QACnC,gBAAgB,CAAC,KAAK,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,QAAQ,CAAC,YAAY,GAAG,IAAI,CAAC,CAAA;KAC7E;IAED,IAAI,gBAAgB,CAAC,SAAS,EAAE;QAC9B,gBAAgB,CAAC,SAAS,GAAG,gBAAgB,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE;YACrE,OAAO;gBACL,IAAI,EAAE,QAAQ,CAAC,IAAI;gBACnB,KAAK,EAAE,QAAQ,CAAC,KAAK;aACtB,CAAA;QACH,CAAC,CAAC,CAAA;KACH;IAED,IAAI,gBAAgB,CAAC,YAAY,EAAE;QACjC,gBAAgB,CAAC,YAAY,GAAG,gBAAgB,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE;YAC3E,OAAO;gBACL,IAAI,EAAE,QAAQ,CAAC,IAAI;gBACnB,KAAK,EAAE,QAAQ,CAAC,KAAK;aACtB,CAAA;QACH,CAAC,CAAC,CAAA;KACH;IAED,OAAO,MAAM,EAAE,CAAC,aAAa,CAAC,oCAAgB,CAAC,CAAC,IAAI,+BAClD,YAAY,EAAE,QAAQ,CAAC,YAAY,EACnC,MAAM,EAAE,QAAQ,CAAC,MAAM,EACvB,QAAQ,EAAE,QAAQ,CAAC,QAAQ,EAC3B,YAAY,EAAE,QAAQ,CAAC,YAAY,EACnC,eAAe,EAAE,QAAQ,CAAC,eAAe,EACzC,SAAS,EAAE,QAAQ,CAAC,SAAS,EAC7B,KAAK,EAAE,QAAQ,CAAC,KAAK,IAClB,gBAAgB,KACnB,WAAW,EAAE,OAAO,EACpB,QAAQ,EACR,KAAK,EAAE,0CAAsB,CAAC,KAAK,EACnC,MAAM,EACN,OAAO,EAAE,IAAI,EACb,OAAO,EAAE,IAAI,IACb,CAAA;AACJ,CAAC;AAlED,sBAkEC","sourcesContent":["import { ActivityInstance, ActivityInstanceStatus } from '../../service/activity-instance/activity-instance'\nimport { NewActivityInstance } from '../../service/activity-instance/activity-instance-type'\nimport { Activity } from '../../service/activity/activity'\n\nexport async function draft(\n activityInstance: NewActivityInstance,\n context: ResolverContext\n): Promise<ActivityInstance> {\n const { domain, user, tx } = context.state\n const { activityId, input, dueAt } = activityInstance\n\n var repository = tx.getRepository(Activity)\n var activity = {} as any\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.adhocType = 'standard'\n activityInstance.refBy = activityId\n\n if (!dueAt && activity.standardTime) {\n activityInstance.dueAt = new Date(Date.now() + activity.standardTime * 1000)\n }\n\n if (activityInstance.assignees) {\n activityInstance.assignees = activityInstance.assignees.map(assignee => {\n return {\n type: assignee.type,\n value: assignee.value\n }\n })\n }\n\n if (activityInstance.approvalLine) {\n activityInstance.approvalLine = activityInstance.approvalLine.map(approval => {\n return {\n type: approval.type,\n value: approval.value\n }\n })\n }\n\n return await tx.getRepository(ActivityInstance).save({\n activityType: activity.activityType,\n uiType: activity.uiType,\n uiSource: activity.uiSource,\n assigneeRole: activity.assigneeRole,\n supervisoryRole: activity.supervisoryRole,\n adhocType: activity.adhocType,\n refBy: activity.refBy,\n ...activityInstance,\n transaction: 'draft',\n activity,\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":";;;AAAA,yFAA4G;AAE5G,8DAA0D;AAC1D,sCAAkD;AAE3C,KAAK,UAAU,KAAK,CACzB,gBAAqC,EACrC,OAAwB;IAExB,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,KAAK,CAAA;IAC1C,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,gBAAgB,CAAA;IAErD,IAAI,UAAU,GAAG,EAAE,CAAC,aAAa,CAAC,mBAAQ,CAAC,CAAA;IAC3C,IAAI,QAAQ,GAAG,EAAc,CAAA;IAE7B,IAAI,UAAU,EAAE;QACd,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;YACb,MAAM,IAAI,KAAK,CACb,OAAO,CAAC,CAAC,CAAC,0BAA0B,EAAE;gBACpC,QAAQ,EAAE,UAAU;aACrB,CAAC,CACH,CAAA;SACF;KACF;IAED,gBAAgB,CAAC,SAAS,GAAG,UAAU,CAAA;IACvC,gBAAgB,CAAC,KAAK,GAAG,UAAU,CAAA;IACnC,IAAI,CAAC,gBAAgB,CAAC,SAAS,EAAE;QAC/B,gBAAgB,CAAC,SAAS,GAAG,QAAQ,CAAC,SAAS,CAAA;KAChD;IACD,IAAI,CAAC,gBAAgB,CAAC,YAAY,EAAE;QAClC,gBAAgB,CAAC,YAAY,GAAG,QAAQ,CAAC,YAAY,CAAA;KACtD;IAED,IAAI,CAAC,KAAK,IAAI,QAAQ,CAAC,YAAY,EAAE;QACnC,gBAAgB,CAAC,KAAK,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,QAAQ,CAAC,YAAY,GAAG,IAAI,CAAC,CAAA;KAC7E;IAED,IAAI,gBAAgB,CAAC,SAAS,EAAE;QAC9B,gBAAgB,CAAC,SAAS,GAAG,gBAAgB,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE;YACrE,OAAO;gBACL,IAAI,EAAE,QAAQ,CAAC,IAAI;gBACnB,KAAK,EAAE,QAAQ,CAAC,KAAK;aACtB,CAAA;QACH,CAAC,CAAC,CAAA;KACH;SAAM;KACN;IAED,IAAI,gBAAgB,CAAC,YAAY,EAAE;QACjC,gBAAgB,CAAC,YAAY,GAAG,gBAAgB,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE;YAC3E,OAAO;gBACL,IAAI,EAAE,QAAQ,CAAC,IAAI;gBACnB,KAAK,EAAE,QAAQ,CAAC,KAAK;aACtB,CAAA;QACH,CAAC,CAAC,CAAA;KACH;IAED,MAAM,kBAAkB,GAAG,IAAA,+BAAsB,EAAC,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,UAAU,EAAE,KAAK,CAAC,CAAA;IAE9E,OAAO,MAAM,EAAE,CAAC,aAAa,CAAC,oCAAgB,CAAC,CAAC,IAAI,2DAClD,YAAY,EAAE,QAAQ,CAAC,YAAY;QACnC,2BAA2B;QAC3B,+BAA+B;QAC/B,+BAA+B;QAC/B,mCAAmC;QACnC,YAAY,EAAE,QAAQ,CAAC,YAAY,EACnC,eAAe,EAAE,QAAQ,CAAC,eAAe,IACtC,gBAAgB,KACnB,WAAW,EAAE,OAAO,EACpB,QAAQ,KACL,kBAAkB,KACrB,KAAK,EAAE,0CAAsB,CAAC,KAAK,EACnC,MAAM,EACN,OAAO,EAAE,IAAI,EACb,OAAO,EAAE,IAAI,IACb,CAAA;AACJ,CAAC;AA5ED,sBA4EC","sourcesContent":["import { ActivityInstance, ActivityInstanceStatus } from '../../service/activity-instance/activity-instance'\nimport { NewActivityInstance } from '../../service/activity-instance/activity-instance-type'\nimport { Activity } from '../../service/activity/activity'\nimport { fillActivitySearchKeys } from '../common'\n\nexport async function draft(\n activityInstance: NewActivityInstance,\n context: ResolverContext\n): Promise<ActivityInstance> {\n const { domain, user, tx } = context.state\n const { activityId, input, dueAt } = activityInstance\n\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.adhocType = 'standard'\n activityInstance.refBy = activityId\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 if (activityInstance.assignees) {\n activityInstance.assignees = activityInstance.assignees.map(assignee => {\n return {\n type: assignee.type,\n value: assignee.value\n }\n })\n } else {\n }\n\n if (activityInstance.approvalLine) {\n activityInstance.approvalLine = activityInstance.approvalLine.map(approval => {\n return {\n type: approval.type,\n value: approval.value\n }\n })\n }\n\n const activitySearchKeys = fillActivitySearchKeys(activity?.searchKeys, input)\n\n return await tx.getRepository(ActivityInstance).save({\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,11 +1,13 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.post = void 0;
4
+ const activity_1 = require("../../service/activity/activity");
4
5
  const activity_instance_1 = require("../../service/activity-instance/activity-instance");
5
6
  const common_1 = require("../common");
6
7
  async function post(activityInstance, context) {
7
8
  const { domain, user, tx } = context.state;
8
- const { id, assignees } = activityInstance;
9
+ const issuedAt = new Date();
10
+ var { id, assignees, dueAt, approvalLine, activityId, input } = activityInstance;
9
11
  var origin = id
10
12
  ? await tx.getRepository(activity_instance_1.ActivityInstance).findOne({
11
13
  where: { domain: { id: domain.id }, id },
@@ -21,9 +23,42 @@ async function post(activityInstance, context) {
21
23
  ]
22
24
  })
23
25
  : null;
24
- const posted = await tx.getRepository(activity_instance_1.ActivityInstance).save(Object.assign(Object.assign(Object.assign({}, origin), activityInstance), { transaction: 'post', state: activity_instance_1.ActivityInstanceStatus.Posted, domain, creator: user, updater: user }));
26
+ if (!origin && activityId) {
27
+ var repository = tx.getRepository(activity_1.Activity);
28
+ var activity = {};
29
+ if (activityId) {
30
+ activity = await repository.findOne({
31
+ where: { domain: { id: domain.id }, id: activityId },
32
+ relations: ['assigneeRole', 'supervisoryRole']
33
+ });
34
+ if (!activity) {
35
+ throw new Error(context.t('error.activity not found', {
36
+ activity: activityId
37
+ }));
38
+ }
39
+ }
40
+ activityInstance.activityType = activity.activityType;
41
+ // activityInstance.uiType = activity.uiType
42
+ // activityInstance.uiSource = activity.uiSource
43
+ activityInstance.assigneeRole = activity.assigneeRole;
44
+ activityInstance.supervisoryRole = activity.supervisoryRole;
45
+ if (!assignees || !approvalLine) {
46
+ activityInstance.adhocType = 'standard';
47
+ activityInstance.refBy = activityId;
48
+ if (!activityInstance.assignees) {
49
+ activityInstance.assignees = activity.assignees;
50
+ }
51
+ if (!activityInstance.approvalLine) {
52
+ activityInstance.approvalLine = activity.approvalLine;
53
+ }
54
+ if (!dueAt && activity.standardTime) {
55
+ activityInstance.dueAt = new Date(issuedAt.getTime() + activity.standardTime * 1000);
56
+ }
57
+ }
58
+ }
59
+ const activitySearchKeys = (0, common_1.fillActivitySearchKeys)(activity === null || activity === void 0 ? void 0 : activity.searchKeys, input);
60
+ const posted = await tx.getRepository(activity_instance_1.ActivityInstance).save(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({ creator: user }, origin), activityInstance), { transaction: 'post', activity }), activitySearchKeys), { state: activity_instance_1.ActivityInstanceStatus.Posted, domain, issuer: user, updater: user, issuedAt }));
25
61
  const assignedUsers = await Promise.all(assignees.map(assignee => (0, common_1.getSystemUserFromOrgMemberItem)(assignee, context)));
26
- assignees.map(async (assignee) => await (0, common_1.getSystemUserFromOrgMemberItem)(assignee, context));
27
62
  if (assignedUsers.length == 0 && posted.threadsMin === 0 && posted.assigneeRoleId) {
28
63
  await (0, common_1.createActivityThreadsForAllRoleUsers)('post', posted, context);
29
64
  }
@@ -1 +1 @@
1
- {"version":3,"file":"post.js","sourceRoot":"","sources":["../../../server/controllers/activity-instance/post.ts"],"names":[],"mappings":";;;AAAA,yFAA4G;AAE5G,sCAIkB;AAEX,KAAK,UAAU,IAAI,CACxB,gBAAsC,EACtC,OAAwB;IAExB,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,KAAK,CAAA;IAC1C,MAAM,EAAE,EAAE,EAAE,SAAS,EAAE,GAAG,gBAAgB,CAAA;IAE1C,IAAI,MAAM,GAAG,EAAE;QACb,CAAC,CAAC,MAAM,EAAE,CAAC,aAAa,CAAC,oCAAgB,CAAC,CAAC,OAAO,CAAC;YAC/C,KAAK,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE;YACxC,SAAS,EAAE;gBACT,QAAQ;gBACR,UAAU;gBACV,cAAc;gBACd,iBAAiB;gBACjB,SAAS;gBACT,SAAS;gBACT,SAAS;gBACT,YAAY;aACb;SACF,CAAC;QACJ,CAAC,CAAC,IAAI,CAAA;IAER,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,aAAa,CAAC,oCAAgB,CAAC,CAAC,IAAI,+CACvD,MAAM,GACN,gBAAgB,KACnB,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,0CAAsB,CAAC,MAAM,EACpC,MAAM,EACN,OAAO,EAAE,IAAI,EACb,OAAO,EAAE,IAAI,IACb,CAAA;IAEF,MAAM,aAAa,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAA,uCAA8B,EAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC,CAAA;IAErH,SAAS,CAAC,GAAG,CAAC,KAAK,EAAC,QAAQ,EAAC,EAAE,CAAC,MAAM,IAAA,uCAA8B,EAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAA;IAExF,IAAI,aAAa,CAAC,MAAM,IAAI,CAAC,IAAI,MAAM,CAAC,UAAU,KAAK,CAAC,IAAI,MAAM,CAAC,cAAc,EAAE;QACjF,MAAM,IAAA,6CAAoC,EAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,CAAA;KACpE;IAED,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE;QAC5B,MAAM,IAAA,sCAA6B,EAAC,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,OAAO,CAAC,CAAA;KAC5E;IAED,OAAO,MAAM,EAAE,CAAC,aAAa,CAAC,oCAAgB,CAAC,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC,CAAA;AAC9E,CAAC;AA9CD,oBA8CC","sourcesContent":["import { 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} 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 { id, assignees } = 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 const posted = await tx.getRepository(ActivityInstance).save({\n ...origin,\n ...activityInstance,\n transaction: 'post',\n state: ActivityInstanceStatus.Posted,\n domain,\n creator: user,\n updater: user\n })\n\n const assignedUsers = await Promise.all(assignees.map(assignee => getSystemUserFromOrgMemberItem(assignee, context)))\n\n assignees.map(async assignee => await getSystemUserFromOrgMemberItem(assignee, context))\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 { id, assignees, dueAt, approvalLine, activityId, input } = 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.activityType = activity.activityType\n // activityInstance.uiType = activity.uiType\n // activityInstance.uiSource = activity.uiSource\n activityInstance.assigneeRole = activity.assigneeRole\n activityInstance.supervisoryRole = activity.supervisoryRole\n\n if (!assignees || !approvalLine) {\n activityInstance.adhocType = 'standard'\n activityInstance.refBy = activityId\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(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(assignees.map(assignee => getSystemUserFromOrgMemberItem(assignee, context)))\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"]}
@@ -10,7 +10,7 @@ async function start(id, context) {
10
10
  where: { domain: { id: domain.id }, id },
11
11
  relations: ['domain', 'activity', 'assigneeRole', 'supervisoryRole', 'updater', 'creator', 'starter', 'terminator']
12
12
  });
13
- return await repository.save(Object.assign(Object.assign({}, activityInstance), { transaction: 'start', state: await (0, common_1.evalActivityInstanceState)(id, context), updater: user, startedAt: new Date() }));
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
14
  }
15
15
  exports.start = start;
16
16
  //# sourceMappingURL=start.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"start.js","sourceRoot":"","sources":["../../../server/controllers/activity-instance/start.ts"],"names":[],"mappings":";;;AAAA,yFAAoF;AACpF,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,iCACvB,gBAAgB,KACnB,WAAW,EAAE,OAAO,EACpB,KAAK,EAAE,MAAM,IAAA,kCAAyB,EAAC,EAAE,EAAE,OAAO,CAAC,EACnD,OAAO,EAAE,IAAI,EACb,SAAS,EAAE,IAAI,IAAI,EAAE,IACrB,CAAA;AACJ,CAAC;AAhBD,sBAgBC","sourcesContent":["import { ActivityInstance } 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 state: await evalActivityInstanceState(id, context),\n updater: user,\n startedAt: new Date()\n })\n}\n"]}
1
+ {"version":3,"file":"start.js","sourceRoot":"","sources":["../../../server/controllers/activity-instance/start.ts"],"names":[],"mappings":";;;AAAA,yFAAoF;AACpF,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 } 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"]}
@@ -38,7 +38,7 @@ async function submit({ id, output, reason }, context) {
38
38
  }
39
39
  else {
40
40
  var result = await repository.save(Object.assign(Object.assign({}, activityThread), { reason,
41
- output, transaction: 'end', state: activity_thread_1.ActivityThreadStatus.Ended, updater: user, terminatedAt: new Date() }));
41
+ output, transaction: 'end', state: activity_thread_1.ActivityThreadStatus.Ended, updater: user, terminator: user, terminatedAt: new Date() }));
42
42
  }
43
43
  await (0, common_1.updateActivityInstanceState)(activityThread.activityInstanceId, context);
44
44
  return result;
@@ -1 +1 @@
1
- {"version":3,"file":"submit.js","sourceRoot":"","sources":["../../../server/controllers/activity-thread/submit.ts"],"names":[],"mappings":";;;AAAA,mFAAoG;AACpG,yFAA8G;AAC9G,sCAAuF;AAIhF,KAAK,UAAU,MAAM,CAC1B,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,gCAAc,CAAC,CAAA;IAEnD,IAAI,cAAc,GAAG,MAAM,UAAU,CAAC,OAAO,CAAC;QAC5C,KAAK,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE;QACxC,SAAS,EAAE,CAAC,kBAAkB,CAAC;KAChC,CAAC,CAAA;IAEF,IAAI,CAAC,cAAc,EAAE;QACnB,MAAM,IAAI,KAAK,CACb,OAAO,CAAC,CAAC,CAAC,iCAAiC,EAAE;YAC3C,cAAc,EAAE,EAAE;SACnB,CAAC,CACH,CAAA;KACF;IAED,MAAM,YAAY,GAAuB,cAAc,CAAC,gBAAgB,CAAC,YAAY,CAAA;IAErF,IAAI,YAAY,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE;QAC3C,IAAI,YAAY,GAAG,MAAM,IAAA,uCAA8B,EAAC,YAAY,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAA;QAEjF,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,cAAc,CAAC,KAAK;YAC3B,KAAK,EAAE,CAAC;YACR,QAAQ,EAAE,4CAAwB,CAAC,OAAO;YAC1C,WAAW,EAAE,QAAQ;YACrB,QAAQ,EAAE,YAAY;YACtB,OAAO,EAAE,IAAI;YACb,OAAO,EAAE,IAAI;SACd,CAAC,CAAA;QAEF,IAAI,MAAM,GAAG,MAAM,UAAU,CAAC,IAAI,iCAC7B,cAAc,KACjB,MAAM;YACN,MAAM,EACN,WAAW,EAAE,QAAQ,EACrB,KAAK,EAAE,sCAAoB,CAAC,SAAS,EACrC,OAAO,EAAE,IAAI,IACb,CAAA;KACH;SAAM;QACL,IAAI,MAAM,GAAG,MAAM,UAAU,CAAC,IAAI,iCAC7B,cAAc,KACjB,MAAM;YACN,MAAM,EACN,WAAW,EAAE,KAAK,EAClB,KAAK,EAAE,sCAAoB,CAAC,KAAK,EACjC,OAAO,EAAE,IAAI,EACb,YAAY,EAAE,IAAI,IAAI,EAAE,IACxB,CAAA;KACH;IAED,MAAM,IAAA,oCAA2B,EAAC,cAAc,CAAC,kBAAkB,EAAE,OAAO,CAAC,CAAA;IAE7E,OAAO,MAAM,CAAA;AACf,CAAC;AAjED,wBAiEC","sourcesContent":["import { ActivityThread, ActivityThreadStatus } from '../../service/activity-thread/activity-thread'\nimport { ActivityApproval, ActivityApprovalJudgment } from '../../service/activity-approval/activity-approval'\nimport { getSystemUserFromOrgMemberItem, updateActivityInstanceState } from '../common'\nimport { User } from '@things-factory/auth-base'\nimport { Department, Employee, ApprovalLineItem, OrgMemberTargetType } from '@things-factory/organization'\n\nexport async function submit(\n { id, output, reason }: { id: string; output?: object; reason?: string },\n context: any\n): Promise<ActivityThread> {\n const { domain, user, tx } = context.state\n\n const repository = tx.getRepository(ActivityThread)\n\n var activityThread = await repository.findOne({\n where: { domain: { id: domain.id }, id },\n relations: ['activityInstance']\n })\n\n if (!activityThread) {\n throw new Error(\n context.t('error.activity-thread not found', {\n activityThread: id\n })\n )\n }\n\n const approvalLine: ApprovalLineItem[] = activityThread.activityInstance.approvalLine\n\n if (approvalLine && approvalLine.length > 0) {\n var approverUser = await getSystemUserFromOrgMemberItem(approvalLine[0], 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: 1,\n judgment: ActivityApprovalJudgment.Pending,\n transaction: 'submit',\n approver: approverUser,\n creator: user,\n updater: user\n })\n\n var result = await repository.save({\n ...activityThread,\n reason,\n output,\n transaction: 'submit',\n state: ActivityThreadStatus.Submitted,\n updater: user\n })\n } else {\n var result = await repository.save({\n ...activityThread,\n reason,\n output,\n transaction: 'end',\n state: ActivityThreadStatus.Ended,\n updater: user,\n terminatedAt: new Date()\n })\n }\n\n await updateActivityInstanceState(activityThread.activityInstanceId, context)\n\n return result\n}\n"]}
1
+ {"version":3,"file":"submit.js","sourceRoot":"","sources":["../../../server/controllers/activity-thread/submit.ts"],"names":[],"mappings":";;;AAAA,mFAAoG;AACpG,yFAA8G;AAC9G,sCAAuF;AAIhF,KAAK,UAAU,MAAM,CAC1B,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,gCAAc,CAAC,CAAA;IAEnD,IAAI,cAAc,GAAG,MAAM,UAAU,CAAC,OAAO,CAAC;QAC5C,KAAK,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE;QACxC,SAAS,EAAE,CAAC,kBAAkB,CAAC;KAChC,CAAC,CAAA;IAEF,IAAI,CAAC,cAAc,EAAE;QACnB,MAAM,IAAI,KAAK,CACb,OAAO,CAAC,CAAC,CAAC,iCAAiC,EAAE;YAC3C,cAAc,EAAE,EAAE;SACnB,CAAC,CACH,CAAA;KACF;IAED,MAAM,YAAY,GAAuB,cAAc,CAAC,gBAAgB,CAAC,YAAY,CAAA;IAErF,IAAI,YAAY,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE;QAC3C,IAAI,YAAY,GAAG,MAAM,IAAA,uCAA8B,EAAC,YAAY,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAA;QAEjF,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,cAAc,CAAC,KAAK;YAC3B,KAAK,EAAE,CAAC;YACR,QAAQ,EAAE,4CAAwB,CAAC,OAAO;YAC1C,WAAW,EAAE,QAAQ;YACrB,QAAQ,EAAE,YAAY;YACtB,OAAO,EAAE,IAAI;YACb,OAAO,EAAE,IAAI;SACd,CAAC,CAAA;QAEF,IAAI,MAAM,GAAG,MAAM,UAAU,CAAC,IAAI,iCAC7B,cAAc,KACjB,MAAM;YACN,MAAM,EACN,WAAW,EAAE,QAAQ,EACrB,KAAK,EAAE,sCAAoB,CAAC,SAAS,EACrC,OAAO,EAAE,IAAI,IACb,CAAA;KACH;SAAM;QACL,IAAI,MAAM,GAAG,MAAM,UAAU,CAAC,IAAI,iCAC7B,cAAc,KACjB,MAAM;YACN,MAAM,EACN,WAAW,EAAE,KAAK,EAClB,KAAK,EAAE,sCAAoB,CAAC,KAAK,EACjC,OAAO,EAAE,IAAI,EACb,UAAU,EAAE,IAAI,EAChB,YAAY,EAAE,IAAI,IAAI,EAAE,IACxB,CAAA;KACH;IAED,MAAM,IAAA,oCAA2B,EAAC,cAAc,CAAC,kBAAkB,EAAE,OAAO,CAAC,CAAA;IAE7E,OAAO,MAAM,CAAA;AACf,CAAC;AAlED,wBAkEC","sourcesContent":["import { ActivityThread, ActivityThreadStatus } from '../../service/activity-thread/activity-thread'\nimport { ActivityApproval, ActivityApprovalJudgment } from '../../service/activity-approval/activity-approval'\nimport { getSystemUserFromOrgMemberItem, updateActivityInstanceState } from '../common'\nimport { User } from '@things-factory/auth-base'\nimport { Department, Employee, ApprovalLineItem, OrgMemberTargetType } from '@things-factory/organization'\n\nexport async function submit(\n { id, output, reason }: { id: string; output?: object; reason?: string },\n context: any\n): Promise<ActivityThread> {\n const { domain, user, tx } = context.state\n\n const repository = tx.getRepository(ActivityThread)\n\n var activityThread = await repository.findOne({\n where: { domain: { id: domain.id }, id },\n relations: ['activityInstance']\n })\n\n if (!activityThread) {\n throw new Error(\n context.t('error.activity-thread not found', {\n activityThread: id\n })\n )\n }\n\n const approvalLine: ApprovalLineItem[] = activityThread.activityInstance.approvalLine\n\n if (approvalLine && approvalLine.length > 0) {\n var approverUser = await getSystemUserFromOrgMemberItem(approvalLine[0], 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: 1,\n judgment: ActivityApprovalJudgment.Pending,\n transaction: 'submit',\n approver: approverUser,\n creator: user,\n updater: user\n })\n\n var result = await repository.save({\n ...activityThread,\n reason,\n output,\n transaction: 'submit',\n state: ActivityThreadStatus.Submitted,\n updater: user\n })\n } else {\n var result = await repository.save({\n ...activityThread,\n reason,\n output,\n transaction: 'end',\n state: ActivityThreadStatus.Ended,\n updater: user,\n terminator: user,\n terminatedAt: new Date()\n })\n }\n\n await updateActivityInstanceState(activityThread.activityInstanceId, context)\n\n return result\n}\n"]}
@@ -1,34 +1,28 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getSystemUserFromOrgMemberItem = exports.getSystemUserFromMySupervosor = exports.getSystemUserFromMyDepartmentManager = exports.createActivityThreadsForAllRoleUsers = exports.createActivityThreadsForUsers = exports.evalActivityInstanceState = exports.updateActivityInstanceState = void 0;
3
+ exports.fillActivitySearchKeys = exports.getSystemUserFromOrgMemberItem = exports.getSystemUserFromMySupervosor = exports.getSystemUserFromMyDepartmentManager = exports.createActivityThreadsForAllRoleUsers = exports.createActivityThreadsForUsers = exports.evalActivityInstanceState = exports.updateActivityInstanceState = void 0;
4
4
  const auth_base_1 = require("@things-factory/auth-base");
5
5
  const activity_instance_1 = require("../service/activity-instance/activity-instance");
6
6
  const activity_thread_1 = require("../service/activity-thread/activity-thread");
7
7
  const organization_1 = require("@things-factory/organization");
8
+ const activity_installation_controller_1 = require("./activity-installation/activity-installation-controller");
8
9
  async function updateActivityInstanceState(id, context) {
9
10
  const { tx } = context.state;
10
- await tx.getRepository(activity_instance_1.ActivityInstance).save(Object.assign(Object.assign({}, (await tx.getRepository(activity_instance_1.ActivityInstance).findOne({
11
+ var activityInstance = await tx.getRepository(activity_instance_1.ActivityInstance).findOne({
11
12
  where: { id },
12
- relations: [
13
- 'domain',
14
- 'activity',
15
- 'assigneeRole',
16
- 'supervisoryRole',
17
- 'updater',
18
- 'creator',
19
- 'starter',
20
- 'terminator'
21
- ]
22
- }))), { transaction: 'thread' /* change by transaction of activity thread */, state: await evalActivityInstanceState(id, context) }));
13
+ relations: ['domain', 'activity', 'assigneeRole', 'supervisoryRole', 'updater', 'creator', 'starter', 'terminator']
14
+ });
15
+ activityInstance = await tx.getRepository(activity_instance_1.ActivityInstance).save(Object.assign(Object.assign(Object.assign({}, activityInstance), { transaction: 'thread' /* change by transaction of activity thread */ }), (await evalActivityInstanceState(id, context))));
16
+ await activity_installation_controller_1.ActivityInstallations.callback(activityInstance.activity.name, activityInstance, context);
23
17
  }
24
18
  exports.updateActivityInstanceState = updateActivityInstanceState;
25
19
  async function evalActivityInstanceState(id, context) {
26
- const { tx } = context.state;
20
+ const { tx, user } = context.state;
27
21
  const activityInstance = await tx.getRepository(activity_instance_1.ActivityInstance).findOne({
28
22
  where: { id },
29
23
  relations: ['activityThreads']
30
24
  });
31
- const { threadsMin, threadsMax, activityThreads, state, dueAt } = activityInstance;
25
+ const { threadsMin, activityThreads, state, dueAt } = activityInstance;
32
26
  const validThreads = activityThreads.filter(thread => thread.isValid());
33
27
  const pendingStartedThreads = activityThreads.filter(thread => thread.isPendingStarted());
34
28
  const pendingEndedThreads = activityThreads.filter(thread => thread.isPendingEnded());
@@ -36,17 +30,49 @@ async function evalActivityInstanceState(id, context) {
36
30
  case state === activity_instance_1.ActivityInstanceStatus.Draft:
37
31
  case state === activity_instance_1.ActivityInstanceStatus.Ended:
38
32
  case state === activity_instance_1.ActivityInstanceStatus.Aborted:
39
- return state;
33
+ return {};
40
34
  case validThreads.length === 0:
41
- return activity_instance_1.ActivityInstanceStatus.Posted;
35
+ return {
36
+ state: activity_instance_1.ActivityInstanceStatus.Posted
37
+ };
42
38
  case threadsMin > validThreads.length:
43
- return activity_instance_1.ActivityInstanceStatus.WaitingAssignment;
39
+ return {
40
+ state: activity_instance_1.ActivityInstanceStatus.WaitingAssignment
41
+ };
44
42
  case pendingStartedThreads.length > 0:
45
- return activity_instance_1.ActivityInstanceStatus.Assigned;
43
+ return {
44
+ state: activity_instance_1.ActivityInstanceStatus.Assigned,
45
+ assignedAt: new Date()
46
+ };
46
47
  case pendingEndedThreads.length > 0:
47
- return !dueAt || dueAt.getTime() > Date.now() ? activity_instance_1.ActivityInstanceStatus.Started : activity_instance_1.ActivityInstanceStatus.Pending;
48
+ var started = !dueAt || dueAt.getTime() > Date.now();
49
+ var changed = (started && state !== activity_instance_1.ActivityInstanceStatus.Started) || (!started && state !== activity_instance_1.ActivityInstanceStatus.Pending);
50
+ return !changed
51
+ ? null
52
+ : started
53
+ ? {
54
+ state: activity_instance_1.ActivityInstanceStatus.Started,
55
+ startedAt: new Date(),
56
+ starter: user
57
+ }
58
+ : {
59
+ state: activity_instance_1.ActivityInstanceStatus.Pending
60
+ };
48
61
  default:
49
- return activity_instance_1.ActivityInstanceStatus.Ended;
62
+ return {
63
+ state: activityThreads.find(thread => thread.state == activity_thread_1.ActivityThreadStatus.Aborted)
64
+ ? activity_instance_1.ActivityInstanceStatus.Aborted
65
+ : activity_instance_1.ActivityInstanceStatus.Ended,
66
+ reason: '',
67
+ output: activityThreads
68
+ .filter(thread => (thread.state = activity_thread_1.ActivityThreadStatus.Ended))
69
+ .reduce((sum, thread) => {
70
+ sum[thread.assigneeId] = thread.output;
71
+ return sum;
72
+ }, {}),
73
+ terminatedAt: new Date(),
74
+ terminator: user
75
+ };
50
76
  }
51
77
  }
52
78
  exports.evalActivityInstanceState = evalActivityInstanceState;
@@ -54,7 +80,10 @@ async function createActivityThreadsForUsers(transaction, activityInstance, assi
54
80
  const { domain, user, tx } = context.state;
55
81
  const threadRepo = tx.getRepository(activity_thread_1.ActivityThread);
56
82
  const now = new Date();
57
- const result = await threadRepo.save(assignees.map(assignee => {
83
+ const distinct = assignees.filter((assignee, idx) => {
84
+ return assignee && !assignees.slice(0, idx).find(x => x.id == assignee.id);
85
+ });
86
+ const result = await threadRepo.save(distinct.map(assignee => {
58
87
  return {
59
88
  assignee,
60
89
  state: activity_thread_1.ActivityThreadStatus.Assigned,
@@ -98,10 +127,18 @@ async function getSystemUserFromMyDepartmentManager(context) {
98
127
  const department = await tx.getRepository(organization_1.Department).findOne({
99
128
  where: {
100
129
  id: employee.departmentId
130
+ }
131
+ });
132
+ if (!department || !department.managerId)
133
+ return;
134
+ const manager = await tx.getRepository(organization_1.Employee).findOne({
135
+ where: {
136
+ domain: { id: domain.id },
137
+ id: department.managerId
101
138
  },
102
- relations: ['manager']
139
+ relations: ['user']
103
140
  });
104
- return department.manager;
141
+ return manager === null || manager === void 0 ? void 0 : manager.user;
105
142
  }
106
143
  exports.getSystemUserFromMyDepartmentManager = getSystemUserFromMyDepartmentManager;
107
144
  async function getSystemUserFromMySupervosor(context) {
@@ -119,7 +156,7 @@ async function getSystemUserFromMySupervosor(context) {
119
156
  },
120
157
  relations: ['user']
121
158
  });
122
- return supervisor.user;
159
+ return supervisor === null || supervisor === void 0 ? void 0 : supervisor.user;
123
160
  }
124
161
  exports.getSystemUserFromMySupervosor = getSystemUserFromMySupervosor;
125
162
  async function getSystemUserFromOrgMemberItem(item, context) {
@@ -157,4 +194,14 @@ async function getSystemUserFromOrgMemberItem(item, context) {
157
194
  }
158
195
  }
159
196
  exports.getSystemUserFromOrgMemberItem = getSystemUserFromOrgMemberItem;
197
+ function fillActivitySearchKeys(searchKeys, input) {
198
+ return searchKeys === null || searchKeys === void 0 ? void 0 : searchKeys.reduce((sum, key, index) => {
199
+ const value = input[key.inputKey];
200
+ if (value != null) {
201
+ sum[`key0${index + 1}`] = value instanceof Array ? value[0] : value;
202
+ }
203
+ return sum;
204
+ }, {});
205
+ }
206
+ exports.fillActivitySearchKeys = fillActivitySearchKeys;
160
207
  //# sourceMappingURL=common.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"common.js","sourceRoot":"","sources":["../../server/controllers/common.ts"],"names":[],"mappings":"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","sourcesContent":["import { Role, User } from '@things-factory/auth-base'\n\nimport { ActivityInstance, ActivityInstanceStatus, AssigneeItem } from '../service/activity-instance/activity-instance'\nimport { ActivityThread, ActivityThreadStatus } from '../service/activity-thread/activity-thread'\nimport { Department, Employee, ApprovalLineItem, OrgMemberTargetType } from '@things-factory/organization'\n\nexport async function updateActivityInstanceState(id: string, context: ResolverContext) {\n const { tx } = context.state\n\n await tx.getRepository(ActivityInstance).save({\n ...(await tx.getRepository(ActivityInstance).findOne({\n where: { id },\n relations: [\n 'domain',\n 'activity',\n 'assigneeRole',\n 'supervisoryRole',\n 'updater',\n 'creator',\n 'starter',\n 'terminator'\n ]\n })),\n transaction: 'thread' /* change by transaction of activity thread */,\n state: await evalActivityInstanceState(id, context)\n })\n}\n\nexport async function evalActivityInstanceState(id: string, context: ResolverContext): Promise<ActivityInstanceStatus> {\n const { tx } = context.state\n\n const activityInstance = await tx.getRepository(ActivityInstance).findOne({\n where: { id },\n relations: ['activityThreads']\n })\n const { threadsMin, threadsMax, activityThreads, state, dueAt } = activityInstance\n\n const validThreads = activityThreads.filter(thread => thread.isValid())\n const pendingStartedThreads = activityThreads.filter(thread => thread.isPendingStarted())\n const pendingEndedThreads = activityThreads.filter(thread => thread.isPendingEnded())\n\n switch (true) {\n case state === ActivityInstanceStatus.Draft:\n case state === ActivityInstanceStatus.Ended:\n case state === ActivityInstanceStatus.Aborted:\n return state\n case validThreads.length === 0:\n return ActivityInstanceStatus.Posted\n case threadsMin > validThreads.length:\n return ActivityInstanceStatus.WaitingAssignment\n case pendingStartedThreads.length > 0:\n return ActivityInstanceStatus.Assigned\n case pendingEndedThreads.length > 0:\n return !dueAt || dueAt.getTime() > Date.now() ? ActivityInstanceStatus.Started : ActivityInstanceStatus.Pending\n default:\n return ActivityInstanceStatus.Ended\n }\n}\n\nexport async function createActivityThreadsForUsers(\n transaction: string,\n activityInstance: ActivityInstance,\n assignees: User[],\n context: ResolverContext\n): Promise<ActivityThread[]> {\n const { domain, user, tx } = context.state\n\n const threadRepo = tx.getRepository(ActivityThread)\n const now = new Date()\n\n const result = await threadRepo.save(\n assignees.map(assignee => {\n return {\n assignee,\n state: ActivityThreadStatus.Assigned,\n activityInstance,\n domain,\n transaction,\n creator: user,\n updater: user,\n dueAt: activityInstance.dueAt,\n assignedAt: now\n } as any\n })\n )\n\n await updateActivityInstanceState(activityInstance.id, context)\n\n return result\n}\n\nexport async function createActivityThreadsForAllRoleUsers(\n transaction: string,\n activityInstance: ActivityInstance,\n context: ResolverContext\n): Promise<ActivityThread[]> {\n const { tx } = context.state\n\n // find how many users are having given role\n const assigneeRole = (await tx.getRepository(Role).findOne({\n where: { id: activityInstance.assigneeRoleId },\n relations: ['users']\n })) as Role\n const assignees = (assigneeRole?.users || []).filter(user => user.userType == 'user')\n\n if (assignees.length === 0) {\n throw new Error(\"there's no users having given role\")\n }\n\n // create activity-thread for all of users having given role\n return await createActivityThreadsForUsers(transaction, activityInstance, assignees, context)\n}\n\nexport async function getSystemUserFromMyDepartmentManager(context: ResolverContext): Promise<User> {\n const { domain, user, tx } = context.state\n\n const employee = await tx.getRepository(Employee).findOneBy({\n domain: { id: domain.id },\n user: { id: user.id }\n })\n\n if (!employee || !employee.departmentId) {\n return\n }\n\n const department = await tx.getRepository(Department).findOne({\n where: {\n id: employee.departmentId\n },\n relations: ['manager']\n })\n\n return department.manager\n}\n\nexport async function getSystemUserFromMySupervosor(context: ResolverContext): Promise<User> {\n const { domain, user, tx } = context.state\n\n const employee = await tx.getRepository(Employee).findOneBy({\n domain: { id: domain.id },\n user: { id: user.id }\n })\n\n if (!employee || !employee.supervisorId) {\n return\n }\n\n const supervisor = await tx.getRepository(Employee).findOne({\n where: {\n id: employee.supervisorId\n },\n relations: ['user']\n })\n\n return supervisor.user\n}\n\nexport async function getSystemUserFromOrgMemberItem(\n item: AssigneeItem | ApprovalLineItem,\n context: ResolverContext\n): Promise<User> {\n const { domain, user, tx } = context.state\n\n const { type, value: id } = item\n\n if (type == OrgMemberTargetType.Employee) {\n const employee = await tx.getRepository(Employee).findOne({ where: { id }, relations: ['user'] })\n\n if (!employee || !employee.user) {\n return\n }\n return employee.user\n } else if (type == OrgMemberTargetType.Department) {\n const department = await tx.getRepository(Department).findOne({ where: { id }, relations: ['manager'] })\n\n if (!department || !department.manager) {\n return\n }\n return await tx.getRepository(User).findOneBy({ id: department.manager.userId })\n } else if (type == OrgMemberTargetType.Role) {\n const role = await tx.getRepository(Role).findOne({ where: { id }, relations: ['users'] })\n\n if (!role || !role.users || !role.users[0]) {\n return\n }\n\n return await tx.getRepository(User).findOneBy({ id: role.users[0].id })\n } else if (type == OrgMemberTargetType.Myself) {\n return user\n } else if (type == OrgMemberTargetType.MyDepartment) {\n return await getSystemUserFromMyDepartmentManager(context)\n } else if (type == OrgMemberTargetType.MySupervisor) {\n return await getSystemUserFromMySupervosor(context)\n }\n}\n"]}
1
+ {"version":3,"file":"common.js","sourceRoot":"","sources":["../../server/controllers/common.ts"],"names":[],"mappings":"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","sourcesContent":["import { Role, User } from '@things-factory/auth-base'\n\nimport { ActivitySearchKeyItem } from '../service/activity/activity-search-key-item-type'\nimport { ActivityInstance, ActivityInstanceStatus, AssigneeItem } from '../service/activity-instance/activity-instance'\nimport { ActivityThread, ActivityThreadStatus } from '../service/activity-thread/activity-thread'\nimport { Department, Employee, ApprovalLineItem, OrgMemberTargetType } from '@things-factory/organization'\nimport { ActivityInstallations } from './activity-installation/activity-installation-controller'\n\nexport async function updateActivityInstanceState(id: string, context: ResolverContext) {\n const { tx } = context.state\n\n var activityInstance = await tx.getRepository(ActivityInstance).findOne({\n where: { id },\n relations: ['domain', 'activity', 'assigneeRole', 'supervisoryRole', 'updater', 'creator', 'starter', 'terminator']\n })\n\n activityInstance = await tx.getRepository(ActivityInstance).save({\n ...activityInstance,\n transaction: 'thread' /* change by transaction of activity thread */,\n ...(await evalActivityInstanceState(id, context))\n })\n\n await ActivityInstallations.callback(activityInstance.activity.name, activityInstance, context)\n}\n\nexport async function evalActivityInstanceState(\n id: string,\n context: ResolverContext\n): Promise<Partial<ActivityInstance>> {\n const { tx, user } = context.state\n\n const activityInstance = await tx.getRepository(ActivityInstance).findOne({\n where: { id },\n relations: ['activityThreads']\n })\n const { threadsMin, activityThreads, state, dueAt } = activityInstance\n\n const validThreads = activityThreads.filter(thread => thread.isValid())\n const pendingStartedThreads = activityThreads.filter(thread => thread.isPendingStarted())\n const pendingEndedThreads = activityThreads.filter(thread => thread.isPendingEnded())\n\n switch (true) {\n case state === ActivityInstanceStatus.Draft:\n case state === ActivityInstanceStatus.Ended:\n case state === ActivityInstanceStatus.Aborted:\n return {}\n case validThreads.length === 0:\n return {\n state: ActivityInstanceStatus.Posted\n }\n case threadsMin > validThreads.length:\n return {\n state: ActivityInstanceStatus.WaitingAssignment\n }\n case pendingStartedThreads.length > 0:\n return {\n state: ActivityInstanceStatus.Assigned,\n assignedAt: new Date()\n }\n case pendingEndedThreads.length > 0:\n var started = !dueAt || dueAt.getTime() > Date.now()\n var changed =\n (started && state !== ActivityInstanceStatus.Started) || (!started && state !== ActivityInstanceStatus.Pending)\n\n return !changed\n ? null\n : started\n ? {\n state: ActivityInstanceStatus.Started,\n startedAt: new Date(),\n starter: user\n }\n : {\n state: ActivityInstanceStatus.Pending\n }\n default:\n return {\n state: activityThreads.find(thread => thread.state == ActivityThreadStatus.Aborted)\n ? ActivityInstanceStatus.Aborted\n : ActivityInstanceStatus.Ended,\n reason: '',\n output: activityThreads\n .filter(thread => (thread.state = ActivityThreadStatus.Ended))\n .reduce((sum, thread) => {\n sum[thread.assigneeId] = thread.output\n return sum\n }, {} as any),\n terminatedAt: new Date(),\n terminator: user\n }\n }\n}\n\nexport async function createActivityThreadsForUsers(\n transaction: string,\n activityInstance: ActivityInstance,\n assignees: User[],\n context: ResolverContext\n): Promise<ActivityThread[]> {\n const { domain, user, tx } = context.state\n\n const threadRepo = tx.getRepository(ActivityThread)\n const now = new Date()\n\n const distinct = assignees.filter((assignee, idx) => {\n return assignee && !assignees.slice(0, idx).find(x => x.id == assignee.id)\n })\n\n const result = await threadRepo.save(\n distinct.map(assignee => {\n return {\n assignee,\n state: ActivityThreadStatus.Assigned,\n activityInstance,\n domain,\n transaction,\n creator: user,\n updater: user,\n dueAt: activityInstance.dueAt,\n assignedAt: now\n } as any\n })\n )\n\n await updateActivityInstanceState(activityInstance.id, context)\n\n return result\n}\n\nexport async function createActivityThreadsForAllRoleUsers(\n transaction: string,\n activityInstance: ActivityInstance,\n context: ResolverContext\n): Promise<ActivityThread[]> {\n const { tx } = context.state\n\n // find how many users are having given role\n const assigneeRole = (await tx.getRepository(Role).findOne({\n where: { id: activityInstance.assigneeRoleId },\n relations: ['users']\n })) as Role\n const assignees = (assigneeRole?.users || []).filter(user => user.userType == 'user')\n\n if (assignees.length === 0) {\n throw new Error(\"there's no users having given role\")\n }\n\n // create activity-thread for all of users having given role\n return await createActivityThreadsForUsers(transaction, activityInstance, assignees, context)\n}\n\nexport async function getSystemUserFromMyDepartmentManager(context: ResolverContext): Promise<User> {\n const { domain, user, tx } = context.state\n\n const employee = await tx.getRepository(Employee).findOneBy({\n domain: { id: domain.id },\n user: { id: user.id }\n })\n\n if (!employee || !employee.departmentId) {\n return\n }\n\n const department = await tx.getRepository(Department).findOne({\n where: {\n id: employee.departmentId\n }\n })\n\n if (!department || !department.managerId) return\n\n const manager = await tx.getRepository(Employee).findOne({\n where: {\n domain: { id: domain.id },\n id: department.managerId\n },\n relations: ['user']\n })\n\n return manager?.user\n}\n\nexport async function getSystemUserFromMySupervosor(context: ResolverContext): Promise<User> {\n const { domain, user, tx } = context.state\n\n const employee = await tx.getRepository(Employee).findOneBy({\n domain: { id: domain.id },\n user: { id: user.id }\n })\n\n if (!employee || !employee.supervisorId) {\n return\n }\n\n const supervisor = await tx.getRepository(Employee).findOne({\n where: {\n id: employee.supervisorId\n },\n relations: ['user']\n })\n\n return supervisor?.user\n}\n\nexport async function getSystemUserFromOrgMemberItem(\n item: AssigneeItem | ApprovalLineItem,\n context: ResolverContext\n): Promise<User> {\n const { domain, user, tx } = context.state\n\n const { type, value: id } = item\n\n if (type == OrgMemberTargetType.Employee) {\n const employee = await tx.getRepository(Employee).findOne({ where: { id }, relations: ['user'] })\n\n if (!employee || !employee.user) {\n return\n }\n return employee.user\n } else if (type == OrgMemberTargetType.Department) {\n const department = await tx.getRepository(Department).findOne({ where: { id }, relations: ['manager'] })\n\n if (!department || !department.manager) {\n return\n }\n return await tx.getRepository(User).findOneBy({ id: department.manager.userId })\n } else if (type == OrgMemberTargetType.Role) {\n const role = await tx.getRepository(Role).findOne({ where: { id }, relations: ['users'] })\n\n if (!role || !role.users || !role.users[0]) {\n return\n }\n\n return await tx.getRepository(User).findOneBy({ id: role.users[0].id })\n } else if (type == OrgMemberTargetType.Myself) {\n return user\n } else if (type == OrgMemberTargetType.MyDepartment) {\n return await getSystemUserFromMyDepartmentManager(context)\n } else if (type == OrgMemberTargetType.MySupervisor) {\n return await getSystemUserFromMySupervosor(context)\n }\n}\n\nexport function fillActivitySearchKeys(searchKeys: ActivitySearchKeyItem[], input: { [key: string]: any }) {\n return searchKeys?.reduce((sum, key, index) => {\n const value = input[key.inputKey]\n if (value != null) {\n sum[`key0${index + 1}`] = value instanceof Array ? value[0] : value\n }\n return sum\n }, {})\n}\n"]}
@@ -1,5 +1,5 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  const tslib_1 = require("tslib");
4
- tslib_1.__exportStar(require("./activity-installation-controller"), exports);
4
+ tslib_1.__exportStar(require("./activity-installation/activity-installation-controller"), exports);
5
5
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../server/controllers/index.ts"],"names":[],"mappings":";;;AAAA,6EAAkD","sourcesContent":["export * from './activity-installation-controller'\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../server/controllers/index.ts"],"names":[],"mappings":";;;AAAA,mGAAwE","sourcesContent":["export * from './activity-installation/activity-installation-controller'\n"]}