@things-factory/worklist 5.0.7 → 5.0.13

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 (255) hide show
  1. package/client/{bootstrap.js → bootstrap.ts} +0 -0
  2. package/client/components/activity-/bowner-view.js +0 -1
  3. package/client/components/activity-instance-preview.js +1 -2
  4. package/client/components/{activity-intro-view.js → activity-intro-view.ts} +29 -42
  5. package/client/components/activity-reporter-view.js +0 -1
  6. package/client/components/activity-starter-form.js +2 -3
  7. package/client/{index.js → index.ts} +0 -0
  8. package/client/pages/activity/{activity-list-page.js → activity-list-page.ts} +26 -36
  9. package/client/pages/activity/activity-model-item-list.js +4 -1
  10. package/client/pages/activity/activity-page.js +2 -3
  11. package/client/pages/activity/starter-list-page.js +1 -1
  12. package/client/pages/activity-instance/activity-instance-list-page.js +1 -1
  13. package/client/pages/activity-instance/activity-instance-page.js +2 -2
  14. package/client/pages/activity-store/activity-store-page.js +1 -1
  15. package/client/pages/activity-supervisor/reporter-list-page.js +1 -1
  16. package/client/pages/activity-template/activity-template-list-page.js +1 -1
  17. package/client/pages/activity-thread/activity-thread-list-page.js +1 -1
  18. package/client/pages/activity-thread/activity-thread-page.js +2 -2
  19. package/client/pages/todo/assigned-list-page.js +1 -1
  20. package/client/pages/todo/draft-list-page.js +4 -2
  21. package/client/pages/todo/pickable-list-page.js +2 -2
  22. package/client/pages/todo/todo-list-page.js +2 -2
  23. package/client/pages/{worklist-home.js → worklist-home.ts} +2 -6
  24. package/client/{route.js → route.ts} +1 -1
  25. package/client/tsconfig.json +11 -0
  26. package/dist-client/bootstrap.d.ts +1 -0
  27. package/dist-client/bootstrap.js +12 -0
  28. package/dist-client/bootstrap.js.map +1 -0
  29. package/dist-client/components/activity-/bowner-view.d.ts +1 -0
  30. package/dist-client/components/activity-/bowner-view.js +96 -0
  31. package/dist-client/components/activity-/bowner-view.js.map +1 -0
  32. package/dist-client/components/activity-instance-preview.d.ts +1 -0
  33. package/dist-client/components/activity-instance-preview.js +180 -0
  34. package/dist-client/components/activity-instance-preview.js.map +1 -0
  35. package/dist-client/components/activity-intro-view.d.ts +1 -0
  36. package/dist-client/components/activity-intro-view.js +104 -0
  37. package/dist-client/components/activity-intro-view.js.map +1 -0
  38. package/dist-client/components/activity-reporter-view.d.ts +1 -0
  39. package/dist-client/components/activity-reporter-view.js +96 -0
  40. package/dist-client/components/activity-reporter-view.js.map +1 -0
  41. package/dist-client/components/activity-starter-form.d.ts +1 -0
  42. package/dist-client/components/activity-starter-form.js +293 -0
  43. package/dist-client/components/activity-starter-form.js.map +1 -0
  44. package/dist-client/index.d.ts +1 -0
  45. package/dist-client/index.js +2 -0
  46. package/dist-client/index.js.map +1 -0
  47. package/dist-client/pages/activity/activity-list-page.d.ts +47 -0
  48. package/dist-client/pages/activity/activity-list-page.js +479 -0
  49. package/dist-client/pages/activity/activity-list-page.js.map +1 -0
  50. package/dist-client/pages/activity/activity-model-item-list.d.ts +194 -0
  51. package/dist-client/pages/activity/activity-model-item-list.js +288 -0
  52. package/dist-client/pages/activity/activity-model-item-list.js.map +1 -0
  53. package/dist-client/pages/activity/activity-page.d.ts +49 -0
  54. package/dist-client/pages/activity/activity-page.js +367 -0
  55. package/dist-client/pages/activity/activity-page.js.map +1 -0
  56. package/dist-client/pages/activity/starter-list-page.d.ts +143 -0
  57. package/dist-client/pages/activity/starter-list-page.js +209 -0
  58. package/dist-client/pages/activity/starter-list-page.js.map +1 -0
  59. package/dist-client/pages/activity-instance/activity-instance-list-page.d.ts +137 -0
  60. package/dist-client/pages/activity-instance/activity-instance-list-page.js +202 -0
  61. package/dist-client/pages/activity-instance/activity-instance-list-page.js.map +1 -0
  62. package/dist-client/pages/activity-instance/activity-instance-page.d.ts +49 -0
  63. package/dist-client/pages/activity-instance/activity-instance-page.js +365 -0
  64. package/dist-client/pages/activity-instance/activity-instance-page.js.map +1 -0
  65. package/dist-client/pages/activity-store/activity-store-page.d.ts +174 -0
  66. package/dist-client/pages/activity-store/activity-store-page.js +211 -0
  67. package/dist-client/pages/activity-store/activity-store-page.js.map +1 -0
  68. package/dist-client/pages/activity-supervisor/reporter-list-page.d.ts +143 -0
  69. package/dist-client/pages/activity-supervisor/reporter-list-page.js +209 -0
  70. package/dist-client/pages/activity-supervisor/reporter-list-page.js.map +1 -0
  71. package/dist-client/pages/activity-template/activity-template-importer.d.ts +24 -0
  72. package/dist-client/pages/activity-template/activity-template-importer.js +98 -0
  73. package/dist-client/pages/activity-template/activity-template-importer.js.map +1 -0
  74. package/dist-client/pages/activity-template/activity-template-list-page.d.ts +263 -0
  75. package/dist-client/pages/activity-template/activity-template-list-page.js +402 -0
  76. package/dist-client/pages/activity-template/activity-template-list-page.js.map +1 -0
  77. package/dist-client/pages/activity-template/activity-template-model-item-list.d.ts +1 -0
  78. package/dist-client/pages/activity-template/activity-template-model-item-list.js +36 -0
  79. package/dist-client/pages/activity-template/activity-template-model-item-list.js.map +1 -0
  80. package/dist-client/pages/activity-thread/activity-thread-importer.d.ts +24 -0
  81. package/dist-client/pages/activity-thread/activity-thread-importer.js +98 -0
  82. package/dist-client/pages/activity-thread/activity-thread-importer.js.map +1 -0
  83. package/dist-client/pages/activity-thread/activity-thread-list-page.d.ts +145 -0
  84. package/dist-client/pages/activity-thread/activity-thread-list-page.js +284 -0
  85. package/dist-client/pages/activity-thread/activity-thread-list-page.js.map +1 -0
  86. package/dist-client/pages/activity-thread/activity-thread-page.d.ts +46 -0
  87. package/dist-client/pages/activity-thread/activity-thread-page.js +331 -0
  88. package/dist-client/pages/activity-thread/activity-thread-page.js.map +1 -0
  89. package/dist-client/pages/dashboard/dashboard-home.d.ts +1 -0
  90. package/dist-client/pages/dashboard/dashboard-home.js +17 -0
  91. package/dist-client/pages/dashboard/dashboard-home.js.map +1 -0
  92. package/dist-client/pages/todo/assigned-list-page.d.ts +124 -0
  93. package/dist-client/pages/todo/assigned-list-page.js +233 -0
  94. package/dist-client/pages/todo/assigned-list-page.js.map +1 -0
  95. package/dist-client/pages/todo/draft-list-page.d.ts +198 -0
  96. package/dist-client/pages/todo/draft-list-page.js +312 -0
  97. package/dist-client/pages/todo/draft-list-page.js.map +1 -0
  98. package/dist-client/pages/todo/pickable-list-page.d.ts +150 -0
  99. package/dist-client/pages/todo/pickable-list-page.js +260 -0
  100. package/dist-client/pages/todo/pickable-list-page.js.map +1 -0
  101. package/dist-client/pages/todo/todo-list-page.d.ts +232 -0
  102. package/dist-client/pages/todo/todo-list-page.js +333 -0
  103. package/dist-client/pages/todo/todo-list-page.js.map +1 -0
  104. package/dist-client/pages/worklist-home.d.ts +1 -0
  105. package/dist-client/pages/worklist-home.js +18 -0
  106. package/dist-client/pages/worklist-home.js.map +1 -0
  107. package/dist-client/route.d.ts +1 -0
  108. package/dist-client/route.js +53 -0
  109. package/dist-client/route.js.map +1 -0
  110. package/dist-client/tsconfig.tsbuildinfo +1 -0
  111. package/dist-client/types.d.ts +19 -0
  112. package/dist-client/types.js +37 -0
  113. package/dist-client/types.js.map +1 -0
  114. package/dist-server/controllers/activity-extension-controller.js.map +1 -1
  115. package/dist-server/controllers/activity-instance/abort.js +4 -5
  116. package/dist-server/controllers/activity-instance/abort.js.map +1 -1
  117. package/dist-server/controllers/activity-instance/adjust.js +3 -2
  118. package/dist-server/controllers/activity-instance/adjust.js.map +1 -1
  119. package/dist-server/controllers/activity-instance/assign.js +9 -25
  120. package/dist-server/controllers/activity-instance/assign.js.map +1 -1
  121. package/dist-server/controllers/activity-instance/delegate.js +5 -6
  122. package/dist-server/controllers/activity-instance/delegate.js.map +1 -1
  123. package/dist-server/controllers/activity-instance/draft.js +6 -7
  124. package/dist-server/controllers/activity-instance/draft.js.map +1 -1
  125. package/dist-server/controllers/activity-instance/end.js +5 -6
  126. package/dist-server/controllers/activity-instance/end.js.map +1 -1
  127. package/dist-server/controllers/activity-instance/index.js +11 -24
  128. package/dist-server/controllers/activity-instance/index.js.map +1 -1
  129. package/dist-server/controllers/activity-instance/pick.js +6 -6
  130. package/dist-server/controllers/activity-instance/pick.js.map +1 -1
  131. package/dist-server/controllers/activity-instance/post.js +10 -6
  132. package/dist-server/controllers/activity-instance/post.js.map +1 -1
  133. package/dist-server/controllers/activity-instance/start.js +3 -2
  134. package/dist-server/controllers/activity-instance/start.js.map +1 -1
  135. package/dist-server/controllers/activity-instance/terminate.js +5 -6
  136. package/dist-server/controllers/activity-instance/terminate.js.map +1 -1
  137. package/dist-server/controllers/activity-thread/abort.js +3 -4
  138. package/dist-server/controllers/activity-thread/abort.js.map +1 -1
  139. package/dist-server/controllers/activity-thread/adjust.js +2 -1
  140. package/dist-server/controllers/activity-thread/adjust.js.map +1 -1
  141. package/dist-server/controllers/activity-thread/delegate.js +4 -5
  142. package/dist-server/controllers/activity-thread/delegate.js.map +1 -1
  143. package/dist-server/controllers/activity-thread/end.js +4 -5
  144. package/dist-server/controllers/activity-thread/end.js.map +1 -1
  145. package/dist-server/controllers/activity-thread/index.js +8 -21
  146. package/dist-server/controllers/activity-thread/index.js.map +1 -1
  147. package/dist-server/controllers/activity-thread/save.js +2 -1
  148. package/dist-server/controllers/activity-thread/save.js.map +1 -1
  149. package/dist-server/controllers/activity-thread/start.js +4 -5
  150. package/dist-server/controllers/activity-thread/start.js.map +1 -1
  151. package/dist-server/controllers/activity-thread/terminate.js +3 -4
  152. package/dist-server/controllers/activity-thread/terminate.js.map +1 -1
  153. package/dist-server/controllers/common.js +23 -6
  154. package/dist-server/controllers/common.js.map +1 -1
  155. package/dist-server/controllers/index.js.map +1 -1
  156. package/dist-server/index.js +4 -17
  157. package/dist-server/index.js.map +1 -1
  158. package/dist-server/middlewares/index.js.map +1 -1
  159. package/dist-server/migrations/index.js.map +1 -1
  160. package/dist-server/routes.js +0 -1
  161. package/dist-server/routes.js.map +1 -1
  162. package/dist-server/service/activity/activity-history.js +68 -76
  163. package/dist-server/service/activity/activity-history.js.map +1 -1
  164. package/dist-server/service/activity/activity-model-type.js +51 -60
  165. package/dist-server/service/activity/activity-model-type.js.map +1 -1
  166. package/dist-server/service/activity/activity-mutation.js +39 -50
  167. package/dist-server/service/activity/activity-mutation.js.map +1 -1
  168. package/dist-server/service/activity/activity-query.js +61 -72
  169. package/dist-server/service/activity/activity-query.js.map +1 -1
  170. package/dist-server/service/activity/activity-type.js +91 -102
  171. package/dist-server/service/activity/activity-type.js.map +1 -1
  172. package/dist-server/service/activity/activity.js +68 -76
  173. package/dist-server/service/activity/activity.js.map +1 -1
  174. package/dist-server/service/activity/event-subscriber.js +2 -7
  175. package/dist-server/service/activity/event-subscriber.js.map +1 -1
  176. package/dist-server/service/activity/index.js.map +1 -1
  177. package/dist-server/service/activity-instance/activity-instance-history.js +81 -89
  178. package/dist-server/service/activity-instance/activity-instance-history.js.map +1 -1
  179. package/dist-server/service/activity-instance/activity-instance-mutation.js +71 -85
  180. package/dist-server/service/activity-instance/activity-instance-mutation.js.map +1 -1
  181. package/dist-server/service/activity-instance/activity-instance-query.js +67 -78
  182. package/dist-server/service/activity-instance/activity-instance-query.js.map +1 -1
  183. package/dist-server/service/activity-instance/activity-instance-subscription.js +8 -21
  184. package/dist-server/service/activity-instance/activity-instance-subscription.js.map +1 -1
  185. package/dist-server/service/activity-instance/activity-instance-type.js +106 -106
  186. package/dist-server/service/activity-instance/activity-instance-type.js.map +1 -1
  187. package/dist-server/service/activity-instance/activity-instance.js +85 -93
  188. package/dist-server/service/activity-instance/activity-instance.js.map +1 -1
  189. package/dist-server/service/activity-instance/event-subscriber.js +3 -8
  190. package/dist-server/service/activity-instance/event-subscriber.js.map +1 -1
  191. package/dist-server/service/activity-instance/index.js.map +1 -1
  192. package/dist-server/service/activity-template/activity-template-history.js +50 -58
  193. package/dist-server/service/activity-template/activity-template-history.js.map +1 -1
  194. package/dist-server/service/activity-template/activity-template-mutation.js +39 -50
  195. package/dist-server/service/activity-template/activity-template-mutation.js.map +1 -1
  196. package/dist-server/service/activity-template/activity-template-query.js +48 -45
  197. package/dist-server/service/activity-template/activity-template-query.js.map +1 -1
  198. package/dist-server/service/activity-template/activity-template-type.js +65 -76
  199. package/dist-server/service/activity-template/activity-template-type.js.map +1 -1
  200. package/dist-server/service/activity-template/activity-template.js +48 -56
  201. package/dist-server/service/activity-template/activity-template.js.map +1 -1
  202. package/dist-server/service/activity-template/event-subscriber.js +2 -7
  203. package/dist-server/service/activity-template/event-subscriber.js.map +1 -1
  204. package/dist-server/service/activity-template/index.js.map +1 -1
  205. package/dist-server/service/activity-thread/activity-thread-mutation.js +84 -95
  206. package/dist-server/service/activity-thread/activity-thread-mutation.js.map +1 -1
  207. package/dist-server/service/activity-thread/activity-thread-query.js +45 -56
  208. package/dist-server/service/activity-thread/activity-thread-query.js.map +1 -1
  209. package/dist-server/service/activity-thread/activity-thread-subscription.js +7 -20
  210. package/dist-server/service/activity-thread/activity-thread-subscription.js.map +1 -1
  211. package/dist-server/service/activity-thread/activity-thread-type.js +25 -34
  212. package/dist-server/service/activity-thread/activity-thread-type.js.map +1 -1
  213. package/dist-server/service/activity-thread/activity-thread.js +43 -51
  214. package/dist-server/service/activity-thread/activity-thread.js.map +1 -1
  215. package/dist-server/service/activity-thread/event-subscriber.js +5 -10
  216. package/dist-server/service/activity-thread/event-subscriber.js.map +1 -1
  217. package/dist-server/service/activity-thread/index.js.map +1 -1
  218. package/dist-server/service/index.js +5 -18
  219. package/dist-server/service/index.js.map +1 -1
  220. package/dist-server/tsconfig.tsbuildinfo +1 -0
  221. package/package.json +13 -11
  222. package/server/controllers/activity-instance/abort.ts +5 -10
  223. package/server/controllers/activity-instance/adjust.ts +5 -7
  224. package/server/controllers/activity-instance/assign.ts +13 -45
  225. package/server/controllers/activity-instance/delegate.ts +6 -8
  226. package/server/controllers/activity-instance/draft.ts +7 -13
  227. package/server/controllers/activity-instance/end.ts +6 -9
  228. package/server/controllers/activity-instance/pick.ts +12 -9
  229. package/server/controllers/activity-instance/post.ts +14 -12
  230. package/server/controllers/activity-instance/start.ts +5 -3
  231. package/server/controllers/activity-instance/terminate.ts +6 -8
  232. package/server/controllers/activity-thread/abort.ts +3 -9
  233. package/server/controllers/activity-thread/adjust.ts +3 -6
  234. package/server/controllers/activity-thread/delegate.ts +4 -7
  235. package/server/controllers/activity-thread/end.ts +4 -7
  236. package/server/controllers/activity-thread/save.ts +3 -6
  237. package/server/controllers/activity-thread/start.ts +4 -11
  238. package/server/controllers/activity-thread/terminate.ts +3 -7
  239. package/server/controllers/common.ts +33 -14
  240. package/server/routes.ts +0 -2
  241. package/server/service/activity/activity-model-type.ts +4 -4
  242. package/server/service/activity-instance/activity-instance-history.ts +2 -2
  243. package/server/service/activity-instance/activity-instance-mutation.ts +11 -15
  244. package/server/service/activity-instance/activity-instance-subscription.ts +1 -5
  245. package/server/service/activity-instance/activity-instance-type.ts +17 -11
  246. package/server/service/activity-instance/activity-instance.ts +2 -2
  247. package/server/service/activity-template/activity-template-query.ts +10 -0
  248. package/server/service/activity-thread/activity-thread-mutation.ts +7 -7
  249. package/server/service/activity-thread/activity-thread-subscription.ts +0 -4
  250. package/server/service/activity-thread/activity-thread-type.ts +1 -1
  251. package/server/service/activity-thread/activity-thread.ts +1 -1
  252. package/server/service/activity-thread/event-subscriber.ts +3 -3
  253. package/server/tsconfig.json +10 -0
  254. package/things-factory.config.js +2 -2
  255. package/tsconfig.json +0 -9
