@@ -242,7 +242,15 @@ async function init (currentUser, challengeId, resource, isCreated) {
242242
243243 const registrationPhase = challenge . phases . find ( ( phase ) => phase . name === 'Registration' )
244244 const currentSubmitters = _ . filter ( allResources , ( r ) => r . roleId === config . SUBMITTER_RESOURCE_ROLE_ID )
245- const handle = resource . memberHandle
245+ let handle = resource . memberHandle
246+ const resourceMemberId = resource . memberId
247+
248+ let memberInfoFromDb = await helper . getMemberDetailsById ( resourceMemberId )
249+ if ( ! memberInfoFromDb ) {
250+ memberInfoFromDb = await helper . getMemberDetailsByHandle ( handle )
251+ }
252+ const { memberId, email } = memberInfoFromDb
253+ handle = memberInfoFromDb . handle
246254 const userResources = allResources . filter ( ( r ) => _ . toLower ( r . memberHandle ) === _ . toLower ( handle ) )
247255 // Retrieve the constraint - Allowed Registrants
248256 if ( isCreated && resource . roleId === config . SUBMITTER_RESOURCE_ROLE_ID ) {
@@ -257,13 +265,13 @@ async function init (currentUser, challengeId, resource, isCreated) {
257265 )
258266 ) {
259267 throw new errors . ConflictError (
260- `User ${ resource . memberHandle } is not allowed to register.`
268+ `User ${ handle } is not allowed to register.`
261269 )
262270 }
263271 if ( ! _ . get ( challenge , 'task.isTask' , false ) && ( _ . toLower ( challenge . createdBy ) === _ . toLower ( handle ) ||
264272 _ . some ( userResources , r => r . roleId === config . REVIEWER_RESOURCE_ROLE_ID || r . roleId === config . ITERATIVE_REVIEWER_RESOURCE_ROLE_ID ) ) ) {
265273 throw new errors . BadRequestError (
266- `User ${ resource . memberHandle } is not allowed to register.`
274+ `User ${ handle } is not allowed to register.`
267275 )
268276 }
269277 }
@@ -278,14 +286,12 @@ async function init (currentUser, challengeId, resource, isCreated) {
278286 const currentUserResources = allResources . filter ( ( r ) => _ . toString ( r . memberId ) === _ . toString ( currentUser . userId ) )
279287 const isResourceExist = ! _ . isUndefined ( _ . find ( userResources , r => r . roleId === resource . roleId ) )
280288 if ( isCreated && isResourceExist ) {
281- throw new errors . ConflictError ( `User ${ resource . memberHandle } already has resource with roleId: ${ resource . roleId } in challenge: ${ challengeId } ` )
289+ throw new errors . ConflictError ( `User ${ handle } already has resource with roleId: ${ resource . roleId } in challenge: ${ challengeId } ` )
282290 }
283291
284292 if ( ! isCreated && ! isResourceExist ) {
285293 throw new errors . NotFoundError ( `User ${ handle } doesn't have resource with roleId: ${ resource . roleId } in challenge ${ challengeId } ` )
286294 }
287-
288- const { memberId, email } = await helper . getMemberDetailsByHandle ( handle )
289295 // check if the resource is reviewer role and has already made a submission in the challenge
290296 if ( isCreated && ( resource . roleId === config . REVIEWER_RESOURCE_ROLE_ID || resource . roleId === config . ITERATIVE_REVIEWER_RESOURCE_ROLE_ID ) ) {
291297 const submissionsRes = await helper . getRequest ( `${ config . SUBMISSIONS_API_URL } ` , { challengeId : challengeId , perPage : 100 , memberId : memberId } )
@@ -376,8 +382,9 @@ async function createResource (currentUser, resource) {
376382 const prismaData = _ . assign ( {
377383 id : uuid ( ) ,
378384 memberId : _ . toString ( memberId ) ,
379- createdBy : helper . getUserHandleOrSub ( currentUser ) ,
380- createdAt : moment ( ) . utc ( ) . format ( )
385+ createdBy : _ . toString ( memberId ) ,
386+ createdAt : moment ( ) . utc ( ) . format ( ) ,
387+ memberHandle : handle
381388 } , resource )
382389 const createdResource = await prisma . resource . create ( {
383390 data : prismaData
@@ -436,11 +443,20 @@ async function createResource (currentUser, resource) {
436443
437444createResource . schema = {
438445 currentUser : Joi . any ( ) ,
439- resource : Joi . object ( ) . keys ( {
440- challengeId : Joi . id ( ) ,
441- memberHandle : Joi . string ( ) . required ( ) ,
442- roleId : Joi . id ( )
443- } ) . required ( )
446+ resource : Joi . alternatives ( ) . try (
447+ Joi . object ( ) . keys ( {
448+ challengeId : Joi . id ( ) ,
449+ memberId : Joi . string ( ) ,
450+ memberHandle : Joi . string ( ) . required ( ) ,
451+ roleId : Joi . id ( )
452+ } ) ,
453+ Joi . object ( ) . keys ( {
454+ challengeId : Joi . id ( ) ,
455+ memberId : Joi . string ( ) . required ( ) ,
456+ memberHandle : Joi . string ( ) ,
457+ roleId : Joi . id ( )
458+ } )
459+ )
444460}
445461
446462/**
@@ -483,11 +499,20 @@ async function deleteResource (currentUser, resource) {
483499
484500deleteResource . schema = {
485501 currentUser : Joi . any ( ) ,
486- resource : Joi . object ( ) . keys ( {
487- challengeId : Joi . id ( ) ,
488- memberHandle : Joi . string ( ) . required ( ) ,
489- roleId : Joi . id ( )
490- } ) . required ( )
502+ resource : Joi . alternatives ( ) . try (
503+ Joi . object ( ) . keys ( {
504+ challengeId : Joi . id ( ) ,
505+ memberId : Joi . string ( ) ,
506+ memberHandle : Joi . string ( ) . required ( ) ,
507+ roleId : Joi . id ( )
508+ } ) ,
509+ Joi . object ( ) . keys ( {
510+ challengeId : Joi . id ( ) ,
511+ memberId : Joi . string ( ) . required ( ) ,
512+ memberHandle : Joi . string ( ) ,
513+ roleId : Joi . id ( )
514+ } )
515+ )
491516}
492517
493518/**
0 commit comments