@things-factory/dataset 8.0.0-alpha.3 → 8.0.0-alpha.30
Sign up to get free protection for your applications and to get access to all the features.
- package/client/activities/activity-data-collect-edit.ts +3 -1
- package/client/activities/activity-ooc-resolve-edit.ts +5 -3
- package/client/activities/activity-ooc-review-edit.ts +5 -3
- package/client/bootstrap.ts +11 -1
- package/client/components/data-entry-form.ts +3 -3
- package/client/pages/data-entry/data-entry-list-page.ts +72 -12
- package/client/pages/data-report/data-report-list-page.ts +9 -2
- package/client/pages/data-sensor/data-sensor-list-page.ts +1 -1
- package/client/pages/data-set/data-item-list.ts +1 -1
- package/client/pages/data-set/data-set-list-page.ts +29 -17
- package/dist-client/activities/activity-data-collect-edit.d.ts +1 -1
- package/dist-client/activities/activity-data-collect-edit.js +2 -1
- package/dist-client/activities/activity-data-collect-edit.js.map +1 -1
- package/dist-client/activities/activity-ooc-resolve-edit.js +5 -3
- package/dist-client/activities/activity-ooc-resolve-edit.js.map +1 -1
- package/dist-client/activities/activity-ooc-review-edit.js +5 -3
- package/dist-client/activities/activity-ooc-review-edit.js.map +1 -1
- package/dist-client/bootstrap.js +4 -0
- package/dist-client/bootstrap.js.map +1 -1
- package/dist-client/components/data-entry-form.js +3 -3
- package/dist-client/components/data-entry-form.js.map +1 -1
- package/dist-client/pages/data-entry/data-entry-list-page.js +68 -10
- package/dist-client/pages/data-entry/data-entry-list-page.js.map +1 -1
- package/dist-client/pages/data-ooc/data-ooc-view.d.ts +1 -1
- package/dist-client/pages/data-report/data-report-list-page.js +8 -2
- package/dist-client/pages/data-report/data-report-list-page.js.map +1 -1
- package/dist-client/pages/data-sample/data-sample-view.d.ts +1 -1
- package/dist-client/pages/data-sensor/data-sensor-list-page.js +1 -1
- package/dist-client/pages/data-sensor/data-sensor-list-page.js.map +1 -1
- package/dist-client/pages/data-set/data-item-list.js +1 -1
- package/dist-client/pages/data-set/data-item-list.js.map +1 -1
- package/dist-client/pages/data-set/data-set-list-page.js +29 -17
- package/dist-client/pages/data-set/data-set-list-page.js.map +1 -1
- package/dist-client/tsconfig.tsbuildinfo +1 -1
- package/dist-server/activities/activity-data-collect.js.map +1 -1
- package/dist-server/activities/activity-ooc-review.js +12 -4
- package/dist-server/activities/activity-ooc-review.js.map +1 -1
- package/dist-server/controllers/create-data-sample.js +16 -10
- package/dist-server/controllers/create-data-sample.js.map +1 -1
- package/dist-server/controllers/issue-data-collection-task.d.ts +2 -0
- package/dist-server/controllers/{issue-collect-data.js → issue-data-collection-task.js} +13 -9
- package/dist-server/controllers/issue-data-collection-task.js.map +1 -0
- package/dist-server/engine/task/issue-collect-data.js +2 -2
- package/dist-server/engine/task/issue-collect-data.js.map +1 -1
- package/dist-server/routes.js +5 -3
- package/dist-server/routes.js.map +1 -1
- package/dist-server/service/data-ooc/data-ooc.js +12 -3
- package/dist-server/service/data-ooc/data-ooc.js.map +1 -1
- package/dist-server/service/data-sample/data-sample.js +4 -1
- package/dist-server/service/data-sample/data-sample.js.map +1 -1
- package/dist-server/service/data-set/data-set-mutation.d.ts +1 -0
- package/dist-server/service/data-set/data-set-mutation.js +48 -45
- package/dist-server/service/data-set/data-set-mutation.js.map +1 -1
- package/dist-server/service/data-set/data-set-query.d.ts +3 -0
- package/dist-server/service/data-set/data-set-query.js +104 -29
- package/dist-server/service/data-set/data-set-query.js.map +1 -1
- package/dist-server/service/data-set/data-set-type.d.ts +2 -3
- package/dist-server/service/data-set/data-set-type.js +6 -6
- package/dist-server/service/data-set/data-set-type.js.map +1 -1
- package/dist-server/service/data-set/data-set.d.ts +2 -0
- package/dist-server/service/data-set/data-set.js +12 -0
- package/dist-server/service/data-set/data-set.js.map +1 -1
- package/dist-server/service/data-set-history/data-set-history.js +7 -2
- package/dist-server/service/data-set-history/data-set-history.js.map +1 -1
- package/dist-server/service/index.d.ts +1 -1
- package/dist-server/tsconfig.tsbuildinfo +1 -1
- package/helps/dataset/data-set.ja.md +55 -59
- package/helps/dataset/data-set.ko.md +9 -11
- package/helps/dataset/data-set.md +20 -24
- package/helps/dataset/data-set.zh.md +3 -11
- package/helps/dataset/task/issue-collect-data.ja.md +1 -1
- package/helps/dataset/task/issue-collect-data.ko.md +1 -1
- package/helps/dataset/task/issue-collect-data.md +1 -1
- package/helps/dataset/task/issue-collect-data.ms.md +1 -1
- package/helps/dataset/task/issue-collect-data.zh.md +1 -1
- package/package.json +13 -13
- package/server/activities/activity-data-collect.ts +11 -2
- package/server/activities/activity-ooc-review.ts +28 -7
- package/server/controllers/create-data-sample.ts +16 -10
- package/server/controllers/{issue-collect-data.ts → issue-data-collection-task.ts} +13 -7
- package/server/engine/task/issue-collect-data.ts +2 -2
- package/server/routes.ts +5 -3
- package/server/service/data-ooc/data-ooc.ts +12 -3
- package/server/service/data-sample/data-sample.ts +4 -1
- package/server/service/data-set/data-set-mutation.ts +44 -49
- package/server/service/data-set/data-set-query.ts +98 -30
- package/server/service/data-set/data-set-type.ts +4 -4
- package/server/service/data-set/data-set.ts +10 -0
- package/server/service/data-set-history/data-set-history.ts +8 -2
- package/translations/en.json +2 -0
- package/translations/ja.json +2 -0
- package/translations/ko.json +2 -0
- package/translations/ms.json +2 -0
- package/translations/zh.json +2 -0
- package/dist-server/controllers/issue-collect-data.d.ts +0 -2
- package/dist-server/controllers/issue-collect-data.js.map +0 -1
@@ -260,17 +260,19 @@ export async function createDataSample(newDataSample: NewDataSample, context: Re
|
|
260
260
|
})) as Activity
|
261
261
|
|
262
262
|
if (activity) {
|
263
|
-
const
|
263
|
+
const assigneeRole =
|
264
264
|
dataSet.supervisoryRoleId &&
|
265
265
|
(await tx.getRepository(Role).findOneBy({
|
266
266
|
domain: { id: In([domain.id, domain.parentId].filter(Boolean)) },
|
267
267
|
id: dataSet.supervisoryRoleId
|
268
268
|
}))
|
269
269
|
|
270
|
-
const assignees = dataSet.supervisoryRoleId
|
270
|
+
// const assignees = dataSet.supervisoryRoleId
|
271
|
+
// ? [{ type: 'Role', value: dataSet.supervisoryRoleId, assigneeRole }]
|
272
|
+
// : []
|
271
273
|
|
272
274
|
/* 해당 dataset의 supervisor로 하여금, OOC를 리뷰하고 instruction을 작성해서, OOC 해결을 위한 태스크를 dataset assignees에게 지시하도록 한다. */
|
273
|
-
if (
|
275
|
+
if (assigneeRole) {
|
274
276
|
const activityInstance = {
|
275
277
|
name: `[OOC 검토] ${dataSet.name}`,
|
276
278
|
description: dataSet.description,
|
@@ -279,7 +281,9 @@ export async function createDataSample(newDataSample: NewDataSample, context: Re
|
|
279
281
|
input: {
|
280
282
|
dataOocId: dataOoc.id
|
281
283
|
},
|
282
|
-
|
284
|
+
assigneeRole,
|
285
|
+
threadsMin: 1,
|
286
|
+
threadsMax: 1,
|
283
287
|
approvalLine: []
|
284
288
|
}
|
285
289
|
|
@@ -362,19 +366,19 @@ export async function createDataSample(newDataSample: NewDataSample, context: Re
|
|
362
366
|
})) as Activity
|
363
367
|
|
364
368
|
if (activity) {
|
365
|
-
const
|
369
|
+
const assigneeRole =
|
366
370
|
dataSet.supervisoryRoleId &&
|
367
371
|
(await tx.getRepository(Role).findOneBy({
|
368
372
|
domain: { id: In([domain.id, domain.parentId].filter(Boolean)) },
|
369
373
|
id: dataSet.supervisoryRoleId
|
370
374
|
}))
|
371
375
|
|
372
|
-
const assignees = dataSet.supervisoryRoleId
|
373
|
-
|
374
|
-
|
376
|
+
// const assignees = dataSet.supervisoryRoleId
|
377
|
+
// ? [{ type: 'Role', value: dataSet.supervisoryRoleId, assigneeRole }]
|
378
|
+
// : []
|
375
379
|
|
376
380
|
/* 해당 dataset의 supervisor로 하여금, data를 리뷰하고 instruction을 작성해서, approvalLine을 이용해서 승인을 한다. */
|
377
|
-
if (
|
381
|
+
if (assigneeRole) {
|
378
382
|
dataSample.dataItems = dataItems
|
379
383
|
const activityInstance = {
|
380
384
|
name: `[Data 검토] ${dataSet.name}`,
|
@@ -384,7 +388,9 @@ export async function createDataSample(newDataSample: NewDataSample, context: Re
|
|
384
388
|
input: {
|
385
389
|
dataSampleId: dataSample.id
|
386
390
|
},
|
387
|
-
|
391
|
+
assigneeRole,
|
392
|
+
threadsMin: 1,
|
393
|
+
threadsMax: 1,
|
388
394
|
approvalLine: dataSet.reviewApprovalLine
|
389
395
|
}
|
390
396
|
|
@@ -4,8 +4,9 @@ import { Domain, getDataSource } from '@things-factory/shell'
|
|
4
4
|
import { Activity, ActivityInstance, issue } from '@things-factory/worklist'
|
5
5
|
|
6
6
|
import { DataSet } from '../service/data-set/data-set'
|
7
|
+
import { OrgMemberTargetType } from '@things-factory/organization'
|
7
8
|
|
8
|
-
export async function
|
9
|
+
export async function issueDataCollectionTask(
|
9
10
|
domainId: string,
|
10
11
|
dataSetId: string,
|
11
12
|
context: ResolverContext
|
@@ -23,7 +24,8 @@ export async function issueCollectData(
|
|
23
24
|
id: In([domain.id, domain.parentId].filter(Boolean))
|
24
25
|
},
|
25
26
|
id: dataSetId
|
26
|
-
}
|
27
|
+
},
|
28
|
+
relations: ['entryRole']
|
27
29
|
})
|
28
30
|
|
29
31
|
const activity = (await tx.getRepository(Activity).findOneBy({
|
@@ -32,10 +34,12 @@ export async function issueCollectData(
|
|
32
34
|
})) as Activity
|
33
35
|
|
34
36
|
if (activity) {
|
35
|
-
const {
|
37
|
+
const { entryRole } = dataSet
|
38
|
+
|
39
|
+
// const assignees = entryRole ? [{ type: OrgMemberTargetType.Role, value: entryRole.id, assignee: entryRole }] : []
|
36
40
|
|
37
|
-
/* 해당 dataset에 대한 데이타 수집 태스크를 dataset
|
38
|
-
if (
|
41
|
+
/* 해당 dataset에 대한 데이타 수집 태스크를 dataset entryRole에게 할당한다. */
|
42
|
+
if (entryRole) {
|
39
43
|
const activityInstance = {
|
40
44
|
name: `[Data 수집] ${dataSet.name}`,
|
41
45
|
description: dataSet.description,
|
@@ -45,7 +49,9 @@ export async function issueCollectData(
|
|
45
49
|
dataSetId: dataSet.id,
|
46
50
|
dataSetName: dataSet.name
|
47
51
|
},
|
48
|
-
|
52
|
+
assigneeRole: entryRole,
|
53
|
+
threadsMin: 1,
|
54
|
+
threadsMax: 1
|
49
55
|
}
|
50
56
|
|
51
57
|
context.state = {
|
@@ -57,7 +63,7 @@ export async function issueCollectData(
|
|
57
63
|
return await issue(activityInstance, context)
|
58
64
|
} else {
|
59
65
|
throw new Error(
|
60
|
-
`
|
66
|
+
`Data Entry Role not set. So Data Collect Activity for ${dataSet.name}($dataSet.id) could not be issued.`
|
61
67
|
)
|
62
68
|
}
|
63
69
|
} else {
|
@@ -1,5 +1,5 @@
|
|
1
1
|
import { TaskRegistry, InputStep, Context } from '@things-factory/integration-base'
|
2
|
-
import {
|
2
|
+
import { issueDataCollectionTask } from '../../controllers/issue-data-collection-task'
|
3
3
|
import i18next from 'i18next'
|
4
4
|
|
5
5
|
async function IssueCollectData(step: InputStep, context: Context) {
|
@@ -12,7 +12,7 @@ async function IssueCollectData(step: InputStep, context: Context) {
|
|
12
12
|
throw new Error(`no dataset found`)
|
13
13
|
}
|
14
14
|
|
15
|
-
const activityInstance = await
|
15
|
+
const activityInstance = await issueDataCollectionTask(domain.id, dataSetId, {
|
16
16
|
t: i18next.t,
|
17
17
|
state: {
|
18
18
|
domain,
|
package/server/routes.ts
CHANGED
@@ -8,7 +8,7 @@ import { ScheduleRegisterRequest } from '@things-factory/scheduler-client'
|
|
8
8
|
import { createDataSample } from './controllers/create-data-sample'
|
9
9
|
import { renderJasperReport } from './controllers/jasper-report'
|
10
10
|
import { renderShinyReport } from './controllers/shiny-report'
|
11
|
-
import {
|
11
|
+
import { issueDataCollectionTask } from './controllers/issue-data-collection-task'
|
12
12
|
import { DataSensor } from './service/data-sensor/data-sensor'
|
13
13
|
import { DataSet } from './service/data-set/data-set'
|
14
14
|
|
@@ -120,7 +120,7 @@ process.on('bootstrap-module-global-public-route' as any, (app, globalPublicRout
|
|
120
120
|
throw new Error(`group(${domainId}) and key(${dataSetId}) properties should not be empty`)
|
121
121
|
}
|
122
122
|
|
123
|
-
await
|
123
|
+
await issueDataCollectionTask(domainId, dataSetId, context)
|
124
124
|
|
125
125
|
context.status = 200
|
126
126
|
})
|
@@ -146,7 +146,9 @@ process.on('bootstrap-module-global-public-route' as any, (app, globalPublicRout
|
|
146
146
|
throw new Error(`domain(${domainId}) not found`)
|
147
147
|
}
|
148
148
|
|
149
|
-
const dataSet = await tx
|
149
|
+
const dataSet = await tx
|
150
|
+
.getRepository(DataSet)
|
151
|
+
.findOne({ where: { domain: { id: In([domain.id, domain.parentId].filter(Boolean)) }, id: dataSetId } })
|
150
152
|
|
151
153
|
// do what you gotta do
|
152
154
|
})
|
@@ -88,7 +88,10 @@ export class DataOoc {
|
|
88
88
|
? 'longtext'
|
89
89
|
: DATABASE_TYPE == 'oracle'
|
90
90
|
? 'clob'
|
91
|
-
: '
|
91
|
+
: DATABASE_TYPE == 'mssql'
|
92
|
+
? 'nvarchar'
|
93
|
+
: 'varchar',
|
94
|
+
length: DATABASE_TYPE == 'mssql' ? 'MAX' : undefined
|
92
95
|
})
|
93
96
|
@Field({ nullable: true })
|
94
97
|
correctiveInstruction?: string
|
@@ -100,7 +103,10 @@ export class DataOoc {
|
|
100
103
|
? 'longtext'
|
101
104
|
: DATABASE_TYPE == 'oracle'
|
102
105
|
? 'clob'
|
103
|
-
: '
|
106
|
+
: DATABASE_TYPE == 'mssql'
|
107
|
+
? 'nvarchar'
|
108
|
+
: 'varchar',
|
109
|
+
length: DATABASE_TYPE == 'mssql' ? 'MAX' : undefined
|
104
110
|
})
|
105
111
|
@Field({ nullable: true })
|
106
112
|
correctiveAction?: string
|
@@ -159,7 +165,10 @@ export class DataOoc {
|
|
159
165
|
? 'longtext'
|
160
166
|
: DATABASE_TYPE == 'oracle'
|
161
167
|
? 'clob'
|
162
|
-
: '
|
168
|
+
: DATABASE_TYPE == 'mssql'
|
169
|
+
? 'nvarchar'
|
170
|
+
: 'varchar',
|
171
|
+
length: DATABASE_TYPE == 'mssql' ? 'MAX' : undefined
|
163
172
|
})
|
164
173
|
@Field({ nullable: true })
|
165
174
|
rawData?: string
|
@@ -104,7 +104,10 @@ export class DataSample {
|
|
104
104
|
? 'longtext'
|
105
105
|
: DATABASE_TYPE == 'oracle'
|
106
106
|
? 'clob'
|
107
|
-
: '
|
107
|
+
: DATABASE_TYPE == 'mssql'
|
108
|
+
? 'nvarchar'
|
109
|
+
: 'varchar',
|
110
|
+
length: DATABASE_TYPE == 'mssql' ? 'MAX' : undefined,
|
108
111
|
transformer: json5Transformer
|
109
112
|
})
|
110
113
|
@Field({ nullable: true })
|
@@ -1,14 +1,16 @@
|
|
1
1
|
import { Arg, Ctx, Directive, Mutation, Resolver } from 'type-graphql'
|
2
2
|
import { In } from 'typeorm'
|
3
3
|
|
4
|
+
import { getRepository } from '@things-factory/shell'
|
5
|
+
import { User } from '@things-factory/auth-base'
|
4
6
|
import { createAttachment, deleteAttachmentsByRef } from '@things-factory/attachment-base'
|
5
7
|
import { ApprovalLineItem, OrgMemberTargetType } from '@things-factory/organization'
|
6
8
|
import { Application, CallbackBase, registerSchedule, unregisterSchedule } from '@things-factory/scheduler-client'
|
7
|
-
import { AssigneeItem } from '@things-factory/worklist'
|
8
9
|
|
9
10
|
import { getDataFinalizeCrontabSchedule } from '../../controllers/finalize-data-collection'
|
10
11
|
import { DataSet } from './data-set'
|
11
12
|
import { DataSetPatch, NewDataSet } from './data-set-type'
|
13
|
+
import { issueDataCollectionTask } from '../../controllers/issue-data-collection-task'
|
12
14
|
|
13
15
|
const crypto = require('crypto')
|
14
16
|
|
@@ -78,39 +80,6 @@ function getOutlierApprovalLineValue(patch: NewDataSet | DataSetPatch): Approval
|
|
78
80
|
})
|
79
81
|
}
|
80
82
|
|
81
|
-
function getAssigneesValue(patch: NewDataSet | DataSetPatch): AssigneeItem[] {
|
82
|
-
const { assignees } = patch
|
83
|
-
|
84
|
-
if (!('assignees' in patch)) {
|
85
|
-
/* assignees이 언급되지 않았다면, 업데이트하지 않는다. */
|
86
|
-
return
|
87
|
-
}
|
88
|
-
|
89
|
-
if (!assignees || !(assignees instanceof Array)) {
|
90
|
-
/* assignees의 값이 없거나 배열이 아니라면, 클리어시킨다. */
|
91
|
-
return null
|
92
|
-
}
|
93
|
-
|
94
|
-
return assignees
|
95
|
-
.map(m => {
|
96
|
-
return {
|
97
|
-
type: m.type,
|
98
|
-
assignee: m.assignee
|
99
|
-
}
|
100
|
-
})
|
101
|
-
.filter(m => m.type)
|
102
|
-
.filter(m => {
|
103
|
-
switch (m.type) {
|
104
|
-
case OrgMemberTargetType.Employee:
|
105
|
-
case OrgMemberTargetType.Department:
|
106
|
-
case OrgMemberTargetType.Role:
|
107
|
-
return !!m.assignee?.id
|
108
|
-
default:
|
109
|
-
return true
|
110
|
-
}
|
111
|
-
})
|
112
|
-
}
|
113
|
-
|
114
83
|
@Resolver(DataSet)
|
115
84
|
export class DataSetMutation {
|
116
85
|
@Directive('@privilege(category: "data-set", privilege: "mutation", domainOwnerGranted: true)')
|
@@ -118,12 +87,11 @@ export class DataSetMutation {
|
|
118
87
|
@Mutation(returns => DataSet, { description: 'To create new DataSet' })
|
119
88
|
async createDataSet(@Arg('dataSet') dataSet: NewDataSet, @Ctx() context: ResolverContext): Promise<DataSet> {
|
120
89
|
const { domain, user, tx } = context.state
|
121
|
-
const dataSetRepo =
|
90
|
+
const dataSetRepo = getRepository(DataSet, tx)
|
122
91
|
|
123
92
|
const result = await dataSetRepo.save({
|
124
93
|
...dataSet,
|
125
94
|
approvalLine: getApprovalLineValue(dataSet),
|
126
|
-
assignees: getAssigneesValue(dataSet),
|
127
95
|
outlierApprovalLineValue: getOutlierApprovalLineValue(dataSet),
|
128
96
|
version: 1,
|
129
97
|
domain,
|
@@ -145,7 +113,7 @@ export class DataSetMutation {
|
|
145
113
|
@Ctx() context: ResolverContext
|
146
114
|
): Promise<DataSet> {
|
147
115
|
const { domain, user, tx } = context.state
|
148
|
-
const dataSetRepo =
|
116
|
+
const dataSetRepo = getRepository(DataSet, tx)
|
149
117
|
|
150
118
|
const dataSet = await dataSetRepo.findOne({
|
151
119
|
where: { domain: { id: domain.id }, id },
|
@@ -158,7 +126,6 @@ export class DataSetMutation {
|
|
158
126
|
...patch,
|
159
127
|
approvalLine: getApprovalLineValue(patch),
|
160
128
|
outlierApprovalLineValue: getOutlierApprovalLineValue(patch),
|
161
|
-
assignees: getAssigneesValue(patch),
|
162
129
|
updater: user
|
163
130
|
})
|
164
131
|
|
@@ -175,7 +142,7 @@ export class DataSetMutation {
|
|
175
142
|
@Ctx() context: ResolverContext
|
176
143
|
): Promise<DataSet[]> {
|
177
144
|
const { domain, user, tx } = context.state
|
178
|
-
const dataSetRepo =
|
145
|
+
const dataSetRepo = getRepository(DataSet, tx)
|
179
146
|
|
180
147
|
let results = []
|
181
148
|
const _createRecords = patches.filter((patch: any) => patch.cuFlag.toUpperCase() === '+')
|
@@ -189,7 +156,6 @@ export class DataSetMutation {
|
|
189
156
|
const result = await dataSetRepo.save({
|
190
157
|
...newRecord,
|
191
158
|
approvalLine: getApprovalLineValue(newRecord),
|
192
|
-
assignees: getAssigneesValue(newRecord),
|
193
159
|
outlierApprovalLineValue: getOutlierApprovalLineValue(newRecord),
|
194
160
|
domain,
|
195
161
|
creator: user,
|
@@ -220,7 +186,6 @@ export class DataSetMutation {
|
|
220
186
|
...updateRecord,
|
221
187
|
approvalLine: getApprovalLineValue(updateRecord),
|
222
188
|
outlierApprovalLineValue: getOutlierApprovalLineValue(updateRecord),
|
223
|
-
assignees: getAssigneesValue(updateRecord),
|
224
189
|
updater: user
|
225
190
|
})
|
226
191
|
|
@@ -242,7 +207,7 @@ export class DataSetMutation {
|
|
242
207
|
async deleteDataSet(@Arg('id') id: string, @Ctx() context: ResolverContext): Promise<boolean> {
|
243
208
|
const { domain, tx } = context.state
|
244
209
|
|
245
|
-
await
|
210
|
+
await getRepository(DataSet, tx).delete({ domain: { id: domain.id }, id })
|
246
211
|
await deleteAttachmentsByRef(null, { refBys: [`report-${id}`] }, context)
|
247
212
|
|
248
213
|
return true
|
@@ -254,7 +219,7 @@ export class DataSetMutation {
|
|
254
219
|
async deleteDataSets(@Arg('ids', type => [String]) ids: string[], @Ctx() context: ResolverContext): Promise<boolean> {
|
255
220
|
const { domain, tx } = context.state
|
256
221
|
|
257
|
-
await
|
222
|
+
await getRepository(DataSet, tx).delete({
|
258
223
|
domain: { id: domain.id },
|
259
224
|
id: In(ids)
|
260
225
|
})
|
@@ -264,6 +229,36 @@ export class DataSetMutation {
|
|
264
229
|
return true
|
265
230
|
}
|
266
231
|
|
232
|
+
@Directive('@transaction')
|
233
|
+
@Mutation(returns => Boolean, { description: 'To issue data-collection task for the given dataset' })
|
234
|
+
async issueDataCollection(@Arg('dataSetId') dataSetId: string, @Ctx() context: ResolverContext): Promise<boolean> {
|
235
|
+
const { domain, tx, user } = context.state
|
236
|
+
|
237
|
+
const dataSet = await getRepository(DataSet, tx).findOne({
|
238
|
+
where: {
|
239
|
+
domain: {
|
240
|
+
id: In([domain.id, domain.parentId].filter(Boolean))
|
241
|
+
},
|
242
|
+
id: dataSetId
|
243
|
+
}
|
244
|
+
})
|
245
|
+
|
246
|
+
const { supervisoryRoleId } = dataSet
|
247
|
+
|
248
|
+
const me = await getRepository(User, tx).findOne({
|
249
|
+
where: { id: user.id },
|
250
|
+
relations: ['roles']
|
251
|
+
})
|
252
|
+
|
253
|
+
if (!me.roles.find(role => role.id == supervisoryRoleId)) {
|
254
|
+
throw new Error(`You don't have permission to issue data collection task for this dataset.`)
|
255
|
+
}
|
256
|
+
|
257
|
+
const activityInstance = await issueDataCollectionTask(domain.id, dataSet.id, context)
|
258
|
+
|
259
|
+
return !!activityInstance
|
260
|
+
}
|
261
|
+
|
267
262
|
@Directive('@transaction')
|
268
263
|
@Mutation(returns => DataSet, { description: 'To start data collection schedule for the given dataset' })
|
269
264
|
async startDataCollectionSchedule(
|
@@ -272,7 +267,7 @@ export class DataSetMutation {
|
|
272
267
|
): Promise<DataSet> {
|
273
268
|
const { domain, tx } = context.state
|
274
269
|
|
275
|
-
var repository =
|
270
|
+
var repository = getRepository(DataSet, tx)
|
276
271
|
var dataSet = await repository.findOne({
|
277
272
|
where: { domain: { id: domain.id }, id: dataSetId }
|
278
273
|
})
|
@@ -338,7 +333,7 @@ export class DataSetMutation {
|
|
338
333
|
): Promise<DataSet | undefined> {
|
339
334
|
const { domain, tx } = context.state
|
340
335
|
|
341
|
-
var repository =
|
336
|
+
var repository = getRepository(DataSet, tx)
|
342
337
|
var dataSet = await repository.findOne({
|
343
338
|
where: { domain: { id: domain.id }, id: dataSetId }
|
344
339
|
})
|
@@ -371,7 +366,7 @@ export class DataSetMutation {
|
|
371
366
|
): Promise<DataSet> {
|
372
367
|
const { domain, tx } = context.state
|
373
368
|
|
374
|
-
var repository =
|
369
|
+
var repository = getRepository(DataSet, tx)
|
375
370
|
var dataSet = await repository.findOne({
|
376
371
|
where: { domain: { id: domain.id }, id: dataSetId }
|
377
372
|
})
|
@@ -448,7 +443,7 @@ export class DataSetMutation {
|
|
448
443
|
): Promise<DataSet | undefined> {
|
449
444
|
const { domain, tx } = context.state
|
450
445
|
|
451
|
-
var repository =
|
446
|
+
var repository = getRepository(DataSet, tx)
|
452
447
|
var dataSet = await repository.findOne({
|
453
448
|
where: { domain: { id: domain.id }, id: dataSetId }
|
454
449
|
})
|
@@ -482,7 +477,7 @@ export class DataSetMutation {
|
|
482
477
|
@Ctx() context: ResolverContext
|
483
478
|
): Promise<boolean> {
|
484
479
|
const { domain, tx } = context.state
|
485
|
-
const dataSetRepo =
|
480
|
+
const dataSetRepo = getRepository(DataSet, tx)
|
486
481
|
|
487
482
|
await Promise.all(
|
488
483
|
dataSets.map(async (dataSet: DataSet) => {
|
@@ -501,7 +496,7 @@ export class DataSetMutation {
|
|
501
496
|
@Mutation(returns => [DataSet], { description: 'To copy multiple data-sets' })
|
502
497
|
async copyDataSets(@Arg('ids', type => [String]) ids: string[], @Ctx() context: ResolverContext): Promise<DataSet[]> {
|
503
498
|
const { domain, user, tx } = context.state
|
504
|
-
const dataSetRepo =
|
499
|
+
const dataSetRepo = getRepository(DataSet, tx)
|
505
500
|
|
506
501
|
const originals = await dataSetRepo.find({
|
507
502
|
where: {
|