@@ -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