@things-factory/worklist 5.0.11 → 6.0.0-alpha.0
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.
- package/client/components/activity-/{bowner-view.js → bowner-view.ts} +27 -35
- package/client/components/{activity-instance-preview.js → activity-instance-preview.ts} +39 -52
- package/client/components/activity-intro-view.ts +0 -1
- package/client/components/{activity-reporter-view.js → activity-reporter-view.ts} +27 -40
- package/client/components/{activity-starter-form.js → activity-starter-form.ts} +55 -71
- package/client/pages/activity/{activity-list-page.js → activity-list-page.ts} +26 -35
- package/client/pages/activity/{activity-model-item-list.js → activity-model-item-list.ts} +15 -19
- package/client/pages/activity/{activity-page.js → activity-page.ts} +37 -42
- package/client/pages/activity/{starter-list-page.js → starter-list-page.ts} +15 -20
- package/client/pages/activity-instance/{activity-instance-list-page.js → activity-instance-list-page.ts} +22 -30
- package/client/pages/activity-instance/{activity-instance-page.js → activity-instance-page.ts} +37 -42
- package/client/pages/activity-store/{activity-store-page.js → activity-store-page.ts} +22 -29
- package/client/pages/activity-supervisor/{reporter-list-page.js → reporter-list-page.ts} +14 -21
- package/client/pages/activity-template/{activity-template-importer.js → activity-template-importer.ts} +32 -38
- package/client/pages/activity-template/{activity-template-list-page.js → activity-template-list-page.ts} +30 -37
- package/client/pages/activity-template/{activity-template-model-item-list.js → activity-template-model-item-list.ts} +5 -4
- package/client/pages/activity-thread/{activity-thread-importer.js → activity-thread-importer.ts} +32 -37
- package/client/pages/activity-thread/{activity-thread-list-page.js → activity-thread-list-page.ts} +20 -27
- package/client/pages/activity-thread/{activity-thread-page.js → activity-thread-page.ts} +37 -41
- package/client/pages/dashboard/{dashboard-home.js → dashboard-home.ts} +3 -7
- package/client/pages/todo/{assigned-list-page.js → assigned-list-page.ts} +13 -20
- package/client/pages/todo/{draft-list-page.js → draft-list-page.ts} +15 -20
- package/client/pages/todo/{pickable-list-page.js → pickable-list-page.ts} +13 -20
- package/client/pages/todo/{todo-list-page.js → todo-list-page.ts} +12 -19
- package/client/pages/{worklist-home.js → worklist-home.ts} +3 -7
- package/dist-client/components/activity-/bowner-view.d.ts +1 -1
- package/dist-client/components/activity-/bowner-view.js +44 -37
- package/dist-client/components/activity-/bowner-view.js.map +1 -1
- package/dist-client/components/activity-instance-preview.d.ts +2 -1
- package/dist-client/components/activity-instance-preview.js +59 -53
- package/dist-client/components/activity-instance-preview.js.map +1 -1
- package/dist-client/components/activity-intro-view.d.ts +0 -1
- package/dist-client/components/activity-intro-view.js +0 -1
- package/dist-client/components/activity-intro-view.js.map +1 -1
- package/dist-client/components/activity-reporter-view.d.ts +1 -1
- package/dist-client/components/activity-reporter-view.js +44 -38
- package/dist-client/components/activity-reporter-view.js.map +1 -1
- package/dist-client/components/activity-starter-form.d.ts +16 -0
- package/dist-client/components/activity-starter-form.js +70 -70
- package/dist-client/components/activity-starter-form.js.map +1 -1
- package/dist-client/pages/activity/activity-list-page.d.ts +13 -262
- package/dist-client/pages/activity/activity-list-page.js +49 -35
- package/dist-client/pages/activity/activity-list-page.js.map +1 -1
- package/dist-client/pages/activity/activity-model-item-list.d.ts +13 -155
- package/dist-client/pages/activity/activity-model-item-list.js +56 -45
- package/dist-client/pages/activity/activity-model-item-list.js.map +1 -1
- package/dist-client/pages/activity/activity-page.d.ts +29 -22
- package/dist-client/pages/activity/activity-page.js +54 -46
- package/dist-client/pages/activity/activity-page.js.map +1 -1
- package/dist-client/pages/activity/starter-list-page.d.ts +14 -120
- package/dist-client/pages/activity/starter-list-page.js +47 -31
- package/dist-client/pages/activity/starter-list-page.js.map +1 -1
- package/dist-client/pages/activity-instance/activity-instance-list-page.d.ts +9 -114
- package/dist-client/pages/activity-instance/activity-instance-list-page.js +40 -30
- package/dist-client/pages/activity-instance/activity-instance-list-page.js.map +1 -1
- package/dist-client/pages/activity-instance/activity-instance-page.d.ts +22 -22
- package/dist-client/pages/activity-instance/activity-instance-page.js +58 -45
- package/dist-client/pages/activity-instance/activity-instance-page.js.map +1 -1
- package/dist-client/pages/activity-store/activity-store-page.d.ts +23 -150
- package/dist-client/pages/activity-store/activity-store-page.js +40 -31
- package/dist-client/pages/activity-store/activity-store-page.js.map +1 -1
- package/dist-client/pages/activity-supervisor/reporter-list-page.d.ts +13 -120
- package/dist-client/pages/activity-supervisor/reporter-list-page.js +47 -31
- package/dist-client/pages/activity-supervisor/reporter-list-page.js.map +1 -1
- package/dist-client/pages/activity-template/activity-template-importer.d.ts +7 -21
- package/dist-client/pages/activity-template/activity-template-importer.js +42 -36
- package/dist-client/pages/activity-template/activity-template-importer.js.map +1 -1
- package/dist-client/pages/activity-template/activity-template-list-page.d.ts +17 -218
- package/dist-client/pages/activity-template/activity-template-list-page.js +58 -37
- package/dist-client/pages/activity-template/activity-template-list-page.js.map +1 -1
- package/dist-client/pages/activity-template/activity-template-model-item-list.js +10 -5
- package/dist-client/pages/activity-template/activity-template-model-item-list.js.map +1 -1
- package/dist-client/pages/activity-thread/activity-thread-importer.d.ts +7 -21
- package/dist-client/pages/activity-thread/activity-thread-importer.js +42 -36
- package/dist-client/pages/activity-thread/activity-thread-importer.js.map +1 -1
- package/dist-client/pages/activity-thread/activity-thread-list-page.d.ts +16 -100
- package/dist-client/pages/activity-thread/activity-thread-list-page.js +55 -36
- package/dist-client/pages/activity-thread/activity-thread-list-page.js.map +1 -1
- package/dist-client/pages/activity-thread/activity-thread-page.d.ts +26 -19
- package/dist-client/pages/activity-thread/activity-thread-page.js +54 -45
- package/dist-client/pages/activity-thread/activity-thread-page.js.map +1 -1
- package/dist-client/pages/dashboard/dashboard-home.js +8 -7
- package/dist-client/pages/dashboard/dashboard-home.js.map +1 -1
- package/dist-client/pages/todo/assigned-list-page.d.ts +12 -100
- package/dist-client/pages/todo/assigned-list-page.js +45 -30
- package/dist-client/pages/todo/assigned-list-page.js.map +1 -1
- package/dist-client/pages/todo/draft-list-page.d.ts +13 -174
- package/dist-client/pages/todo/draft-list-page.js +48 -30
- package/dist-client/pages/todo/draft-list-page.js.map +1 -1
- package/dist-client/pages/todo/pickable-list-page.d.ts +13 -126
- package/dist-client/pages/todo/pickable-list-page.js +46 -30
- package/dist-client/pages/todo/pickable-list-page.js.map +1 -1
- package/dist-client/pages/todo/todo-list-page.d.ts +12 -206
- package/dist-client/pages/todo/todo-list-page.js +44 -30
- package/dist-client/pages/todo/todo-list-page.js.map +1 -1
- package/dist-client/pages/worklist-home.js +8 -7
- package/dist-client/pages/worklist-home.js.map +1 -1
- package/dist-client/route.d.ts +1 -1
- package/dist-client/tsconfig.tsbuildinfo +1 -1
- package/dist-server/controllers/activity-instance/abort.js +8 -6
- package/dist-server/controllers/activity-instance/abort.js.map +1 -1
- package/dist-server/controllers/activity-instance/adjust.js +5 -3
- package/dist-server/controllers/activity-instance/adjust.js.map +1 -1
- package/dist-server/controllers/activity-instance/assign.js +11 -25
- package/dist-server/controllers/activity-instance/assign.js.map +1 -1
- package/dist-server/controllers/activity-instance/delegate.js +8 -6
- package/dist-server/controllers/activity-instance/delegate.js.map +1 -1
- package/dist-server/controllers/activity-instance/draft.js +9 -8
- package/dist-server/controllers/activity-instance/draft.js.map +1 -1
- package/dist-server/controllers/activity-instance/end.js +8 -6
- package/dist-server/controllers/activity-instance/end.js.map +1 -1
- package/dist-server/controllers/activity-instance/pick.js +9 -6
- package/dist-server/controllers/activity-instance/pick.js.map +1 -1
- package/dist-server/controllers/activity-instance/post.js +26 -6
- package/dist-server/controllers/activity-instance/post.js.map +1 -1
- package/dist-server/controllers/activity-instance/start.js +5 -3
- package/dist-server/controllers/activity-instance/start.js.map +1 -1
- package/dist-server/controllers/activity-instance/terminate.js +8 -6
- package/dist-server/controllers/activity-instance/terminate.js.map +1 -1
- package/dist-server/controllers/activity-thread/abort.js +7 -5
- package/dist-server/controllers/activity-thread/abort.js.map +1 -1
- package/dist-server/controllers/activity-thread/adjust.js +4 -2
- package/dist-server/controllers/activity-thread/adjust.js.map +1 -1
- package/dist-server/controllers/activity-thread/delegate.js +7 -5
- package/dist-server/controllers/activity-thread/delegate.js.map +1 -1
- package/dist-server/controllers/activity-thread/end.js +7 -5
- package/dist-server/controllers/activity-thread/end.js.map +1 -1
- package/dist-server/controllers/activity-thread/save.js +4 -2
- package/dist-server/controllers/activity-thread/save.js.map +1 -1
- package/dist-server/controllers/activity-thread/start.js +6 -4
- package/dist-server/controllers/activity-thread/start.js.map +1 -1
- package/dist-server/controllers/activity-thread/terminate.js +7 -5
- package/dist-server/controllers/activity-thread/terminate.js.map +1 -1
- package/dist-server/controllers/common.js +31 -10
- package/dist-server/controllers/common.js.map +1 -1
- package/dist-server/service/activity/activity-history.js +6 -7
- package/dist-server/service/activity/activity-history.js.map +1 -1
- package/dist-server/service/activity/activity-mutation.js +10 -4
- package/dist-server/service/activity/activity-mutation.js.map +1 -1
- package/dist-server/service/activity/activity-query.js +18 -19
- package/dist-server/service/activity/activity-query.js.map +1 -1
- package/dist-server/service/activity/activity-type.js +6 -7
- package/dist-server/service/activity/activity-type.js.map +1 -1
- package/dist-server/service/activity/activity.js +6 -7
- package/dist-server/service/activity/activity.js.map +1 -1
- package/dist-server/service/activity-instance/activity-instance-history.js +7 -8
- package/dist-server/service/activity-instance/activity-instance-history.js.map +1 -1
- package/dist-server/service/activity-instance/activity-instance-mutation.js +17 -19
- package/dist-server/service/activity-instance/activity-instance-mutation.js.map +1 -1
- package/dist-server/service/activity-instance/activity-instance-query.js +24 -25
- package/dist-server/service/activity-instance/activity-instance-query.js.map +1 -1
- package/dist-server/service/activity-instance/activity-instance-subscription.js +1 -2
- package/dist-server/service/activity-instance/activity-instance-subscription.js.map +1 -1
- package/dist-server/service/activity-instance/activity-instance-type.js +13 -6
- package/dist-server/service/activity-instance/activity-instance-type.js.map +1 -1
- package/dist-server/service/activity-instance/activity-instance.js +7 -8
- package/dist-server/service/activity-instance/activity-instance.js.map +1 -1
- package/dist-server/service/activity-instance/event-subscriber.js +0 -5
- package/dist-server/service/activity-instance/event-subscriber.js.map +1 -1
- package/dist-server/service/activity-template/activity-template-history.js +3 -4
- package/dist-server/service/activity-template/activity-template-history.js.map +1 -1
- package/dist-server/service/activity-template/activity-template-mutation.js +4 -4
- package/dist-server/service/activity-template/activity-template-mutation.js.map +1 -1
- package/dist-server/service/activity-template/activity-template-query.js +23 -11
- package/dist-server/service/activity-template/activity-template-query.js.map +1 -1
- package/dist-server/service/activity-template/activity-template.js +3 -4
- package/dist-server/service/activity-template/activity-template.js.map +1 -1
- package/dist-server/service/activity-thread/activity-thread-mutation.js +15 -11
- package/dist-server/service/activity-thread/activity-thread-mutation.js.map +1 -1
- package/dist-server/service/activity-thread/activity-thread-query.js +11 -13
- package/dist-server/service/activity-thread/activity-thread-query.js.map +1 -1
- package/dist-server/service/activity-thread/activity-thread.js +4 -5
- package/dist-server/service/activity-thread/activity-thread.js.map +1 -1
- package/dist-server/service/activity-thread/event-subscriber.js +15 -3
- package/dist-server/service/activity-thread/event-subscriber.js.map +1 -1
- package/dist-server/tsconfig.tsbuildinfo +1 -1
- package/package.json +7 -7
- package/server/controllers/activity-instance/abort.ts +9 -6
- package/server/controllers/activity-instance/adjust.ts +7 -4
- package/server/controllers/activity-instance/assign.ts +16 -44
- package/server/controllers/activity-instance/delegate.ts +10 -7
- package/server/controllers/activity-instance/draft.ts +9 -8
- package/server/controllers/activity-instance/end.ts +9 -7
- package/server/controllers/activity-instance/pick.ts +15 -7
- package/server/controllers/activity-instance/post.ts +30 -7
- package/server/controllers/activity-instance/start.ts +7 -4
- package/server/controllers/activity-instance/terminate.ts +10 -7
- package/server/controllers/activity-thread/abort.ts +7 -5
- package/server/controllers/activity-thread/adjust.ts +5 -3
- package/server/controllers/activity-thread/delegate.ts +8 -6
- package/server/controllers/activity-thread/end.ts +8 -6
- package/server/controllers/activity-thread/save.ts +5 -7
- package/server/controllers/activity-thread/start.ts +7 -4
- package/server/controllers/activity-thread/terminate.ts +6 -5
- package/server/controllers/common.ts +44 -21
- package/server/service/activity/activity-mutation.ts +19 -10
- package/server/service/activity/activity-query.ts +14 -14
- package/server/service/activity-instance/activity-instance-mutation.ts +18 -20
- package/server/service/activity-instance/activity-instance-query.ts +27 -21
- package/server/service/activity-instance/activity-instance-subscription.ts +1 -2
- package/server/service/activity-instance/activity-instance-type.ts +10 -4
- package/server/service/activity-instance/event-subscriber.ts +0 -6
- package/server/service/activity-template/activity-template-mutation.ts +13 -10
- package/server/service/activity-template/activity-template-query.ts +18 -9
- package/server/service/activity-thread/activity-thread-mutation.ts +27 -20
- package/server/service/activity-thread/activity-thread-query.ts +10 -11
- package/server/service/activity-thread/event-subscriber.ts +15 -3
- package/translations/en.json +3 -0
- package/translations/ko.json +3 -0
- package/translations/ms.json +3 -0
- package/translations/zh.json +3 -0
|
@@ -1,21 +1,22 @@
|
|
|
1
|
-
import { getRepository } from '
|
|
1
|
+
import { getRepository } from '@things-factory/shell'
|
|
2
2
|
|
|
3
3
|
import { ActivityThread, ActivityThreadStatus } from '../../service/activity-thread/activity-thread'
|
|
4
|
-
import { type ContextStatus } from '../common'
|
|
5
4
|
|
|
6
5
|
export async function terminate(
|
|
7
6
|
{ id, output, reason }: { id: string; output?: object; reason?: string },
|
|
8
|
-
|
|
7
|
+
context: any
|
|
9
8
|
): Promise<ActivityThread> {
|
|
9
|
+
const { domain, user, tx } = context.state
|
|
10
10
|
var repository = getRepository(ActivityThread)
|
|
11
11
|
|
|
12
12
|
var activityThread = await repository.findOne({
|
|
13
|
-
where: { domain, id }
|
|
13
|
+
where: { domain: { id: domain.id }, id },
|
|
14
|
+
relations: ['domain', 'activityInstance', 'assignee', 'creator', 'updater']
|
|
14
15
|
})
|
|
15
16
|
|
|
16
17
|
if (!activityThread) {
|
|
17
18
|
throw new Error(
|
|
18
|
-
t('error.activity-instance not found', {
|
|
19
|
+
context.t('error.activity-instance not found', {
|
|
19
20
|
activityThread: id
|
|
20
21
|
})
|
|
21
22
|
)
|
|
@@ -1,22 +1,37 @@
|
|
|
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
|
|
6
|
+
export async function updateActivityInstanceState(id: string, context: ResolverContext) {
|
|
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(
|
|
14
|
-
|
|
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,
|
|
19
|
-
const
|
|
28
|
+
export async function evalActivityInstanceState(id: string, context: ResolverContext): Promise<ActivityInstanceStatus> {
|
|
29
|
+
const { tx } = context.state
|
|
30
|
+
|
|
31
|
+
const activityInstance = await tx.getRepository(ActivityInstance).findOne({
|
|
32
|
+
where: { id },
|
|
33
|
+
relations: ['activityThreads']
|
|
34
|
+
})
|
|
20
35
|
const { threadsMin, threadsMax, activityThreads, state, dueAt } = activityInstance
|
|
21
36
|
|
|
22
37
|
const validThreads = activityThreads.filter(thread => thread.isValid())
|
|
@@ -42,10 +57,13 @@ export async function evalActivityInstanceState(id: string, { tx }: ContextStatu
|
|
|
42
57
|
}
|
|
43
58
|
|
|
44
59
|
export async function createActivityThreadsForUsers(
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
60
|
+
transaction: string,
|
|
61
|
+
activityInstance: ActivityInstance,
|
|
62
|
+
assignees: User[],
|
|
63
|
+
context: ResolverContext
|
|
64
|
+
): Promise<ActivityThread[]> {
|
|
65
|
+
const { domain, user, tx } = context.state
|
|
66
|
+
|
|
49
67
|
const threadRepo = tx.getRepository(ActivityThread)
|
|
50
68
|
const now = new Date()
|
|
51
69
|
|
|
@@ -56,23 +74,28 @@ export async function createActivityThreadsForUsers(
|
|
|
56
74
|
state: ActivityThreadStatus.Assigned,
|
|
57
75
|
activityInstance,
|
|
58
76
|
domain,
|
|
77
|
+
transaction,
|
|
59
78
|
creator: user,
|
|
60
79
|
updater: user,
|
|
61
80
|
dueAt: activityInstance.dueAt,
|
|
62
81
|
assignedAt: now
|
|
63
|
-
}
|
|
82
|
+
} as any
|
|
64
83
|
})
|
|
65
84
|
)
|
|
66
85
|
}
|
|
67
86
|
|
|
68
87
|
export async function createActivityThreadsForAllRoleUsers(
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
88
|
+
transaction: string,
|
|
89
|
+
activityInstance: ActivityInstance,
|
|
90
|
+
context: ResolverContext
|
|
91
|
+
): Promise<ActivityThread[]> {
|
|
92
|
+
const { tx } = context.state
|
|
93
|
+
|
|
72
94
|
// find how many users are having given role
|
|
73
|
-
const assigneeRole = (await tx
|
|
74
|
-
.
|
|
75
|
-
|
|
95
|
+
const assigneeRole = (await tx.getRepository(Role).findOne({
|
|
96
|
+
where: { id: activityInstance.assigneeRoleId },
|
|
97
|
+
relations: ['users']
|
|
98
|
+
})) as Role
|
|
76
99
|
const assignees = assigneeRole?.users || []
|
|
77
100
|
|
|
78
101
|
if (assignees.length === 0) {
|
|
@@ -80,5 +103,5 @@ export async function createActivityThreadsForAllRoleUsers(
|
|
|
80
103
|
}
|
|
81
104
|
|
|
82
105
|
// create activity-thread for all of users having given role
|
|
83
|
-
return await createActivityThreadsForUsers(activityInstance, assignees,
|
|
106
|
+
return await createActivityThreadsForUsers(transaction, activityInstance, assignees, context)
|
|
84
107
|
}
|
|
@@ -10,7 +10,7 @@ import { ActivityPatch, NewActivity } from './activity-type'
|
|
|
10
10
|
export class ActivityMutation {
|
|
11
11
|
@Directive('@transaction')
|
|
12
12
|
@Mutation(returns => Activity, { description: 'To create new Activity' })
|
|
13
|
-
async createActivity(@Arg('activity') activity: NewActivity, @Ctx() context:
|
|
13
|
+
async createActivity(@Arg('activity') activity: NewActivity, @Ctx() context: ResolverContext): Promise<Activity> {
|
|
14
14
|
const { domain, user, tx } = context.state
|
|
15
15
|
|
|
16
16
|
const result = await tx.getRepository(Activity).save({
|
|
@@ -42,13 +42,15 @@ export class ActivityMutation {
|
|
|
42
42
|
async updateActivity(
|
|
43
43
|
@Arg('id') id: string,
|
|
44
44
|
@Arg('patch') patch: ActivityPatch,
|
|
45
|
-
@Ctx() context:
|
|
45
|
+
@Ctx() context: ResolverContext
|
|
46
46
|
): Promise<Activity> {
|
|
47
47
|
const { domain, user, tx } = context.state
|
|
48
48
|
|
|
49
49
|
const repository = tx.getRepository(Activity)
|
|
50
50
|
const activity = await repository.findOne({
|
|
51
|
-
where: { domain, id }
|
|
51
|
+
where: { domain: { id: domain.id }, id },
|
|
52
|
+
/* history에 항상 반영될 수 있도록 relations가 있어야 함. */
|
|
53
|
+
relations: ['domain', 'issuerRole', 'assigneeRole', 'supervisoryRole', 'creator', 'updater']
|
|
52
54
|
})
|
|
53
55
|
|
|
54
56
|
const result = await repository.save({
|
|
@@ -79,7 +81,7 @@ export class ActivityMutation {
|
|
|
79
81
|
@Mutation(returns => [Activity], { description: "To modify multiple Activities' information" })
|
|
80
82
|
async updateMultipleActivity(
|
|
81
83
|
@Arg('patches', type => [ActivityPatch]) patches: ActivityPatch[],
|
|
82
|
-
@Ctx() context:
|
|
84
|
+
@Ctx() context: ResolverContext
|
|
83
85
|
): Promise<Activity[]> {
|
|
84
86
|
const { domain, user, tx } = context.state
|
|
85
87
|
|
|
@@ -120,7 +122,11 @@ export class ActivityMutation {
|
|
|
120
122
|
if (_updateRecords.length > 0) {
|
|
121
123
|
for (let i = 0; i < _updateRecords.length; i++) {
|
|
122
124
|
const updateRecord = _updateRecords[i]
|
|
123
|
-
const activity = await activityRepo.findOne(
|
|
125
|
+
const activity = await activityRepo.findOne({
|
|
126
|
+
where: { id: updateRecord.id },
|
|
127
|
+
/* history에 항상 반영될 수 있도록 relations가 있어야 함. */
|
|
128
|
+
relations: ['domain', 'issuerRole', 'assigneeRole', 'supervisoryRole', 'creator', 'updater']
|
|
129
|
+
})
|
|
124
130
|
|
|
125
131
|
const result = await activityRepo.save({
|
|
126
132
|
...activity,
|
|
@@ -152,10 +158,10 @@ export class ActivityMutation {
|
|
|
152
158
|
|
|
153
159
|
@Directive('@transaction')
|
|
154
160
|
@Mutation(returns => Boolean, { description: 'To delete Activity' })
|
|
155
|
-
async deleteActivity(@Arg('id') id: string, @Ctx() context:
|
|
161
|
+
async deleteActivity(@Arg('id') id: string, @Ctx() context: ResolverContext): Promise<boolean> {
|
|
156
162
|
const { domain, tx } = context.state
|
|
157
163
|
|
|
158
|
-
await tx.getRepository(Activity).delete({ domain, id })
|
|
164
|
+
await tx.getRepository(Activity).delete({ domain: { id: domain.id }, id })
|
|
159
165
|
await deleteAttachmentsByRef(null, { refBys: [id] }, context)
|
|
160
166
|
|
|
161
167
|
return true
|
|
@@ -163,11 +169,14 @@ export class ActivityMutation {
|
|
|
163
169
|
|
|
164
170
|
@Directive('@transaction')
|
|
165
171
|
@Mutation(returns => Boolean, { description: 'To delete multiple Activities' })
|
|
166
|
-
async deleteActivities(
|
|
172
|
+
async deleteActivities(
|
|
173
|
+
@Arg('ids', type => [String]) ids: string[],
|
|
174
|
+
@Ctx() context: ResolverContext
|
|
175
|
+
): Promise<boolean> {
|
|
167
176
|
const { domain, tx } = context.state
|
|
168
177
|
|
|
169
178
|
await tx.getRepository(Activity).delete({
|
|
170
|
-
domain,
|
|
179
|
+
domain: { id: domain.id },
|
|
171
180
|
id: In(ids)
|
|
172
181
|
})
|
|
173
182
|
|
|
@@ -180,7 +189,7 @@ export class ActivityMutation {
|
|
|
180
189
|
@Mutation(returns => Boolean, { description: 'To import multiple Activities' })
|
|
181
190
|
async importActivities(
|
|
182
191
|
@Arg('activities', type => [ActivityPatch]) activities: ActivityPatch[],
|
|
183
|
-
@Ctx() context:
|
|
192
|
+
@Ctx() context: ResolverContext
|
|
184
193
|
): Promise<boolean> {
|
|
185
194
|
const { domain, tx } = context.state
|
|
186
195
|
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { Arg, Args, Ctx, FieldResolver, Query, Resolver, Root } from 'type-graphql'
|
|
2
|
-
import { Brackets
|
|
2
|
+
import { Brackets } from 'typeorm'
|
|
3
3
|
|
|
4
4
|
import { Attachment } from '@things-factory/attachment-base'
|
|
5
5
|
import { Role, User } from '@things-factory/auth-base'
|
|
6
|
-
import { Domain, getQueryBuilderFromListParams, ListParam } from '@things-factory/shell'
|
|
6
|
+
import { Domain, getQueryBuilderFromListParams, getRepository, ListParam } from '@things-factory/shell'
|
|
7
7
|
|
|
8
8
|
import { Activity } from './activity'
|
|
9
9
|
import { ActivityList } from './activity-type'
|
|
@@ -11,16 +11,16 @@ import { ActivityList } from './activity-type'
|
|
|
11
11
|
@Resolver(Activity)
|
|
12
12
|
export class ActivityQuery {
|
|
13
13
|
@Query(returns => Activity!, { nullable: true, description: 'To fetch a Activity' })
|
|
14
|
-
async activity(@Arg('id') id: string, @Ctx() context:
|
|
14
|
+
async activity(@Arg('id') id: string, @Ctx() context: ResolverContext): Promise<Activity> {
|
|
15
15
|
const { domain } = context.state
|
|
16
16
|
|
|
17
17
|
return await getRepository(Activity).findOne({
|
|
18
|
-
where: { domain, id }
|
|
18
|
+
where: { domain: { id: domain.id }, id }
|
|
19
19
|
})
|
|
20
20
|
}
|
|
21
21
|
|
|
22
22
|
@Query(returns => ActivityList, { description: 'To fetch multiple Activities' })
|
|
23
|
-
async activities(@Args() params: ListParam, @Ctx() context:
|
|
23
|
+
async activities(@Args() params: ListParam, @Ctx() context: ResolverContext): Promise<ActivityList> {
|
|
24
24
|
const { domain } = context.state
|
|
25
25
|
|
|
26
26
|
const queryBuilder = getQueryBuilderFromListParams({
|
|
@@ -37,7 +37,7 @@ export class ActivityQuery {
|
|
|
37
37
|
}
|
|
38
38
|
|
|
39
39
|
@Query(returns => ActivityList, { description: 'To fetch the list of activities I can start' })
|
|
40
|
-
async startableActivities(@Args() params: ListParam, @Ctx() context:
|
|
40
|
+
async startableActivities(@Args() params: ListParam, @Ctx() context: ResolverContext): Promise<ActivityList> {
|
|
41
41
|
var { domain, user } = context.state
|
|
42
42
|
|
|
43
43
|
/* 조회한 사용자가 assigner 역할을 가진 activity-instance 리스트만 반환 */
|
|
@@ -69,7 +69,7 @@ export class ActivityQuery {
|
|
|
69
69
|
}
|
|
70
70
|
|
|
71
71
|
@Query(returns => ActivityList, { description: 'To fetch the list of activities that I can report on' })
|
|
72
|
-
async supervisableActivities(@Args() params: ListParam, @Ctx() context:
|
|
72
|
+
async supervisableActivities(@Args() params: ListParam, @Ctx() context: ResolverContext): Promise<ActivityList> {
|
|
73
73
|
var { domain, user } = context.state
|
|
74
74
|
|
|
75
75
|
/* 조회한 사용자가 assigner 역할을 가진 activity-instance 리스트만 반환 */
|
|
@@ -100,7 +100,7 @@ export class ActivityQuery {
|
|
|
100
100
|
async issuerRole(@Root() activity: Activity): Promise<Role> {
|
|
101
101
|
return (
|
|
102
102
|
activity.issuerRole ||
|
|
103
|
-
(await getRepository(Role).
|
|
103
|
+
(await getRepository(Role).findOneBy({
|
|
104
104
|
id: activity.issuerRoleId
|
|
105
105
|
}))
|
|
106
106
|
)
|
|
@@ -110,7 +110,7 @@ export class ActivityQuery {
|
|
|
110
110
|
async assigneeRole(@Root() activity: Activity): Promise<Role> {
|
|
111
111
|
return (
|
|
112
112
|
activity.assigneeRole ||
|
|
113
|
-
(await getRepository(Role).
|
|
113
|
+
(await getRepository(Role).findOneBy({
|
|
114
114
|
id: activity.assigneeRoleId
|
|
115
115
|
}))
|
|
116
116
|
)
|
|
@@ -120,7 +120,7 @@ export class ActivityQuery {
|
|
|
120
120
|
async supervisoryRole(@Root() activity: Activity): Promise<Role> {
|
|
121
121
|
return (
|
|
122
122
|
activity.supervisoryRole ||
|
|
123
|
-
(await getRepository(Role).
|
|
123
|
+
(await getRepository(Role).findOneBy({
|
|
124
124
|
id: activity.supervisoryRoleId
|
|
125
125
|
}))
|
|
126
126
|
)
|
|
@@ -130,7 +130,7 @@ export class ActivityQuery {
|
|
|
130
130
|
async thumbnail(@Root() activity: Activity): Promise<string | undefined> {
|
|
131
131
|
const attachment: Attachment = await getRepository(Attachment).findOne({
|
|
132
132
|
where: {
|
|
133
|
-
domain: activity.domainId,
|
|
133
|
+
domain: { id: activity.domainId },
|
|
134
134
|
refType: Activity.name,
|
|
135
135
|
refBy: activity.id
|
|
136
136
|
}
|
|
@@ -141,16 +141,16 @@ export class ActivityQuery {
|
|
|
141
141
|
|
|
142
142
|
@FieldResolver(type => Domain)
|
|
143
143
|
async domain(@Root() activity: Activity): Promise<Domain> {
|
|
144
|
-
return await getRepository(Domain).
|
|
144
|
+
return await getRepository(Domain).findOneBy({ id: activity.domainId })
|
|
145
145
|
}
|
|
146
146
|
|
|
147
147
|
@FieldResolver(type => User)
|
|
148
148
|
async updater(@Root() activity: Activity): Promise<User> {
|
|
149
|
-
return await getRepository(User).
|
|
149
|
+
return await getRepository(User).findOneBy({ id: activity.updaterId })
|
|
150
150
|
}
|
|
151
151
|
|
|
152
152
|
@FieldResolver(type => User)
|
|
153
153
|
async creator(@Root() activity: Activity): Promise<User> {
|
|
154
|
-
return await getRepository(User).
|
|
154
|
+
return await getRepository(User).findOneBy({ id: activity.creatorId })
|
|
155
155
|
}
|
|
156
156
|
}
|
|
@@ -13,18 +13,18 @@ export class ActivityInstanceMutation {
|
|
|
13
13
|
@Mutation(returns => ActivityInstance, { description: 'To draft standard ActivityInstance' })
|
|
14
14
|
async draftActivityInstance(
|
|
15
15
|
@Arg('activityInstance') activityInstance: NewActivityInstance,
|
|
16
|
-
@Ctx() context:
|
|
16
|
+
@Ctx() context: ResolverContext
|
|
17
17
|
): Promise<ActivityInstance> {
|
|
18
|
-
return await draft(activityInstance, context
|
|
18
|
+
return await draft(activityInstance, context)
|
|
19
19
|
}
|
|
20
20
|
|
|
21
21
|
@Directive('@transaction')
|
|
22
22
|
@Mutation(returns => ActivityInstance, { description: 'To post standard ActivityInstance' })
|
|
23
23
|
async postActivityInstance(
|
|
24
24
|
@Arg('activityInstance') activityInstance: ActivityInstancePost,
|
|
25
|
-
@Ctx() context:
|
|
25
|
+
@Ctx() context: ResolverContext
|
|
26
26
|
): Promise<ActivityInstance> {
|
|
27
|
-
return await post(activityInstance, context
|
|
27
|
+
return await post(activityInstance, context)
|
|
28
28
|
}
|
|
29
29
|
|
|
30
30
|
@Directive('@transaction')
|
|
@@ -33,29 +33,27 @@ export class ActivityInstanceMutation {
|
|
|
33
33
|
description:
|
|
34
34
|
'To pick an activity ActivityInstance voluntarily. [cautions] This resolver will return a assigned ActivityThread.'
|
|
35
35
|
})
|
|
36
|
-
async pickActivityInstance(@Arg('id') id: string, @Ctx() context:
|
|
37
|
-
return await pick(id, context
|
|
36
|
+
async pickActivityInstance(@Arg('id') id: string, @Ctx() context: ResolverContext): Promise<ActivityThread> {
|
|
37
|
+
return await pick(id, context)
|
|
38
38
|
}
|
|
39
39
|
|
|
40
40
|
@Directive('@transaction')
|
|
41
41
|
@Mutation(returns => ActivityInstance, { description: 'To assign a ActivityInstance' })
|
|
42
42
|
async assignActivityInstance(
|
|
43
43
|
@Arg('id') id: string,
|
|
44
|
-
@Arg('
|
|
45
|
-
@Arg('supervisoryRole', { nullable: true }) supervisoryRole: string,
|
|
44
|
+
@Arg('assignees', type => [String], { nullable: true, description: 'Email of assignee users' }) assignees: string[],
|
|
46
45
|
@Arg('reason', { nullable: true }) reason: string,
|
|
47
46
|
@Arg('dueAt', { nullable: true }) dueAt: Date,
|
|
48
|
-
@Ctx() context:
|
|
47
|
+
@Ctx() context: ResolverContext
|
|
49
48
|
): Promise<ActivityInstance> {
|
|
50
49
|
return await assign(
|
|
51
50
|
{
|
|
52
51
|
id,
|
|
53
|
-
|
|
54
|
-
supervisoryRole,
|
|
52
|
+
assignees,
|
|
55
53
|
reason,
|
|
56
54
|
dueAt
|
|
57
55
|
},
|
|
58
|
-
context
|
|
56
|
+
context
|
|
59
57
|
)
|
|
60
58
|
}
|
|
61
59
|
|
|
@@ -64,9 +62,9 @@ export class ActivityInstanceMutation {
|
|
|
64
62
|
async updateActivityInstance(
|
|
65
63
|
@Arg('id') id: string,
|
|
66
64
|
@Arg('patch') patch: ActivityInstancePatch,
|
|
67
|
-
@Ctx() context:
|
|
65
|
+
@Ctx() context: ResolverContext
|
|
68
66
|
): Promise<ActivityInstance> {
|
|
69
|
-
return await adjust(id, patch, context
|
|
67
|
+
return await adjust(id, patch, context)
|
|
70
68
|
}
|
|
71
69
|
|
|
72
70
|
@Directive('@transaction')
|
|
@@ -76,9 +74,9 @@ export class ActivityInstanceMutation {
|
|
|
76
74
|
@Arg('assigneeRole', type => ObjectRef, { nullable: true }) assigneeRole: ObjectRef,
|
|
77
75
|
@Arg('dueAt', { nullable: true }) dueAt: Date,
|
|
78
76
|
@Arg('reason', { nullable: true }) reason: string,
|
|
79
|
-
@Ctx() context:
|
|
77
|
+
@Ctx() context: ResolverContext
|
|
80
78
|
): Promise<ActivityInstance> {
|
|
81
|
-
return await delegate({ id, assigneeRole, dueAt, reason }, context
|
|
79
|
+
return await delegate({ id, assigneeRole, dueAt, reason }, context)
|
|
82
80
|
}
|
|
83
81
|
|
|
84
82
|
@Directive('@transaction')
|
|
@@ -87,9 +85,9 @@ export class ActivityInstanceMutation {
|
|
|
87
85
|
@Arg('id') id: string,
|
|
88
86
|
@Arg('output', type => ScalarObject, { nullable: true }) output: { [key: string]: any },
|
|
89
87
|
@Arg('reason', { nullable: true }) reason: string,
|
|
90
|
-
@Ctx() context:
|
|
88
|
+
@Ctx() context: ResolverContext
|
|
91
89
|
): Promise<ActivityInstance> {
|
|
92
|
-
return await end({ id, output, reason }, context
|
|
90
|
+
return await end({ id, output, reason }, context)
|
|
93
91
|
}
|
|
94
92
|
|
|
95
93
|
@Directive('@transaction')
|
|
@@ -97,8 +95,8 @@ export class ActivityInstanceMutation {
|
|
|
97
95
|
async abortActivityInstance(
|
|
98
96
|
@Arg('id') id: string,
|
|
99
97
|
@Arg('reason', { nullable: true }) reason: string,
|
|
100
|
-
@Ctx() context:
|
|
98
|
+
@Ctx() context: ResolverContext
|
|
101
99
|
): Promise<ActivityInstance> {
|
|
102
|
-
return await abort({ id, reason }, context
|
|
100
|
+
return await abort({ id, reason }, context)
|
|
103
101
|
}
|
|
104
102
|
}
|
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
import { Arg, Args, Ctx, FieldResolver, Query, Resolver, Root } from 'type-graphql'
|
|
2
|
-
import { getRepository } from 'typeorm'
|
|
3
2
|
|
|
4
3
|
import { Attachment } from '@things-factory/attachment-base'
|
|
5
4
|
import { Role, User } from '@things-factory/auth-base'
|
|
6
|
-
import { Domain, getQueryBuilderFromListParams, ListParam } from '@things-factory/shell'
|
|
5
|
+
import { Domain, getQueryBuilderFromListParams, getRepository, ListParam } from '@things-factory/shell'
|
|
7
6
|
|
|
8
7
|
import { ActivityThread } from '../activity-thread/activity-thread'
|
|
9
8
|
import { Activity } from '../activity/activity'
|
|
@@ -13,16 +12,16 @@ import { ActivityInstanceList } from './activity-instance-type'
|
|
|
13
12
|
@Resolver(ActivityInstance)
|
|
14
13
|
export class ActivityInstanceQuery {
|
|
15
14
|
@Query(returns => ActivityInstance!, { nullable: true, description: 'To fetch a ActivityInstance' })
|
|
16
|
-
async activityInstance(@Arg('id') id: string, @Ctx() context:
|
|
15
|
+
async activityInstance(@Arg('id') id: string, @Ctx() context: ResolverContext): Promise<ActivityInstance> {
|
|
17
16
|
const { domain } = context.state
|
|
18
17
|
|
|
19
18
|
return await getRepository(ActivityInstance).findOne({
|
|
20
|
-
where: { domain, id }
|
|
19
|
+
where: { domain: { id: domain.id }, id }
|
|
21
20
|
})
|
|
22
21
|
}
|
|
23
22
|
|
|
24
23
|
@Query(returns => ActivityInstanceList, { description: 'To fetch multiple ActivityInstances' })
|
|
25
|
-
async activityInstances(@Args() params: ListParam, @Ctx() context:
|
|
24
|
+
async activityInstances(@Args() params: ListParam, @Ctx() context: ResolverContext): Promise<ActivityInstanceList> {
|
|
26
25
|
const { domain } = context.state
|
|
27
26
|
|
|
28
27
|
const [items, total] = await getQueryBuilderFromListParams({
|
|
@@ -36,7 +35,10 @@ export class ActivityInstanceQuery {
|
|
|
36
35
|
}
|
|
37
36
|
|
|
38
37
|
@Query(returns => ActivityInstanceList, { description: 'To get list of activity instance that a user can pick' })
|
|
39
|
-
async pickableActivityList(
|
|
38
|
+
async pickableActivityList(
|
|
39
|
+
@Args() params: ListParam,
|
|
40
|
+
@Ctx() context: ResolverContext
|
|
41
|
+
): Promise<ActivityInstanceList> {
|
|
40
42
|
var { domain, user } = context.state
|
|
41
43
|
|
|
42
44
|
/*
|
|
@@ -74,7 +76,7 @@ export class ActivityInstanceQuery {
|
|
|
74
76
|
}
|
|
75
77
|
|
|
76
78
|
@Query(returns => ActivityInstanceList, { description: 'To fetch my own ActivityInstances' })
|
|
77
|
-
async draftList(@Args() params: ListParam, @Ctx() context:
|
|
79
|
+
async draftList(@Args() params: ListParam, @Ctx() context: ResolverContext): Promise<ActivityInstanceList> {
|
|
78
80
|
var { domain, user } = context.state
|
|
79
81
|
|
|
80
82
|
/* 생성자가 자신이면서, 아직 Draft 상태인 activity-instance 리스트만 반환 */
|
|
@@ -102,32 +104,36 @@ export class ActivityInstanceQuery {
|
|
|
102
104
|
return null
|
|
103
105
|
}
|
|
104
106
|
|
|
105
|
-
return await getRepository(Activity).
|
|
107
|
+
return await getRepository(Activity).findOneBy({ id: activityId })
|
|
106
108
|
}
|
|
107
109
|
|
|
108
110
|
@FieldResolver(type => [ActivityThread])
|
|
109
|
-
async activityThreads(
|
|
111
|
+
async activityThreads(
|
|
112
|
+
@Root() activityInstance: ActivityInstance,
|
|
113
|
+
@Ctx() context: ResolverContext
|
|
114
|
+
): Promise<ActivityThread[]> {
|
|
110
115
|
const { user } = context.state
|
|
111
116
|
const { supervisoryRoleId } = activityInstance
|
|
112
117
|
|
|
113
118
|
if (supervisoryRoleId) {
|
|
114
119
|
/* only user having supervisoryRole can get whole activityThreads */
|
|
115
120
|
const roles = (
|
|
116
|
-
(await getRepository(User).findOne(
|
|
121
|
+
(await getRepository(User).findOne({
|
|
122
|
+
where: { id: user.id },
|
|
117
123
|
relations: ['roles']
|
|
118
124
|
})) as User
|
|
119
125
|
).roles.map(role => role.id)
|
|
120
126
|
|
|
121
127
|
if (!roles.includes(supervisoryRoleId)) {
|
|
122
|
-
return await getRepository(ActivityThread).
|
|
123
|
-
activityInstance,
|
|
124
|
-
|
|
128
|
+
return await getRepository(ActivityThread).findBy({
|
|
129
|
+
activityInstance: { id: activityInstance.id },
|
|
130
|
+
assignee: { id: user.id }
|
|
125
131
|
})
|
|
126
132
|
}
|
|
127
133
|
}
|
|
128
134
|
|
|
129
|
-
return await getRepository(ActivityThread).
|
|
130
|
-
activityInstance
|
|
135
|
+
return await getRepository(ActivityThread).findBy({
|
|
136
|
+
activityInstance: { id: activityInstance.id }
|
|
131
137
|
})
|
|
132
138
|
}
|
|
133
139
|
|
|
@@ -135,7 +141,7 @@ export class ActivityInstanceQuery {
|
|
|
135
141
|
async assigneeRole(@Root() activityInstance: ActivityInstance): Promise<Role> {
|
|
136
142
|
return (
|
|
137
143
|
activityInstance.assigneeRole ||
|
|
138
|
-
(await getRepository(Role).
|
|
144
|
+
(await getRepository(Role).findOneBy({
|
|
139
145
|
id: activityInstance.assigneeRoleId
|
|
140
146
|
}))
|
|
141
147
|
)
|
|
@@ -145,7 +151,7 @@ export class ActivityInstanceQuery {
|
|
|
145
151
|
async supervisoryRole(@Root() activityInstance: ActivityInstance): Promise<Role> {
|
|
146
152
|
return (
|
|
147
153
|
activityInstance.supervisoryRole ||
|
|
148
|
-
(await getRepository(Role).
|
|
154
|
+
(await getRepository(Role).findOneBy({
|
|
149
155
|
id: activityInstance.supervisoryRoleId
|
|
150
156
|
}))
|
|
151
157
|
)
|
|
@@ -158,7 +164,7 @@ export class ActivityInstanceQuery {
|
|
|
158
164
|
activityId &&
|
|
159
165
|
(await getRepository(Attachment).findOne({
|
|
160
166
|
where: {
|
|
161
|
-
domain: activityInstance.domainId,
|
|
167
|
+
domain: { id: activityInstance.domainId },
|
|
162
168
|
refBy: activityId
|
|
163
169
|
}
|
|
164
170
|
}))
|
|
@@ -168,16 +174,16 @@ export class ActivityInstanceQuery {
|
|
|
168
174
|
|
|
169
175
|
@FieldResolver(type => Domain)
|
|
170
176
|
async domain(@Root() activityInstance: ActivityInstance): Promise<Domain> {
|
|
171
|
-
return await getRepository(Domain).
|
|
177
|
+
return await getRepository(Domain).findOneBy({ id: activityInstance.domainId })
|
|
172
178
|
}
|
|
173
179
|
|
|
174
180
|
@FieldResolver(type => User)
|
|
175
181
|
async updater(@Root() activityInstance: ActivityInstance): Promise<User> {
|
|
176
|
-
return await getRepository(User).
|
|
182
|
+
return await getRepository(User).findOneBy({ id: activityInstance.updaterId })
|
|
177
183
|
}
|
|
178
184
|
|
|
179
185
|
@FieldResolver(type => User)
|
|
180
186
|
async creator(@Root() activityInstance: ActivityInstance): Promise<User> {
|
|
181
|
-
return await getRepository(User).
|
|
187
|
+
return await getRepository(User).findOneBy({ id: activityInstance.creatorId })
|
|
182
188
|
}
|
|
183
189
|
}
|
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
import { withFilter } from 'graphql-subscriptions'
|
|
2
2
|
import { Resolver, Root, Subscription } from 'type-graphql'
|
|
3
|
-
import { getRepository } from 'typeorm'
|
|
4
3
|
|
|
5
4
|
import { User } from '@things-factory/auth-base'
|
|
6
|
-
import { pubsub } from '@things-factory/shell'
|
|
5
|
+
import { getRepository, pubsub } from '@things-factory/shell'
|
|
7
6
|
|
|
8
7
|
import { ActivityInstance } from './activity-instance'
|
|
9
8
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Field, ID, InputType, Int, ObjectType } from 'type-graphql'
|
|
2
2
|
|
|
3
|
-
import { Role
|
|
3
|
+
import { Role } from '@things-factory/auth-base'
|
|
4
4
|
import { ObjectRef, ScalarDate, ScalarObject } from '@things-factory/shell'
|
|
5
5
|
|
|
6
6
|
import { ActivityType, ActivityUIType } from '../activity/activity'
|
|
@@ -12,7 +12,7 @@ export class NewActivityInstance {
|
|
|
12
12
|
name: string
|
|
13
13
|
|
|
14
14
|
@Field({ nullable: true })
|
|
15
|
-
activityId
|
|
15
|
+
activityId: string
|
|
16
16
|
|
|
17
17
|
@Field({ nullable: true })
|
|
18
18
|
description?: string
|
|
@@ -110,8 +110,8 @@ export class ActivityInstancePost {
|
|
|
110
110
|
@Field(type => ObjectRef, { nullable: true })
|
|
111
111
|
assigneeRole?: Role
|
|
112
112
|
|
|
113
|
-
@Field(type => [
|
|
114
|
-
assignees?:
|
|
113
|
+
@Field(type => [String], { nullable: true, description: 'Email of assignee users' })
|
|
114
|
+
assignees?: string[]
|
|
115
115
|
}
|
|
116
116
|
|
|
117
117
|
@InputType()
|
|
@@ -137,6 +137,12 @@ export class ActivityInstancePatch {
|
|
|
137
137
|
@Field({ nullable: true })
|
|
138
138
|
state?: ActivityInstanceStatus
|
|
139
139
|
|
|
140
|
+
@Field(type => Int, { nullable: true })
|
|
141
|
+
threadsMin?: number
|
|
142
|
+
|
|
143
|
+
@Field(type => Int, { nullable: true })
|
|
144
|
+
threadsMax?: number
|
|
145
|
+
|
|
140
146
|
@Field(type => ScalarDate, { nullable: true })
|
|
141
147
|
dueAt?: Date
|
|
142
148
|
|
|
@@ -9,10 +9,6 @@ import { ActivityInstanceHistory } from './activity-instance-history'
|
|
|
9
9
|
|
|
10
10
|
@EventSubscriber()
|
|
11
11
|
export class ActivityInstanceSubscriber implements EntitySubscriberInterface<ActivityInstance> {
|
|
12
|
-
// constructor(connection: Connection) {
|
|
13
|
-
// connection.subscribers.push(this)
|
|
14
|
-
// }
|
|
15
|
-
|
|
16
12
|
listenTo() {
|
|
17
13
|
return ActivityInstance
|
|
18
14
|
}
|
|
@@ -23,7 +19,6 @@ export class ActivityInstanceSubscriber implements EntitySubscriberInterface<Act
|
|
|
23
19
|
pubsub.publish('activity-instance', {
|
|
24
20
|
activityInstance
|
|
25
21
|
})
|
|
26
|
-
console.log('activity-instance created', activityInstance.id)
|
|
27
22
|
}
|
|
28
23
|
|
|
29
24
|
afterUpdate(event: UpdateEvent<ActivityInstance>): Promise<any> | void {
|
|
@@ -32,7 +27,6 @@ export class ActivityInstanceSubscriber implements EntitySubscriberInterface<Act
|
|
|
32
27
|
pubsub.publish('activity-instance', {
|
|
33
28
|
activityInstance
|
|
34
29
|
})
|
|
35
|
-
console.log('activity-instance updated', activityInstance.id)
|
|
36
30
|
}
|
|
37
31
|
}
|
|
38
32
|
|