Skip to content

Commit ef97030

Browse files
authored
Merge pull request #52 from topcoder-platform/lock-deletion
lock deletion of resources after the challenge is completed
2 parents a243cb6 + 39c5471 commit ef97030

File tree

2 files changed

+11
-1
lines changed

2 files changed

+11
-1
lines changed

app-constants.js

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,11 @@ const UserRoles = {
99
User: 'Topcoder User'
1010
}
1111

12+
const ChallengeStatuses = {
13+
Completed: 'Completed'
14+
}
15+
1216
module.exports = {
13-
UserRoles
17+
UserRoles,
18+
ChallengeStatuses
1419
}

src/services/ResourceService.js

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ const helper = require('../common/helper')
1212
const logger = require('../common/logger')
1313
const errors = require('../common/errors')
1414
const ResourceRolePhaseDependencyService = require('./ResourceRolePhaseDependencyService')
15+
const constants = require('../../app-constants')
1516

1617
const payloadFields = ['id', 'challengeId', 'memberId', 'memberHandle', 'roleId', 'created', 'createdBy', 'updated', 'updatedBy', 'legacyId']
1718

@@ -237,6 +238,10 @@ async function init (currentUser, challengeId, resource, isCreated) {
237238
const challengeRes = await helper.getRequest(`${config.CHALLENGE_API_URL}/${challengeId}`)
238239
const challenge = challengeRes.body
239240

241+
if (_.get(challenge, 'status') === constants.ChallengeStatuses.Completed && !isCreated) {
242+
throw new errors.BadRequestError('Cannot delete resources of a completed challenge!')
243+
}
244+
240245
// Prevent from creating more than 1 submitter resources on tasks
241246
if (_.get(challenge, 'task.isTask', false) && isCreated && resource.roleId === config.SUBMITTER_RESOURCE_ROLE_ID) {
242247
const existing = await getResources(currentUser, challengeId, config.SUBMITTER_RESOURCE_ROLE_ID, 1, 1)

0 commit comments

Comments
 (0)