Skip to content

Commit e1b681a

Browse files
committed
Merge branch 'develop'
2 parents 1d81777 + c7be0c0 commit e1b681a

File tree

1 file changed

+28
-1
lines changed

1 file changed

+28
-1
lines changed

src/services/ResourceService.js

Lines changed: 28 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -212,6 +212,14 @@ async function init (currentUser, challengeId, resource, isCreated) {
212212
const challengeRes = await helper.getRequest(`${config.CHALLENGE_API_URL}/${challengeId}`)
213213
const challenge = challengeRes.body
214214

215+
// Prevent from creating more than 1 submitter resources on tasks
216+
if (_.get(challenge, 'task.isTask', false) && isCreated && resource.roleId === config.SUBMITTER_RESOURCE_ROLE_ID) {
217+
const existing = await getResources(currentUser, challengeId, config.SUBMITTER_RESOURCE_ROLE_ID, 1, 1)
218+
if (existing.total > 0) {
219+
throw new errors.ConflictError(`The Task is already assigned`)
220+
}
221+
}
222+
215223
// logger.error(`Init Member for ${JSON.stringify(currentUser)}`)
216224
// get member information using v3 API
217225
const handle = resource.memberHandle
@@ -292,10 +300,20 @@ async function createResource (currentUser, resource) {
292300
const ret = await helper.create('Resource', _.assign({
293301
id: uuid(),
294302
memberId,
295-
created: moment().utc(),
303+
created: moment().utc().format(),
296304
createdBy: currentUser.handle || currentUser.sub
297305
}, resource))
298306

307+
// Create resources in ES
308+
const esClient = await helper.getESClient()
309+
await esClient.create({
310+
index: config.ES.ES_INDEX,
311+
type: config.ES.ES_TYPE,
312+
id: ret.id,
313+
body: _.pick(ret, payloadFields),
314+
refresh: 'true' // refresh ES so that it is visible for read operations instantly
315+
})
316+
299317
// console.log('Created resource:', ret)
300318

301319
await helper.postEvent(config.RESOURCE_CREATE_TOPIC, _.pick(ret, payloadFields))
@@ -340,6 +358,15 @@ async function deleteResource (currentUser, resource) {
340358

341359
await ret.delete()
342360

361+
// delete from ES
362+
const esClient = await helper.getESClient()
363+
await esClient.delete({
364+
index: config.ES.ES_INDEX,
365+
type: config.ES.ES_TYPE,
366+
id: ret.id,
367+
refresh: 'true' // refresh ES so that it is effective for read operations instantly
368+
})
369+
343370
await helper.postEvent(config.RESOURCE_DELETE_TOPIC, _.pick(ret, payloadFields))
344371
return ret
345372
} catch (err) {

0 commit comments

Comments
 (0)