From 6871e65d386907e81b8a0a7761c59ba43c42c64a Mon Sep 17 00:00:00 2001 From: PraveenDass Date: Sun, 7 Dec 2025 18:10:59 +0530 Subject: [PATCH 1/6] program component update issue fix --- module/userProjects/helper.js | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/module/userProjects/helper.js b/module/userProjects/helper.js index 67d487fc..bf057456 100644 --- a/module/userProjects/helper.js +++ b/module/userProjects/helper.js @@ -119,7 +119,9 @@ module.exports = class UserProjectsHelper { "entityInformation._id", "lastDownloadedAt", "appInformation", - "status" + "status", + "programId", + "isAPrivateProgram" ]); if (!userProject.length > 0) { @@ -174,7 +176,7 @@ module.exports = class UserProjectsHelper { solutionExists = true; } - } else if (data.programName) { + } else if (data.programName && !userProject[0].programId) { if (!userProject[0].solutionInformation) { createNewProgramAndSolution = true; @@ -229,7 +231,7 @@ module.exports = class UserProjectsHelper { return resolve(programAndSolutionInformation); } - if (solutionExists) { + if (solutionExists && userProject[0].isAPrivateProgram) { let updateProgram = await surveyService.removeSolutionsFromProgram( From 7e386b620b866fc257ea4d6afabf60fb2c4284e4 Mon Sep 17 00:00:00 2001 From: PraveenDass Date: Mon, 8 Dec 2025 13:00:28 +0530 Subject: [PATCH 2/6] changes for program component update issue --- generics/constants/api-responses.js | 4 +++- module/userProjects/helper.js | 15 ++++++++++++++- 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/generics/constants/api-responses.js b/generics/constants/api-responses.js index 568265f4..7881f7fc 100644 --- a/generics/constants/api-responses.js +++ b/generics/constants/api-responses.js @@ -135,5 +135,7 @@ module.exports = { "NOT_ELIGIBLE_FOR_CERTIFICATE" : "Project is not eligible for certificate", "ISSUER_KID_NOT_FOUND" : "Failed to fetch certificate issuer kid", "PROJECT_SUBMITTED_FOR_REISSUE" : "Submitted for project certificate reIssue", - "FAILED_TO_START_RESOURCE": "There was an error in starting/joining. Please try again after some time." + "FAILED_TO_START_RESOURCE": "There was an error in starting/joining. Please try again after some time.", + "REQUIRED_PROGRAM_ID": "Required program id", + }; diff --git a/module/userProjects/helper.js b/module/userProjects/helper.js index bf057456..b65e6c94 100644 --- a/module/userProjects/helper.js +++ b/module/userProjects/helper.js @@ -160,6 +160,19 @@ module.exports = class UserProjectsHelper { } let createNewProgramAndSolution = false; let solutionExists = false; + + if ( + (userProject[0].programId && !data.programId) || + (userProject[0].solutionInformation?._id && !data.solutionId) + ) { + throw { + status: HTTP_STATUS_CODE['bad_request'].status, + message: + userProject[0].programId && !data.programId + ? CONSTANTS.apiResponses.REQUIRED_PROGRAM_ID + : CONSTANTS.apiResponses.REQUIRED_SOLUTION_ID + }; + } if (data.programId && data.programId !== "") { @@ -176,7 +189,7 @@ module.exports = class UserProjectsHelper { solutionExists = true; } - } else if (data.programName && !userProject[0].programId) { + } else if (data.programName) { if (!userProject[0].solutionInformation) { createNewProgramAndSolution = true; From e2099bdb2cdb3905892341b2fe6fe7b0c28fd2ff Mon Sep 17 00:00:00 2001 From: PraveenDass Date: Wed, 10 Dec 2025 10:31:55 +0530 Subject: [PATCH 3/6] removeSolution header changes --- generics/services/survey.js | 6 ++++-- module/userProjects/helper.js | 21 +++++---------------- 2 files changed, 9 insertions(+), 18 deletions(-) diff --git a/generics/services/survey.js b/generics/services/survey.js index e15f5c07..f1576499 100644 --- a/generics/services/survey.js +++ b/generics/services/survey.js @@ -592,15 +592,17 @@ const listProgramsBasedOnIds = function ( programIds ) { * @name removeSolutionsFromProgram * @param {String} programId - Program id. * @param {Array} solutionIds - Array of solutions ids. + * @param {Boolean} checkProgramIdExists - check program id exists or not. + * @param {String} projectId - project id. * @returns {JSON} - updated program. */ -const removeSolutionsFromProgram = function ( token,programId,solutionIds ) { +const removeSolutionsFromProgram = function ( token,programId,solutionIds,checkProgramIdExists,projectId ) { return new Promise(async (resolve, reject) => { try { const url = - ASSESSMENT_URL + CONSTANTS.endpoints.REMOVE_SOLUTIONS_FROM_PROGRAM + "/" + programId; + ASSESSMENT_URL + CONSTANTS.endpoints.REMOVE_SOLUTIONS_FROM_PROGRAM + "/" + programId + "?checkProgramIdExists=" + checkProgramIdExists + "&projectId=" + projectId +"&referneceFrom=ml-project"; const options = { headers : { diff --git a/module/userProjects/helper.js b/module/userProjects/helper.js index b65e6c94..e9cdd8f6 100644 --- a/module/userProjects/helper.js +++ b/module/userProjects/helper.js @@ -160,19 +160,6 @@ module.exports = class UserProjectsHelper { } let createNewProgramAndSolution = false; let solutionExists = false; - - if ( - (userProject[0].programId && !data.programId) || - (userProject[0].solutionInformation?._id && !data.solutionId) - ) { - throw { - status: HTTP_STATUS_CODE['bad_request'].status, - message: - userProject[0].programId && !data.programId - ? CONSTANTS.apiResponses.REQUIRED_PROGRAM_ID - : CONSTANTS.apiResponses.REQUIRED_SOLUTION_ID - }; - } if (data.programId && data.programId !== "") { @@ -245,12 +232,14 @@ module.exports = class UserProjectsHelper { } if (solutionExists && userProject[0].isAPrivateProgram) { - + let checkProgramIdExists = data.programId ? true :false let updateProgram = await surveyService.removeSolutionsFromProgram( userToken, userProject[0].programInformation._id, - [userProject[0].solutionInformation._id] + [userProject[0].solutionInformation._id], + checkProgramIdExists, + projectId.toString(), ); if (!updateProgram.success) { @@ -376,7 +365,7 @@ module.exports = class UserProjectsHelper { if ( data.status == CONSTANTS.common.COMPLETED_STATUS || data.status == CONSTANTS.common.SUBMITTED_STATUS ) { updateProject.completedDate = new Date(); } - + let projectUpdated = await projectQueries.findOneAndUpdate( { From bc126087c15c28483a26c5da1f8cdd8b5b517582 Mon Sep 17 00:00:00 2001 From: PraveenDass Date: Wed, 10 Dec 2025 10:34:45 +0530 Subject: [PATCH 4/6] removeSolution header changes --- generics/constants/api-responses.js | 2 -- module/userProjects/helper.js | 8 +++----- 2 files changed, 3 insertions(+), 7 deletions(-) diff --git a/generics/constants/api-responses.js b/generics/constants/api-responses.js index 7881f7fc..b49c2c95 100644 --- a/generics/constants/api-responses.js +++ b/generics/constants/api-responses.js @@ -136,6 +136,4 @@ module.exports = { "ISSUER_KID_NOT_FOUND" : "Failed to fetch certificate issuer kid", "PROJECT_SUBMITTED_FOR_REISSUE" : "Submitted for project certificate reIssue", "FAILED_TO_START_RESOURCE": "There was an error in starting/joining. Please try again after some time.", - "REQUIRED_PROGRAM_ID": "Required program id", - }; diff --git a/module/userProjects/helper.js b/module/userProjects/helper.js index e9cdd8f6..ea8f73ea 100644 --- a/module/userProjects/helper.js +++ b/module/userProjects/helper.js @@ -119,9 +119,7 @@ module.exports = class UserProjectsHelper { "entityInformation._id", "lastDownloadedAt", "appInformation", - "status", - "programId", - "isAPrivateProgram" + "status" ]); if (!userProject.length > 0) { @@ -231,8 +229,8 @@ module.exports = class UserProjectsHelper { return resolve(programAndSolutionInformation); } - if (solutionExists && userProject[0].isAPrivateProgram) { - let checkProgramIdExists = data.programId ? true :false + if (solutionExists) { + let checkProgramIdExists = data?.programId ? true :false let updateProgram = await surveyService.removeSolutionsFromProgram( userToken, From f42533524f3c573f34858caee5990d09ca910c22 Mon Sep 17 00:00:00 2001 From: PraveenDass Date: Wed, 10 Dec 2025 10:35:29 +0530 Subject: [PATCH 5/6] removeSolution header changes --- generics/constants/api-responses.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/generics/constants/api-responses.js b/generics/constants/api-responses.js index b49c2c95..568265f4 100644 --- a/generics/constants/api-responses.js +++ b/generics/constants/api-responses.js @@ -135,5 +135,5 @@ module.exports = { "NOT_ELIGIBLE_FOR_CERTIFICATE" : "Project is not eligible for certificate", "ISSUER_KID_NOT_FOUND" : "Failed to fetch certificate issuer kid", "PROJECT_SUBMITTED_FOR_REISSUE" : "Submitted for project certificate reIssue", - "FAILED_TO_START_RESOURCE": "There was an error in starting/joining. Please try again after some time.", + "FAILED_TO_START_RESOURCE": "There was an error in starting/joining. Please try again after some time." }; From 5ef167da755b3aa4bfe2dc9500a09408e77ea197 Mon Sep 17 00:00:00 2001 From: PraveenDass Date: Wed, 10 Dec 2025 10:58:03 +0530 Subject: [PATCH 6/6] adding time stamp --- generics/services/survey.js | 2 +- module/userProjects/helper.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/generics/services/survey.js b/generics/services/survey.js index f1576499..361266f3 100644 --- a/generics/services/survey.js +++ b/generics/services/survey.js @@ -602,7 +602,7 @@ const removeSolutionsFromProgram = function ( token,programId,solutionIds,checkP try { const url = - ASSESSMENT_URL + CONSTANTS.endpoints.REMOVE_SOLUTIONS_FROM_PROGRAM + "/" + programId + "?checkProgramIdExists=" + checkProgramIdExists + "&projectId=" + projectId +"&referneceFrom=ml-project"; + ASSESSMENT_URL + CONSTANTS.endpoints.REMOVE_SOLUTIONS_FROM_PROGRAM + "/" + programId + "?checkProgramIdExists=" + checkProgramIdExists + "&projectId=" + projectId +"&referneceFrom=ml-project"+"&ts"+ Date.now(); const options = { headers : { diff --git a/module/userProjects/helper.js b/module/userProjects/helper.js index ea8f73ea..2f9e93f2 100644 --- a/module/userProjects/helper.js +++ b/module/userProjects/helper.js @@ -230,7 +230,7 @@ module.exports = class UserProjectsHelper { } if (solutionExists) { - let checkProgramIdExists = data?.programId ? true :false + let checkProgramIdExists = data.programId ? true :false let updateProgram = await surveyService.removeSolutionsFromProgram( userToken,