Skip to content

Commit

Permalink
Merge pull request #123 from shikshalokam/master
Browse files Browse the repository at this point in the history
changes to restrict old programs from programJoin fn
  • Loading branch information
aks30 authored May 9, 2023
2 parents 60c186c + 90ef582 commit f3c6a7e
Show file tree
Hide file tree
Showing 4 changed files with 92 additions and 67 deletions.
68 changes: 35 additions & 33 deletions controllers/v1/observationsController.js
Original file line number Diff line number Diff line change
Expand Up @@ -1160,49 +1160,51 @@ module.exports = class Observations extends Abstract {
"name",
"description",
"imageCompression",
"isAPrivateProgram"
"isAPrivateProgram",
"requestForPIIConsent"
]
);

if ( !programDocument[0]._id ) {
throw messageConstants.apiResponses.PROGRAM_NOT_FOUND;
}

//fetch programUsers data
let programUsers = await programUsersHelper.programUsersDocuments(
{
userId : req.userDetails.userId,
programId : observationDocument.programId
},
[
"_id",
"resourcesStarted"
]
);

if (!programUsers.length > 0 || ( programUsers.length > 0 && programUsers[0].resourcesStarted == false)) {
// join observation's program. PII data consent is given via this api call.
// no need to check if usr already joined the program or not it is managed in ml-core service.

let programJoinData = {};
programJoinData.userRoleInformation = req.body;
programJoinData.isResource = true;
let joinProgram = await coreService.joinProgram (
req.userDetails.userToken,
programJoinData,
observationDocument.programId,
appVersion,
appName
if (programDocument[0].hasOwnProperty('requestForPIIConsent')) {
//fetch programUsers data
let programUsers = await programUsersHelper.programUsersDocuments(
{
userId : req.userDetails.userId,
programId : observationDocument.programId
},
[
"_id",
"resourcesStarted"
]
);

if ( !joinProgram.success ) {
return resolve({
status: httpStatusCode.bad_request.status,
message: messageConstants.apiResponses.PROGRAM_JOIN_FAILED
});

if (!programUsers.length > 0 || ( programUsers.length > 0 && programUsers[0].resourcesStarted == false)) {
// join observation's program. PII data consent is given via this api call.
// no need to check if usr already joined the program or not it is managed in ml-core service.

let programJoinData = {};
programJoinData.userRoleInformation = req.body;
programJoinData.isResource = true;
let joinProgram = await coreService.joinProgram (
req.userDetails.userToken,
programJoinData,
observationDocument.programId,
appVersion,
appName
);

if ( !joinProgram.success ) {
return resolve({
status: httpStatusCode.bad_request.status,
message: messageConstants.apiResponses.PROGRAM_JOIN_FAILED
});
}
}
}

/*
<- Currently not required for bodh-2:10 as roles is not given in user
*/
Expand Down
8 changes: 6 additions & 2 deletions models/programs.js
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,11 @@ module.exports = {
}
}]
},
rootOrganisations : Array,
createdFor : Array
rootOrganisations : {
type : Array,
require : true
},
createdFor : Array,
requestForPIIConsent: Boolean
}
};
31 changes: 17 additions & 14 deletions module/observations/helper.js
Original file line number Diff line number Diff line change
Expand Up @@ -1775,9 +1775,9 @@ module.exports = class ObservationsHelper {
},["_id","solutionId","programId"]);

