@@ -212,6 +212,14 @@ async function init (currentUser, challengeId, resource, isCreated) {
212
212
const challengeRes = await helper . getRequest ( `${ config . CHALLENGE_API_URL } /${ challengeId } ` )
213
213
const challenge = challengeRes . body
214
214
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
+
215
223
// logger.error(`Init Member for ${JSON.stringify(currentUser)}`)
216
224
// get member information using v3 API
217
225
const handle = resource . memberHandle
@@ -292,10 +300,20 @@ async function createResource (currentUser, resource) {
292
300
const ret = await helper . create ( 'Resource' , _ . assign ( {
293
301
id : uuid ( ) ,
294
302
memberId,
295
- created : moment ( ) . utc ( ) ,
303
+ created : moment ( ) . utc ( ) . format ( ) ,
296
304
createdBy : currentUser . handle || currentUser . sub
297
305
} , resource ) )
298
306
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
+
299
317
// console.log('Created resource:', ret)
300
318
301
319
await helper . postEvent ( config . RESOURCE_CREATE_TOPIC , _ . pick ( ret , payloadFields ) )
@@ -340,6 +358,15 @@ async function deleteResource (currentUser, resource) {
340
358
341
359
await ret . delete ( )
342
360
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
+
343
370
await helper . postEvent ( config . RESOURCE_DELETE_TOPIC , _ . pick ( ret , payloadFields ) )
344
371
return ret
345
372
} catch ( err ) {
0 commit comments