Skip to content

Commit 0a4cdf9

Browse files
committed
Better debug logging
1 parent a44ae92 commit 0a4cdf9

File tree

1 file changed

+152
-148
lines changed

1 file changed

+152
-148
lines changed

src/services/ChallengeService.js

Lines changed: 152 additions & 148 deletions
Original file line numberDiff line numberDiff line change
@@ -858,190 +858,194 @@ searchChallenges.schema = {
858858
* @returns {Object} the created challenge
859859
*/
860860
async function createChallenge(currentUser, challenge, userToken) {
861-
await challengeHelper.validateCreateChallengeRequest(currentUser, challenge);
862-
let prizeTypeTmp = challengeHelper.validatePrizeSetsAndGetPrizeType(challenge.prizeSets);
863-
864-
console.log("TYPE", prizeTypeTmp);
865-
if (challenge.legacy.selfService) {
866-
// if self-service, create a new project (what about if projectId is provided in the payload? confirm with business!)
867-
if (!challenge.projectId && challengeHelper.isProjectIdRequired(challenge.timelineTemplateId)) {
868-
const selfServiceProjectName = `Self service - ${currentUser.handle} - ${challenge.name}`;
869-
challenge.projectId = await helper.createSelfServiceProject(
870-
selfServiceProjectName,
871-
"N/A",
872-
config.NEW_SELF_SERVICE_PROJECT_TYPE,
873-
userToken
874-
);
875-
}
861+
var ret
862+
try {
863+
await challengeHelper.validateCreateChallengeRequest(currentUser, challenge);
864+
let prizeTypeTmp = challengeHelper.validatePrizeSetsAndGetPrizeType(challenge.prizeSets);
865+
866+
console.log("TYPE", prizeTypeTmp);
867+
if (challenge.legacy.selfService) {
868+
// if self-service, create a new project (what about if projectId is provided in the payload? confirm with business!)
869+
if (!challenge.projectId && challengeHelper.isProjectIdRequired(challenge.timelineTemplateId)) {
870+
const selfServiceProjectName = `Self service - ${currentUser.handle} - ${challenge.name}`;
871+
challenge.projectId = await helper.createSelfServiceProject(
872+
selfServiceProjectName,
873+
"N/A",
874+
config.NEW_SELF_SERVICE_PROJECT_TYPE,
875+
userToken
876+
);
877+
}
876878

877-
if (challenge.metadata && challenge.metadata.length > 0) {
878-
for (const entry of challenge.metadata) {
879-
if (challenge.description.includes(`{{${entry.name}}}`)) {
880-
challenge.description = challenge.description
881-
.split(`{{${entry.name}}}`)
882-
.join(entry.value);
879+
if (challenge.metadata && challenge.metadata.length > 0) {
880+
for (const entry of challenge.metadata) {
881+
if (challenge.description.includes(`{{${entry.name}}}`)) {
882+
challenge.description = challenge.description
883+
.split(`{{${entry.name}}}`)
884+
.join(entry.value);
885+
}
883886
}
884887
}
885888
}
886-
}
887889

888-
/** Ensure project exists, and set direct project id, billing account id & markup */
889-
if (challengeHelper.isProjectIdRequired(challenge.timelineTemplateId) || challenge.projectId) {
890-
const { projectId } = challenge;
890+
/** Ensure project exists, and set direct project id, billing account id & markup */
891+
if (challengeHelper.isProjectIdRequired(challenge.timelineTemplateId) || challenge.projectId) {
892+
const { projectId } = challenge;
891893

892-
const { directProjectId } = await projectHelper.getProject(projectId, currentUser);
893-
const { billingAccountId, markup } = await projectHelper.getProjectBillingInformation(
894-
projectId
895-
);
894+
const { directProjectId } = await projectHelper.getProject(projectId, currentUser);
895+
const { billingAccountId, markup } = await projectHelper.getProjectBillingInformation(
896+
projectId
897+
);
896898

897-
_.set(challenge, "legacy.directProjectId", directProjectId);
898-
_.set(challenge, "billing.billingAccountId", billingAccountId);
899-
_.set(challenge, "billing.markup", markup || 0);
900-
}
899+
_.set(challenge, "legacy.directProjectId", directProjectId);
900+
_.set(challenge, "billing.billingAccountId", billingAccountId);
901+
_.set(challenge, "billing.markup", markup || 0);
902+
}
901903

902-
if (!_.isUndefined(_.get(challenge, "legacy.reviewType"))) {
903-
_.set(challenge, "legacy.reviewType", _.toUpper(_.get(challenge, "legacy.reviewType")));
904-
}
904+
if (!_.isUndefined(_.get(challenge, "legacy.reviewType"))) {
905+
_.set(challenge, "legacy.reviewType", _.toUpper(_.get(challenge, "legacy.reviewType")));
906+
}
905907

906-
if (!challenge.status) {
907-
challenge.status = constants.challengeStatuses.New;
908-
}
908+
if (!challenge.status) {
909+
challenge.status = constants.challengeStatuses.New;
910+
}
909911

910-
if (!challenge.startDate) {
911-
challenge.startDate = new Date().toISOString();
912-
} else {
913-
challenge.startDate = convertToISOString(challenge.startDate);
914-
}
912+
if (!challenge.startDate) {
913+
challenge.startDate = new Date().toISOString();
914+
} else {
915+
challenge.startDate = convertToISOString(challenge.startDate);
916+
}
915917

916-
const { track, type } = await challengeHelper.validateAndGetChallengeTypeAndTrack(challenge);
918+
const { track, type } = await challengeHelper.validateAndGetChallengeTypeAndTrack(challenge);
917919

918-
if (_.get(type, "isTask")) {
919-
_.set(challenge, "task.isTask", true);
920-
// this is only applicable for WorkType: Gig, i.e., Tasks created from Salesforce
921-
if (challenge.billing != null && challenge.billing.clientBillingRate != null) {
922-
_.set(challenge, "billing.clientBillingRate", challenge.billing.clientBillingRate);
923-
}
920+
if (_.get(type, "isTask")) {
921+
_.set(challenge, "task.isTask", true);
922+
// this is only applicable for WorkType: Gig, i.e., Tasks created from Salesforce
923+
if (challenge.billing != null && challenge.billing.clientBillingRate != null) {
924+
_.set(challenge, "billing.clientBillingRate", challenge.billing.clientBillingRate);
925+
}
924926

925-
if (_.isUndefined(_.get(challenge, "task.isAssigned"))) {
926-
_.set(challenge, "task.isAssigned", false);
927-
}
928-
if (_.isUndefined(_.get(challenge, "task.memberId"))) {
929-
_.set(challenge, "task.memberId", null);
930-
} else {
931-
throw new errors.BadRequestError(`Cannot assign a member before the challenge gets created.`);
927+
if (_.isUndefined(_.get(challenge, "task.isAssigned"))) {
928+
_.set(challenge, "task.isAssigned", false);
929+
}
930+
if (_.isUndefined(_.get(challenge, "task.memberId"))) {
931+
_.set(challenge, "task.memberId", null);
932+
} else {
933+
throw new errors.BadRequestError(`Cannot assign a member before the challenge gets created.`);
934+
}
932935
}
933-
}
934936

935-
if (challenge.phases && challenge.phases.length > 0) {
936-
await phaseHelper.validatePhases(challenge.phases);
937-
}
937+
if (challenge.phases && challenge.phases.length > 0) {
938+
await phaseHelper.validatePhases(challenge.phases);
939+
}
938940

939-
// populate phases
940-
if (!challenge.timelineTemplateId) {
941-
if (challenge.typeId && challenge.trackId) {
942-
const supportedTemplates =
943-
await ChallengeTimelineTemplateService.searchChallengeTimelineTemplates({
944-
typeId: challenge.typeId,
945-
trackId: challenge.trackId,
946-
isDefault: true,
947-
});
948-
const challengeTimelineTemplate = supportedTemplates.result[0];
949-
if (!challengeTimelineTemplate) {
950-
throw new errors.BadRequestError(
951-
`The selected trackId ${challenge.trackId} and typeId: ${challenge.typeId} does not have a default timeline template. Please provide a timelineTemplateId`
952-
);
941+
// populate phases
942+
if (!challenge.timelineTemplateId) {
943+
if (challenge.typeId && challenge.trackId) {
944+
const supportedTemplates =
945+
await ChallengeTimelineTemplateService.searchChallengeTimelineTemplates({
946+
typeId: challenge.typeId,
947+
trackId: challenge.trackId,
948+
isDefault: true,
949+
});
950+
const challengeTimelineTemplate = supportedTemplates.result[0];
951+
if (!challengeTimelineTemplate) {
952+
throw new errors.BadRequestError(
953+
`The selected trackId ${challenge.trackId} and typeId: ${challenge.typeId} does not have a default timeline template. Please provide a timelineTemplateId`
954+
);
955+
}
956+
challenge.timelineTemplateId = challengeTimelineTemplate.timelineTemplateId;
957+
} else {
958+
throw new errors.BadRequestError(`trackId and typeId are required to create a challenge`);
953959
}
954-
challenge.timelineTemplateId = challengeTimelineTemplate.timelineTemplateId;
955-
} else {
956-
throw new errors.BadRequestError(`trackId and typeId are required to create a challenge`);
957960
}
958-
}
959-
challenge.phases = await phaseHelper.populatePhasesForChallengeCreation(
960-
challenge.phases,
961-
challenge.startDate,
962-
challenge.timelineTemplateId
963-
);
961+
challenge.phases = await phaseHelper.populatePhasesForChallengeCreation(
962+
challenge.phases,
963+
challenge.startDate,
964+
challenge.timelineTemplateId
965+
);
964966

965-
// populate challenge terms
966-
// const projectTerms = await helper.getProjectDefaultTerms(challenge.projectId)
967-
// challenge.terms = await helper.validateChallengeTerms(_.union(projectTerms, challenge.terms))
968-
// TODO - challenge terms returned from projects api don't have a role associated
969-
// this will need to be updated to associate project terms with a roleId
970-
challenge.terms = await helper.validateChallengeTerms(challenge.terms || []);
967+
// populate challenge terms
968+
// const projectTerms = await helper.getProjectDefaultTerms(challenge.projectId)
969+
// challenge.terms = await helper.validateChallengeTerms(_.union(projectTerms, challenge.terms))
970+
// TODO - challenge terms returned from projects api don't have a role associated
971+
// this will need to be updated to associate project terms with a roleId
972+
challenge.terms = await helper.validateChallengeTerms(challenge.terms || []);
971973

972-
// default the descriptionFormat
973-
if (!challenge.descriptionFormat) {
974-
challenge.descriptionFormat = "markdown";
975-
}
974+
// default the descriptionFormat
975+
if (!challenge.descriptionFormat) {
976+
challenge.descriptionFormat = "markdown";
977+
}
976978

977-
if (challenge.phases && challenge.phases.length > 0) {
978-
challenge.endDate = helper.calculateChallengeEndDate(challenge);
979-
}
979+
if (challenge.phases && challenge.phases.length > 0) {
980+
challenge.endDate = helper.calculateChallengeEndDate(challenge);
981+
}
980982

981-
if (challenge.events == null) challenge.events = [];
982-
if (challenge.attachments == null) challenge.attachments = [];
983-
if (challenge.prizeSets == null) challenge.prizeSets = [];
984-
if (challenge.metadata == null) challenge.metadata = [];
985-
if (challenge.groups == null) challenge.groups = [];
986-
if (challenge.tags == null) challenge.tags = [];
987-
if (challenge.startDate != null) challenge.startDate = challenge.startDate;
988-
if (challenge.endDate != null) challenge.endDate = challenge.endDate;
989-
if (challenge.discussions == null) challenge.discussions = [];
990-
if (challenge.skills == null) challenge.skills = [];
983+
if (challenge.events == null) challenge.events = [];
984+
if (challenge.attachments == null) challenge.attachments = [];
985+
if (challenge.prizeSets == null) challenge.prizeSets = [];
986+
if (challenge.metadata == null) challenge.metadata = [];
987+
if (challenge.groups == null) challenge.groups = [];
988+
if (challenge.tags == null) challenge.tags = [];
989+
if (challenge.startDate != null) challenge.startDate = challenge.startDate;
990+
if (challenge.endDate != null) challenge.endDate = challenge.endDate;
991+
if (challenge.discussions == null) challenge.discussions = [];
992+
if (challenge.skills == null) challenge.skills = [];
991993

992-
challenge.metadata = challenge.metadata.map((m) => ({
993-
name: m.name,
994-
value: typeof m.value === "string" ? m.value : JSON.stringify(m.value),
995-
}));
994+
challenge.metadata = challenge.metadata.map((m) => ({
995+
name: m.name,
996+
value: typeof m.value === "string" ? m.value : JSON.stringify(m.value),
997+
}));
996998

997-
const grpcMetadata = new GrpcMetadata();
999+
const grpcMetadata = new GrpcMetadata();
9981000

999-
grpcMetadata.set("handle", currentUser.handle);
1000-
grpcMetadata.set("userId", currentUser.userId);
1001-
grpcMetadata.set("token", await getM2MToken());
1001+
grpcMetadata.set("handle", currentUser.handle);
1002+
grpcMetadata.set("userId", currentUser.userId);
1003+
grpcMetadata.set("token", await getM2MToken());
10021004

1003-
const prizeType = challengeHelper.validatePrizeSetsAndGetPrizeType(challenge.prizeSets);
1005+
const prizeType = challengeHelper.validatePrizeSetsAndGetPrizeType(challenge.prizeSets);
10041006

1005-
if (prizeType === constants.prizeTypes.USD) {
1006-
convertPrizeSetValuesToCents(challenge.prizeSets);
1007-
}
1007+
if (prizeType === constants.prizeTypes.USD) {
1008+
convertPrizeSetValuesToCents(challenge.prizeSets);
1009+
}
10081010

1009-
const ret = await challengeDomain.create(challenge, grpcMetadata);
1011+
ret = await challengeDomain.create(challenge, grpcMetadata);
10101012

1011-
if (prizeType === constants.prizeTypes.USD) {
1012-
convertPrizeSetValuesToDollars(ret.prizeSets, ret.overview);
1013-
}
1013+
if (prizeType === constants.prizeTypes.USD) {
1014+
convertPrizeSetValuesToDollars(ret.prizeSets, ret.overview);
1015+
}
10141016

1015-
ret.numOfSubmissions = 0;
1016-
ret.numOfRegistrants = 0;
1017+
ret.numOfSubmissions = 0;
1018+
ret.numOfRegistrants = 0;
10171019

1018-
enrichChallengeForResponse(ret, track, type);
1020+
enrichChallengeForResponse(ret, track, type);
10191021

1020-
// Create in ES
1021-
await esClient.create({
1022-
index: config.get("ES.ES_INDEX"),
1023-
type: config.get("ES.OPENSEARCH") == "false" ? config.get("ES.ES_TYPE") : undefined,
1024-
refresh: config.get("ES.ES_REFRESH"),
1025-
id: ret.id,
1026-
body: ret,
1027-
});
1022+
// Create in ES
1023+
await esClient.create({
1024+
index: config.get("ES.ES_INDEX"),
1025+
type: config.get("ES.OPENSEARCH") == "false" ? config.get("ES.ES_TYPE") : undefined,
1026+
refresh: config.get("ES.ES_REFRESH"),
1027+
id: ret.id,
1028+
body: ret,
1029+
});
10281030

1029-
// If the challenge is self-service, add the creating user as the "client manager", *not* the manager
1030-
// This is necessary for proper handling of the vanilla embed on the self-service work item dashboard
1031+
// If the challenge is self-service, add the creating user as the "client manager", *not* the manager
1032+
// This is necessary for proper handling of the vanilla embed on the self-service work item dashboard
10311033

1032-
if (challenge.legacy.selfService) {
1033-
if (currentUser.handle) {
1034-
await helper.createResource(ret.id, ret.createdBy, config.CLIENT_MANAGER_ROLE_ID);
1035-
}
1036-
} else {
1037-
if (currentUser.handle) {
1038-
await helper.createResource(ret.id, ret.createdBy, config.MANAGER_ROLE_ID);
1034+
if (challenge.legacy.selfService) {
1035+
if (currentUser.handle) {
1036+
await helper.createResource(ret.id, ret.createdBy, config.CLIENT_MANAGER_ROLE_ID);
1037+
}
1038+
} else {
1039+
if (currentUser.handle) {
1040+
await helper.createResource(ret.id, ret.createdBy, config.MANAGER_ROLE_ID);
1041+
}
10391042
}
1040-
}
1041-
1042-
// post bus event
1043-
await helper.postBusEvent(constants.Topics.ChallengeCreated, ret);
10441043

1044+
// post bus event
1045+
await helper.postBusEvent(constants.Topics.ChallengeCreated, ret);
1046+
} catch (ex){
1047+
logger.logFullError(err);
1048+
}
10451049
return ret;
10461050
}
10471051
createChallenge.schema = {

0 commit comments

Comments
 (0)