let solutionData;
let requestForPIIConsent;
let rootOrganisations;
let programJoined;
let programsData;
if(observationData[0]){

solutionData = await solutionHelper.solutionDocuments({
Expand All @@ -1793,27 +1793,30 @@ module.exports = class ObservationsHelper {
programJoined = await programUsersHelper.checkForUserJoinedProgram(observationData[0].programId,userId);

// get requestForPIIconsent value and rootOrganisations of program. rootOrganisations added by programs team
let programsData = await programsHelper.list({
programsData = await programsHelper.list({
_id : observationData[0].programId
},["requestForPIIConsent", "rootOrganisations"]);

requestForPIIConsent = ( programsData[0].requestForPIIConsent ) ? programsData[0].requestForPIIConsent : false;
rootOrganisations = ( programsData[0].rootOrganisations ) ? programsData[0].rootOrganisations[0] : "";
}


let data = {
"allowMultipleAssessemts" : solutionData[0].allowMultipleAssessemts,
_id : observationId,
"entities" : entitiesList.data.entities,
entityType : entitiesList.data.entityType,
"license" : solutionData[0].license,
programJoined : programJoined,
"rootOrganisations" : rootOrganisations
}
// add requestForPIIConsent if key present in programs data
if ( programsData[0].hasOwnProperty('requestForPIIConsent')) {
data.requestForPIIConsent = programsData[0].requestForPIIConsent;
}
return resolve({
success : true,
message : messageConstants.apiResponses.OBSERVATION_ENTITIES_FETCHED,
data : {
"allowMultipleAssessemts" : solutionData[0].allowMultipleAssessemts,
_id : observationId,
"entities" : entitiesList.data.entities,
entityType : entitiesList.data.entityType,
"license" : solutionData[0].license,
programJoined : programJoined,
"rootOrganisations" : rootOrganisations,
"requestForPIIConsent" : requestForPIIConsent
}
data : data
});

} catch (error) {
Expand Down
52 changes: 34 additions & 18 deletions module/surveys/helper.js
Original file line number Diff line number Diff line change
Expand Up @@ -949,7 +949,9 @@ module.exports = class SurveysHelper {
// if programJoined key is false, user not joined the program.
result.programJoined = programJoined;
result.rootOrganisations = ( programDocument[0].rootOrganisations ) ? programDocument[0].rootOrganisations[0] : "";
result.requestForPIIConsent = ( programDocument[0].requestForPIIConsent ) ? programDocument[0].requestForPIIConsent : false;
if ( programDocument[0].hasOwnProperty('requestForPIIConsent')) {
result.requestForPIIConsent = programDocument[0].requestForPIIConsent;
}
}

let assessment = {};
Expand Down Expand Up @@ -1056,25 +1058,39 @@ module.exports = class SurveysHelper {
} else {
// join survey's program. PII data consent is given via this api call.
if ( solutionDocument.programId && userToken !== "" ) {
// not checking if already joined the program. it is handled in ml-core joinProgram fn.

if ( programDocument.length > 0 ) {
let programJoinData = {};
programJoinData.userRoleInformation = roleInformation;
programJoinData.isResource = true;
let joinProgram = await coreService.joinProgram (
userToken,
programJoinData,
solutionDocument.programId,
appVersion,
appName
if ( programDocument.length > 0 && programDocument[0].hasOwnProperty('requestForPIIConsent') ) {
//fetch programUsers data
let programUsers = await programUsersHelper.programUsersDocuments(
{
userId : userId,
programId : solutionDocument.programId
},
[
"_id",
"resourcesStarted"
]
);

if ( !joinProgram.success ) {
return resolve({
status: httpStatusCode.bad_request.status,
message: messageConstants.apiResponses.PROGRAM_JOIN_FAILED
});
if (!programUsers.length > 0 || ( programUsers.length > 0 && programUsers[0].resourcesStarted == false)) {

let programJoinData = {};
programJoinData.userRoleInformation = roleInformation;
programJoinData.isResource = true;
let joinProgram = await coreService.joinProgram (
userToken,
programJoinData,
solutionDocument.programId,
appVersion,
appName
);

if ( !joinProgram.success ) {
return resolve({
status: httpStatusCode.bad_request.status,
message: messageConstants.apiResponses.PROGRAM_JOIN_FAILED
});
}

}
}
}
Expand Down

0 comments on commit f3c6a7e

Please sign in to comment.