Skip to content

Commit 1be6e5a

Browse files
committed
Add flag to indicate whether or not to open an opportunity for this reviewer configuration
1 parent bd708ef commit 1be6e5a

File tree

7 files changed

+31
-6
lines changed

7 files changed

+31
-6
lines changed

.nvmrc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
18.19.0
1+
22.19

prisma/migrations/20251009030039_phase_to_default_reviewers_for_design/migration.sql

Lines changed: 0 additions & 5 deletions
This file was deleted.

prisma/migrations/20251009123600_add_phase_id_to_default_challenge_reviewer/migration.sql

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,4 +11,10 @@ ALTER TABLE "DefaultChallengeReviewer"
1111
ADD CONSTRAINT "DefaultChallengeReviewer_phaseId_fkey"
1212
FOREIGN KEY ("phaseId") REFERENCES "Phase"("id")
1313
ON DELETE RESTRICT ON UPDATE CASCADE;
14+
15+
-- DropForeignKey
16+
ALTER TABLE "DefaultChallengeReviewer" DROP CONSTRAINT "DefaultChallengeReviewer_phaseId_fkey";
17+
18+
-- AddForeignKey
19+
ALTER TABLE "DefaultChallengeReviewer" ADD CONSTRAINT "DefaultChallengeReviewer_phaseId_fkey" FOREIGN KEY ("phaseId") REFERENCES "Phase"("id") ON DELETE SET NULL ON UPDATE CASCADE;
1420

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
-- Add shouldOpenOpportunity flag to reviewer tables
2+
ALTER TABLE "ChallengeReviewer"
3+
ADD COLUMN IF NOT EXISTS "shouldOpenOpportunity" BOOLEAN NOT NULL DEFAULT TRUE;
4+
5+
ALTER TABLE "DefaultChallengeReviewer"
6+
ADD COLUMN IF NOT EXISTS "shouldOpenOpportunity" BOOLEAN NOT NULL DEFAULT TRUE;
7+

prisma/schema.prisma

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -592,6 +592,7 @@ model ChallengeReviewer {
592592
incrementalPayment Float?
593593
type ReviewOpportunityTypeEnum?
594594
aiWorkflowId String? @db.VarChar(14)
595+
shouldOpenOpportunity Boolean @default(true)
595596
596597
// Relation to the challenge
597598
challenge Challenge @relation(fields: [challengeId], references: [id], onDelete: Cascade)
@@ -627,6 +628,7 @@ model DefaultChallengeReviewer {
627628
incrementalPayment Float?
628629
opportunityType ReviewOpportunityTypeEnum?
629630
isAIReviewer Boolean
631+
shouldOpenOpportunity Boolean @default(true)
630632
631633
// Relations
632634
challengeType ChallengeType @relation(fields: [typeId], references: [id])

src/common/prisma-helper.js

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -232,6 +232,9 @@ function convertChallengeSchemaToPrisma(currentUser, challenge) {
232232
basePayment: _.isNil(r.basePayment) ? null : Number(r.basePayment),
233233
incrementalPayment: _.isNil(r.incrementalPayment) ? null : Number(r.incrementalPayment),
234234
aiWorkflowId: r.aiWorkflowId,
235+
shouldOpenOpportunity: _.isNil(r.shouldOpenOpportunity)
236+
? true
237+
: !!r.shouldOpenOpportunity,
235238
createdAt: new Date(Date.now() + index),
236239
};
237240
if (r.type) reviewer.type = _.toUpper(r.type);
@@ -370,6 +373,7 @@ function convertModelToResponse(ret) {
370373
"incrementalPayment",
371374
"type",
372375
"aiWorkflowId",
376+
"shouldOpenOpportunity",
373377
])
374378
);
375379
}

src/services/ChallengeService.js

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -250,6 +250,9 @@ async function getDefaultReviewers(currentUser, criteria) {
250250
type: r.opportunityType,
251251
aiWorkflowId: r.aiWorkflowId,
252252
isAIReviewer: r.isAIReviewer,
253+
shouldOpenOpportunity: _.isBoolean(r.shouldOpenOpportunity)
254+
? r.shouldOpenOpportunity
255+
: true,
253256
}));
254257
}
255258
getDefaultReviewers.schema = { currentUser: Joi.any(), criteria: Joi.any() };
@@ -270,6 +273,7 @@ async function setDefaultReviewers(currentUser, data) {
270273
scorecardId: Joi.string().required(),
271274
isMemberReview: Joi.boolean().required(),
272275
isAIReviewer: Joi.boolean().default(false),
276+
shouldOpenOpportunity: Joi.boolean().default(true),
273277
memberReviewerCount: Joi.when("isMemberReview", {
274278
is: true,
275279
then: Joi.number().integer().min(1).required(),
@@ -341,6 +345,9 @@ async function setDefaultReviewers(currentUser, data) {
341345
incrementalPayment: _.isNil(r.incrementalPayment) ? null : Number(r.incrementalPayment),
342346
opportunityType: r.type ? _.toUpper(r.type) : null,
343347
aiWorkflowId: r.aiWorkflowId,
348+
shouldOpenOpportunity: _.isNil(r.shouldOpenOpportunity)
349+
? true
350+
: !!r.shouldOpenOpportunity,
344351
})),
345352
});
346353
}
@@ -1402,6 +1409,8 @@ async function createChallenge(currentUser, challenge, userToken) {
14021409
type: r.opportunityType,
14031410
aiWorkflowId: r.aiWorkflowId,
14041411
isAIReviewer: r.isAIReviewer ?? false,
1412+
shouldOpenOpportunity:
1413+
_.isBoolean(r.shouldOpenOpportunity) ? r.shouldOpenOpportunity : true,
14051414
}));
14061415
}
14071416
}
@@ -1556,6 +1565,7 @@ createChallenge.schema = {
15561565
scorecardId: Joi.string().required(),
15571566
isMemberReview: Joi.boolean().required(),
15581567
isAIReviewer: Joi.boolean().default(false),
1568+
shouldOpenOpportunity: Joi.boolean().default(true),
15591569
memberReviewerCount: Joi.when("isMemberReview", {
15601570
is: true,
15611571
then: Joi.number().integer().min(1).required(),
@@ -2627,6 +2637,7 @@ updateChallenge.schema = {
26272637
scorecardId: Joi.string().required(),
26282638
isMemberReview: Joi.boolean().required(),
26292639
isAIReviewer: Joi.boolean().default(false),
2640+
shouldOpenOpportunity: Joi.boolean().default(true),
26302641
memberReviewerCount: Joi.when("isMemberReview", {
26312642
is: true,
26322643
then: Joi.number().integer().min(1).required(),

0 commit comments

Comments
 (0)