@@ -1,25 +1,17 @@
1
- import { getRepository } from 'typeorm'
1
+ import { In } from 'typeorm'
2
2
 
3
- import { Role } from '@things-factory/auth-base'
3
+ import { User } from '@things-factory/auth-base'
4
4
 
5
5
  import { ActivityInstance } from '../../service/activity-instance/activity-instance'
6
- import { type ContextStatus, evalActivityInstanceState } from '../common'
7
-
8
- const debug = require('debug')('things-factory:worklist:assign')
6
+ import { createActivityThreadsForUsers } from '../common'
9
7
 
10
8
  export async function assign(
11
- {
12
- id,
13
- assigneeRole,
14
- supervisoryRole,
15
- reason,
16
- dueAt
17
- }: { id: string; assigneeRole?: string; supervisoryRole?: string; reason?: string; dueAt?: Date },
18
- { domain, user, tx, t }: ContextStatus
9
+ { id, assignees, reason, dueAt }: { id: string; assignees?: string[]; reason?: string; dueAt?: Date },
10
+ context: any
19
11
  ): Promise<ActivityInstance> {
20
- debug('assignActivityInstance', id)
12
+ const { domain, user, tx } = context.state
21
13
 
22
- var repository = getRepository(ActivityInstance)
14
+ const repository = tx.getRepository(ActivityInstance)
23
15
 
24
16
  var activityInstance = await repository.findOne({
25
17
  where: { domain, id },
@@ -28,7 +20,7 @@ export async function assign(
28
20
 
29
21
  if (!activityInstance) {
30
22
  throw new Error(
31
- t('error.activity-instance not found', {
23
+ context.t('error.activity-instance not found', {
32
24
  activityInstance: id
33
25
  })
34
26
  )
@@ -38,35 +30,11 @@ export async function assign(
38
30
  activityInstance.dueAt = dueAt
39
31
  }
40
32
 
41
- if (assigneeRole) {
42
- activityInstance.assigneeRole = getRepository(Role).findOne({
43
- domain,
44
- name: assigneeRole
45
- })
46
- }
47
-
48
- if (supervisoryRole) {
49
- activityInstance.supervisoryRole = getRepository(Role).findOne({
50
- domain,
51
- name: supervisoryRole
52
- })
53
- }
33
+ const assignedUsers = await tx.getRepository(User).find({
34
+ email: In(assignees)
35
+ })
54
36
 
55
- if (!activityInstance.assigneeRole) {
56
- throw new Error(
57
- t('error.activity-instance assignee role not found', {
58
- activityInstance: id,
59
- role: assigneeRole
60
- })
61
- )
62
- }
37
+ await createActivityThreadsForUsers('assign', activityInstance, assignedUsers, context)
63
38
 
64
- if (activityInstance.assigneeRole)
65
- return await tx.getRepository(ActivityInstance).save({
66
- ...activityInstance,
67
- reason,
68
- transaction: 'assign',
69
- state: await evalActivityInstanceState(id, { domain, user, tx, t }),
70
- updater: user
71
- })
39
+ return await tx.getRepository(ActivityInstance).findOne(activityInstance.id)
72
40
  }
@@ -1,9 +1,7 @@
1
1
  import { getRepository } from 'typeorm'
2
2
 
3
3
  import { ActivityInstance } from '../../service/activity-instance/activity-instance'
4
- import { type ContextStatus, evalActivityInstanceState } from '../common'
5
-
6
- const debug = require('debug')('things-factory:worklist:delegate')
4
+ import { evalActivityInstanceState } from '../common'
7
5
 
8
6
  export async function delegate(
9
7
  {
@@ -17,11 +15,11 @@ export async function delegate(
17
15
  dueAt?: Date
18
16
  reason?: string
19
17
  },
20
- { domain, user, tx, t }: ContextStatus
18
+ context: any
21
19
  ): Promise<ActivityInstance> {
22
- debug('delegateActivity', id, assigneeRole)
20
+ const { domain, user, tx } = context.state
23
21
 
24
- var repository = getRepository(ActivityInstance)
22
+ const repository = getRepository(ActivityInstance)
25
23
 
26
24
  var activityInstance = await repository.findOne({
27
25
  where: { domain, id }
@@ -29,7 +27,7 @@ export async function delegate(
29
27
 
30
28
  if (!activityInstance) {
31
29
  throw new Error(
32
- t('error.activity-instance not found', {
30
+ context.t('error.activity-instance not found', {
33
31
  activityInstance: id
34
32
  })
35
33
  )
@@ -44,7 +42,7 @@ export async function delegate(
44
42
  reason,
45
43
  assigneeRole,
46
44
  transaction: 'delegate',
47
- state: await evalActivityInstanceState(id, { domain, user, tx, t }),
45
+ state: await evalActivityInstanceState(id, context),
48
46
  updater: user,
49
47
  assignedAt: new Date()
50
48
  })
@@ -3,18 +3,11 @@ import { getRepository } from 'typeorm'
3
3
  import { ActivityInstance, ActivityInstanceStatus } from '../../service/activity-instance/activity-instance'
4
4
  import { NewActivityInstance } from '../../service/activity-instance/activity-instance-type'
5
5
  import { Activity } from '../../service/activity/activity'
6
- import { type ContextStatus } from '../common'
7
6
 
8
- const debug = require('debug')('things-factory:worklist:create')
9
-
10
- export async function draft(
11
- activityInstance: NewActivityInstance,
12
- { domain, user, tx, t }: ContextStatus
13
- ): Promise<ActivityInstance> {
7
+ export async function draft(activityInstance: NewActivityInstance, context: any): Promise<ActivityInstance> {
8
+ const { domain, user, tx } = context.state
14
9
  const { activityId, input, dueAt } = activityInstance
15
10
 
16
- debug('draftActivityInstance', activityId, input)
17
-
18
11
  var repository = getRepository(Activity)
19
12
  var activity = {} as any
20
13
 
@@ -26,16 +19,16 @@ export async function draft(
26
19
 
27
20
  if (!activity) {
28
21
  throw new Error(
29
- t('error.activity not found', {
22
+ context.t('error.activity not found', {
30
23
  activity: activityId
31
24
  })
32
25
  )
33
26
  }
34
-
35
- activity.adhocType = 'standard'
36
- activity.refBy = activityId
37
27
  }
38
28
 
29
+ activityInstance.adhocType = 'standard'
30
+ activityInstance.refBy = activityId
31
+
39
32
  if (!dueAt && activity.standardTime) {
40
33
  activityInstance.dueAt = new Date(Date.now() + activity.standardTime * 1000)
41
34
  }
@@ -50,6 +43,7 @@ export async function draft(
50
43
  refBy: activity.refBy,
51
44
  ...activityInstance,
52
45
  transaction: 'draft',
46
+ activity,
53
47
  state: ActivityInstanceStatus.Draft,
54
48
  domain,
55
49
  creator: user,
@@ -1,17 +1,14 @@
1
1
  import { getRepository } from 'typeorm'
2
2
 
3
3
  import { ActivityInstance } from '../../service/activity-instance/activity-instance'
4
- import { type ContextStatus, evalActivityInstanceState } from '../common'
5
-
6
- const debug = require('debug')('things-factory:worklist:end')
4
+ import { evalActivityInstanceState } from '../common'
7
5
 
8
6
  export async function end(
9
7
  { id, output, reason }: { id: string; output?: object; reason?: string },
10
- { domain, user, tx, t }: ContextStatus
8
+ context: any
11
9
  ): Promise<ActivityInstance> {
12
- debug('end', id, output)
13
-
14
- var repository = getRepository(ActivityInstance)
10
+ const { domain, user, tx } = context.state
11
+ const repository = getRepository(ActivityInstance)
15
12
 
16
13
  var activityInstance = await repository.findOne({
17
14
  where: { domain, id }
@@ -19,7 +16,7 @@ export async function end(
19
16
 
20
17
  if (!activityInstance) {
21
18
  throw new Error(
22
- t('error.activity-instance not found', {
19
+ context.t('error.activity-instance not found', {
23
20
  activityInstance: id
24
21
  })
25
22
  )
@@ -30,7 +27,7 @@ export async function end(
30
27
  reason,
31
28
  output,
32
29
  transaction: 'end',
33
- state: await evalActivityInstanceState(id, { domain, user, tx, t }),
30
+ state: await evalActivityInstanceState(id, context),
34
31
  updater: user,
35
32
  terminatedAt: new Date(),
36
33
  terminator: user
@@ -2,14 +2,11 @@ import { getRepository } from 'typeorm'
2
2
 
3
3
  import { ActivityInstance } from '../../service/activity-instance/activity-instance'
4
4
  import { ActivityThread } from '../../service/activity-thread/activity-thread'
5
- import { type ContextStatus, createActivityThreadsForUsers } from '../common'
5
+ import { createActivityThreadsForUsers } from '../common'
6
6
 
7
- const debug = require('debug')('things-factory:worklist:pick')
8
-
9
- export async function pick(id: string, { domain, user, tx, t }: ContextStatus): Promise<ActivityThread> {
10
- debug('pickActivityInstance', id)
11
-
12
- var repository = getRepository(ActivityInstance)
7
+ export async function pick(id: string, context: any): Promise<ActivityThread> {
8
+ const { domain, user, tx } = context.state
9
+ const repository = getRepository(ActivityInstance)
13
10
 
14
11
  var activityInstance = await repository.findOne({
15
12
  where: { domain, id }
@@ -17,11 +14,17 @@ export async function pick(id: string, { domain, user, tx, t }: ContextStatus):
17
14
 
18
15
  if (!activityInstance) {
19
16
  throw new Error(
20
- t('error.activity-instance not found', {
17
+ context.t('error.activity-instance not found', {
21
18
  activityInstance: id
22
19
  })
23
20
  )
24
21
  }
25
22
 
26
- return (await createActivityThreadsForUsers(activityInstance, [user], { domain, user, tx, t }))[0]
23
+ const picked = await tx.getRepository(ActivityInstance).save({
24
+ ...activityInstance,
25
+ transaction: 'pick',
26
+ updater: user
27
+ })
28
+
29
+ return (await createActivityThreadsForUsers('pick', picked, [user], context))[0]
27
30
  }
@@ -1,17 +1,15 @@
1
+ import { In } from 'typeorm'
2
+
3
+ import { User } from '@things-factory/auth-base'
4
+
1
5
  import { ActivityInstance, ActivityInstanceStatus } from '../../service/activity-instance/activity-instance'
2
6
  import { ActivityInstancePost } from '../../service/activity-instance/activity-instance-type'
3
- import { type ContextStatus, createActivityThreadsForAllRoleUsers, createActivityThreadsForUsers } from '../common'
4
-
5
- const debug = require('debug')('things-factory:worklist:create')
7
+ import { createActivityThreadsForAllRoleUsers, createActivityThreadsForUsers } from '../common'
6
8
 
7
- export async function post(
8
- activityInstance: ActivityInstancePost,
9
- { domain, user, tx, t }: ContextStatus
10
- ): Promise<ActivityInstance> {
9
+ export async function post(activityInstance: ActivityInstancePost, context: any): Promise<ActivityInstance> {
10
+ const { domain, user, tx } = context.state
11
11
  const { id, assignees } = activityInstance
12
12
 
13
- debug('postActivityInstance', activityInstance)
14
-
15
13
  var origin = id ? await tx.getRepository(ActivityInstance).findOne(id) : null
16
14
 
17
15
  const posted = await tx.getRepository(ActivityInstance).save({
@@ -24,12 +22,16 @@ export async function post(
24
22
  updater: user
25
23
  })
26
24
 
25
+ const assignedUsers = await tx.getRepository(User).find({
26
+ email: In(assignees || [])
27
+ })
28
+
27
29
  if (posted.threadsMin === 0 && posted.assigneeRoleId) {
28
- await createActivityThreadsForAllRoleUsers(posted, { domain, user, tx, t })
30
+ await createActivityThreadsForAllRoleUsers('post', posted, context)
29
31
  }
30
32
 
31
- if (assignees instanceof Array) {
32
- await createActivityThreadsForUsers(activityInstance, assignees, { domain, user, tx, t })
33
+ if (assignedUsers.length > 0) {
34
+ await createActivityThreadsForUsers('post', posted, assignedUsers, context)
33
35
  }
34
36
 
35
37
  return await tx.getRepository(ActivityInstance).findOne(posted.id)
@@ -1,7 +1,9 @@
1
1
  import { ActivityInstance } from '../../service/activity-instance/activity-instance'
2
- import { type ContextStatus, evalActivityInstanceState } from '../common'
2
+ import { evalActivityInstanceState } from '../common'
3
+
4
+ export async function start(id: string, context: any): Promise<ActivityInstance> {
5
+ const { domain, user, tx } = context.state
3
6
 
4
- export async function start(id: string, { domain, user, tx, t }: ContextStatus): Promise<ActivityInstance> {
5
7
  const repository = tx.getRepository(ActivityInstance)
6
8
  const activityInstance = await repository.findOne({
7
9
  where: { domain, id }
@@ -10,7 +12,7 @@ export async function start(id: string, { domain, user, tx, t }: ContextStatus):
10
12
  return await repository.save({
11
13
  ...activityInstance,
12
14
  transaction: 'start',
13
- state: await evalActivityInstanceState(id, { domain, user, tx, t }),
15
+ state: await evalActivityInstanceState(id, context),
14
16
  updater: user,
15
17
  startedAt: new Date()
16
18
  })
@@ -1,17 +1,15 @@
1
1
  import { getRepository } from 'typeorm'
2
2
 
3
3
  import { ActivityInstance } from '../../service/activity-instance/activity-instance'
4
- import { type ContextStatus, evalActivityInstanceState } from '../common'
5
-
6
- const debug = require('debug')('things-factory:worklist:terminate')
4
+ import { evalActivityInstanceState } from '../common'
7
5
 
8
6
  export async function terminate(
9
7
  { id, output, reason }: { id: string; output?: object; reason?: string },
10
- { domain, user, tx, t }: ContextStatus
8
+ context: any
11
9
  ): Promise<ActivityInstance> {
12
- debug('terminate', id, output)
10
+ const { domain, user, tx } = context.state
13
11
 
14
- var repository = getRepository(ActivityInstance)
12
+ const repository = getRepository(ActivityInstance)
15
13
 
16
14
  var activityInstance = await repository.findOne({
17
15
  where: { domain, id }
@@ -19,7 +17,7 @@ export async function terminate(
19
17
 
20
18
  if (!activityInstance) {
21
19
  throw new Error(
22
- t('error.activity-instance not found', {
20
+ context.t('error.activity-instance not found', {
23
21
  activityInstance: id
24
22
  })
25
23
  )
@@ -30,7 +28,7 @@ export async function terminate(
30
28
  reason,
31
29
  output,
32
30
  transaction: 'terminate',
33
- state: await evalActivityInstanceState(id, { domain, user, tx, t }),
31
+ state: await evalActivityInstanceState(id, context),
34
32
  updater: user,
35
33
  terminatedAt: new Date(),
36
34
  terminator: user
@@ -1,15 +1,9 @@
1
1
  import { getRepository } from 'typeorm'
2
2
 
3
3
  import { ActivityThread, ActivityThreadStatus } from '../../service/activity-thread/activity-thread'
4
- import { type ContextStatus } from '../common'
5
4
 
6
- const debug = require('debug')('things-factory:worklist:abort')
7
-
8
- export async function abort(
9
- { id, reason }: { id: string; reason: string },
10
- { domain, user, tx, t }: ContextStatus
11
- ): Promise<ActivityThread> {
12
- debug('abortActivityThread', id, reason)
5
+ export async function abort({ id, reason }: { id: string; reason: string }, context: any): Promise<ActivityThread> {
6
+ const { domain, user, tx } = context.state
13
7
 
14
8
  var repository = getRepository(ActivityThread)
15
9
 
@@ -19,7 +13,7 @@ export async function abort(
19
13
 
20
14
  if (!activityThread) {
21
15
  throw new Error(
22
- t('error.activity-instance not found', {
16
+ context.t('error.activity-instance not found', {
23
17
  activityThread: id
24
18
  })
25
19
  )
@@ -1,13 +1,10 @@
1
1
  import { ActivityThread } from '../../service/activity-thread/activity-thread'
2
2
  import { ActivityThreadPatch } from '../../service/activity-thread/activity-thread-type'
3
- import { type ContextStatus } from '../common'
4
3
 
5
- export async function adjust(
6
- id: string,
7
- patch: ActivityThreadPatch,
8
- { domain, user, tx, t }: ContextStatus
9
- ): Promise<ActivityThread> {
4
+ export async function adjust(id: string, patch: ActivityThreadPatch, context: any): Promise<ActivityThread> {
5
+ const { domain, user, tx } = context.state
10
6
  const repository = tx.getRepository(ActivityThread)
7
+
11
8
  const activityThread = await repository.findOne({
12
9
  where: { domain, id }
13
10
  })
@@ -1,9 +1,6 @@
1
1
  import { getRepository } from 'typeorm'
2
2
 
3
3
  import { ActivityThread, ActivityThreadStatus } from '../../service/activity-thread/activity-thread'
4
- import { type ContextStatus } from '../common'
5
-
6
- const debug = require('debug')('things-factory:worklist:delegate')
7
4
 
8
5
  export async function delegate(
9
6
  {
@@ -17,11 +14,11 @@ export async function delegate(
17
14
  dueAt?: Date
18
15
  reason?: string
19
16
  },
20
- { domain, user, tx, t }: ContextStatus
17
+ context: any
21
18
  ): Promise<ActivityThread> {
22
- debug('delegateActivity', id, assigneeRole)
19
+ const { domain, user, tx } = context.state
23
20
 
24
- var repository = getRepository(ActivityThread)
21
+ const repository = getRepository(ActivityThread)
25
22
 
26
23
  var activityThread = await repository.findOne({
27
24
  where: { domain, id }
@@ -29,7 +26,7 @@ export async function delegate(
29
26
 
30
27
  if (!activityThread) {
31
28
  throw new Error(
32
- t('error.activity-instance not found', {
29
+ context.t('error.activity-instance not found', {
33
30
  activityThread: id
34
31
  })
35
32
  )
@@ -1,17 +1,14 @@
1
1
  import { getRepository } from 'typeorm'
2
2
 
3
3
  import { ActivityThread, ActivityThreadStatus } from '../../service/activity-thread/activity-thread'
4
- import { type ContextStatus } from '../common'
5
-
6
- const debug = require('debug')('things-factory:worklist:end')
7
4
 
8
5
  export async function end(
9
6
  { id, output, reason }: { id: string; output?: object; reason?: string },
10
- { domain, user, tx, t }: ContextStatus
7
+ context: any
11
8
  ): Promise<ActivityThread> {
12
- debug('end', id, output)
9
+ const { domain, user, tx } = context.state
13
10
 
14
- var repository = getRepository(ActivityThread)
11
+ const repository = getRepository(ActivityThread)
15
12
 
16
13
  var activityThread = await repository.findOne({
17
14
  where: { domain, id }
@@ -19,7 +16,7 @@ export async function end(
19
16
 
20
17
  if (!activityThread) {
21
18
  throw new Error(
22
- t('error.activity-thread not found', {
19
+ context.t('error.activity-thread not found', {
23
20
  activityThread: id
24
21
  })
25
22
  )
@@ -1,13 +1,10 @@
1
1
  import { ActivityThread } from '../../service/activity-thread/activity-thread'
2
2
  import { ActivityThreadSave } from '../../service/activity-thread/activity-thread-type'
3
- import { type ContextStatus } from '../common'
4
3
 
5
- export async function save(
6
- id: string,
7
- save: ActivityThreadSave,
8
- { domain, user, tx, t }: ContextStatus
9
- ): Promise<ActivityThread> {
4
+ export async function save(id: string, save: ActivityThreadSave, context: any): Promise<ActivityThread> {
5
+ const { domain, user, tx } = context.state
10
6
  const repository = tx.getRepository(ActivityThread)
7
+
11
8
  const activityThread = await repository.findOne({
12
9
  where: { domain, id }
13
10
  })
@@ -1,15 +1,7 @@
1
1
  import { ActivityThread, ActivityThreadStatus } from '../../service/activity-thread/activity-thread'
2
- import { type ContextStatus } from '../common'
3
2
 
4
- const debug = require('debug')('things-factory:worklist:start')
5
-
6
- export async function start(
7
- id: string,
8
- output: object,
9
- reason: string,
10
- { domain, user, tx, t }: ContextStatus
11
- ): Promise<ActivityThread> {
12
- debug('startActivityThread', id)
3
+ export async function start(id: string, output: object, reason: string, context: any): Promise<ActivityThread> {
4
+ const { domain, user, tx } = context.state
13
5
 
14
6
  const repository = tx.getRepository(ActivityThread)
15
7
  const activityThread = await repository.findOne({
@@ -18,7 +10,7 @@ export async function start(
18
10
 
19
11
  if (!activityThread) {
20
12
  throw new Error(
21
- t('error.activity-instance not found', {
13
+ context.t('error.activity-instance not found', {
22
14
  activityInstance: id
23
15
  })
24
16
  )
@@ -32,6 +24,7 @@ export async function start(
32
24
  ...activityThread,
33
25
  reason,
34
26
  state: ActivityThreadStatus.Started,
27
+ transaction: 'start',
35
28
  updater: user,
36
29
  startedAt: new Date()
37
30
  })
@@ -1,16 +1,12 @@
1
1
  import { getRepository } from 'typeorm'
2
2
 
3
3
  import { ActivityThread, ActivityThreadStatus } from '../../service/activity-thread/activity-thread'
4
- import { type ContextStatus } from '../common'
5
-
6
- const debug = require('debug')('things-factory:worklist:terminate')
7
4
 
8
5
  export async function terminate(
9
6
  { id, output, reason }: { id: string; output?: object; reason?: string },
10
- { domain, user, tx, t }: ContextStatus
7
+ context: any
11
8
  ): Promise<ActivityThread> {
12
- debug('terminate', id, output)
13
-
9
+ const { domain, user, tx } = context.state
14
10
  var repository = getRepository(ActivityThread)
15
11
 
16
12
  var activityThread = await repository.findOne({
@@ -19,7 +15,7 @@ export async function terminate(
19
15
 
20
16
  if (!activityThread) {
21
17
  throw new Error(
22
- t('error.activity-instance not found', {
18
+ context.t('error.activity-instance not found', {
23
19
  activityThread: id
24
20
  })
25
21
  )
@@ -1,21 +1,33 @@
1
- import { EntityManager } from 'typeorm'
2
-
3
1
  import { Role, User } from '@things-factory/auth-base'
4
- import { Domain } from '@things-factory/shell'
5
2
 
6
3
  import { ActivityInstance, ActivityInstanceStatus } from '../service/activity-instance/activity-instance'
7
4
  import { ActivityThread, ActivityThreadStatus } from '../service/activity-thread/activity-thread'
8
5
 
9
- export type ContextStatus = { domain?: Domain; user?: User; tx?: EntityManager; t?: (...args: any[]) => string }
6
+ export async function updateActivityInstanceState(id: string, context: any) {
7
+ const { tx } = context.state
10
8
 
11
- export async function updateActivityInstanceState(id: string, { tx }: ContextStatus) {
12
9
  await tx.getRepository(ActivityInstance).save({
13
- ...(await tx.getRepository(ActivityInstance).findOne(id)),
14
- state: await evalActivityInstanceState(id, { tx })
10
+ ...(await tx.getRepository(ActivityInstance).findOne({
11
+ where: { id },
12
+ relations: [
13
+ 'domain',
14
+ 'activity',
15
+ 'assigneeRole',
16
+ 'supervisoryRole',
17
+ 'updater',
18
+ 'creator',
19
+ 'starter',
20
+ 'terminator'
21
+ ]
22
+ })),
23
+ transaction: 'thread' /* change by transaction of activity thread */,
24
+ state: await evalActivityInstanceState(id, context)
15
25
  })
16
26
  }
17
27
 
18
- export async function evalActivityInstanceState(id: string, { tx }: ContextStatus): Promise<ActivityInstanceStatus> {
28
+ export async function evalActivityInstanceState(id: string, context: any): Promise<ActivityInstanceStatus> {
29
+ const { tx } = context.state
30
+
19
31
  const activityInstance = await tx.getRepository(ActivityInstance).findOne(id, { relations: ['activityThreads'] })
20
32
  const { threadsMin, threadsMax, activityThreads, state, dueAt } = activityInstance
21
33
 
@@ -42,10 +54,13 @@ export async function evalActivityInstanceState(id: string, { tx }: ContextStatu
42
54
  }
43
55
 
44
56
  export async function createActivityThreadsForUsers(
45
- activityInstance,
46
- assignees,
47
- { domain, user, tx, t }: ContextStatus
57
+ transaction: string,
58
+ activityInstance: ActivityInstance,
59
+ assignees: User[],
60
+ context: any
48
61
  ): Promise<[ActivityThread]> {
62
+ const { domain, user, tx } = context.state
63
+
49
64
  const threadRepo = tx.getRepository(ActivityThread)
50
65
  const now = new Date()
51
66
 
@@ -56,6 +71,7 @@ export async function createActivityThreadsForUsers(
56
71
  state: ActivityThreadStatus.Assigned,
57
72
  activityInstance,
58
73
  domain,
74
+ transaction,
59
75
  creator: user,
60
76
  updater: user,
61
77
  dueAt: activityInstance.dueAt,
@@ -66,9 +82,12 @@ export async function createActivityThreadsForUsers(
66
82
  }
67
83
 
68
84
  export async function createActivityThreadsForAllRoleUsers(
69
- activityInstance,
70
- { domain, user, tx, t }: ContextStatus
85
+ transaction: string,
86
+ activityInstance: ActivityInstance,
87
+ context: any
71
88
  ): Promise<[ActivityThread]> {
89
+ const { tx } = context.state
90
+
72
91
  // find how many users are having given role
73
92
  const assigneeRole = (await tx
74
93
  .getRepository(Role)
@@ -80,5 +99,5 @@ export async function createActivityThreadsForAllRoleUsers(
80
99
  }
81
100
 
82
101
  // create activity-thread for all of users having given role
83
- return await createActivityThreadsForUsers(activityInstance, assignees, { domain, user, tx, t })
102
+ return await createActivityThreadsForUsers(transaction, activityInstance, assignees, context)
84
103
  }
package/server/routes.ts CHANGED
@@ -1,5 +1,3 @@
1
- const debug = require('debug')('things-factory:worklist:routes')
2
-
3
1
  process.on('bootstrap-module-global-public-route' as any, (app, globalPublicRouter) => {
4
2
  /*
5
3
  * can add global public routes to application (auth not required, tenancy not required)