Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 5 additions & 4 deletions services/application/src/actions/user/set-unverified-data.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ const { createRequiredParamError } = require('@base-cms/micro').service;
const { isObject, asArray } = require('@base-cms/utils');
const setConsentAnswer = require('./utils/set-regional-consent-answer');
const setCustomSelectAnswers = require('./utils/set-custom-select-answers');
const setCustomTextAnswers = require('./utils/set-custom-text-answers');

const { AppUser } = require('../../mongodb/models');

Expand All @@ -20,7 +21,7 @@ module.exports = async ({ applicationId, email, payload } = {}) => {
const {
// customBooleanFieldAnswers,
customSelectFieldAnswers,
// customTextFieldAnswers,
customTextFieldAnswers,
regionalConsentAnswers,
...fields
} = payload;
Expand All @@ -33,9 +34,9 @@ module.exports = async ({ applicationId, email, payload } = {}) => {
setCustomSelectAnswers({ user, answers: customSelectFieldAnswers });
}

// if (asArray(customTextFieldAnswers).length) {
// setCustomTextAnswers({ user, answers: customTextFieldAnswers });
// }
if (asArray(customTextFieldAnswers).length) {
setCustomTextAnswers({ user, answers: customTextFieldAnswers });
}

// overwrite/set regional consent answers
user.set('regionalConsentAnswers', []);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,8 @@ const { createRequiredParamError } = require('@base-cms/micro').service;
const { handleError } = require('@identity-x/utils').mongoose;

const { AppUser } = require('../../mongodb/models');
const setCustomTextAnswers = require('./utils/set-custom-text-answers');


const { isArray } = Array;

Expand All @@ -21,26 +23,8 @@ module.exports = async ({
// do not update user answers when passed answers are not an array
if (!isArray(answers)) return user;

// get all current answers as object { id, value }
const userObj = user.customTextFieldAnswers.reduce(
(obj, item) => ({ ...obj, [item._id]: item.value }), {},
);

// get new answers as object { id, value }
const newAnswers = answers.reduce(
(obj, item) => ({ ...obj, [item.fieldId]: item.value }), {},
);

// merge new and old ansers to account for old non active answers
const mergedAnswers = { ...userObj, ...newAnswers };

// convert merged answers into valid array of { _id, value } answers
const toSet = Object.keys(mergedAnswers).map((key) => {
const obj = { _id: key, value: mergedAnswers[key] };
return obj;
});
setCustomTextAnswers({ user, answers });

user.set('customTextFieldAnswers', toSet);
if (profileLastVerifiedAt) {
user.set('profileLastVerifiedAt', profileLastVerifiedAt);
user.set('forceProfileReVerification', false);
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
const { createRequiredParamError } = require('@base-cms/micro').service;

module.exports = ({ user, answers }) => {
if (!answers) throw createRequiredParamError('answers');
// get all current answers as object { id, value }
const userObj = user.customTextFieldAnswers.reduce(
(obj, item) => ({ ...obj, [item._id]: item.value }), {},
);

// get new answers as object { id, value }
const newAnswers = answers.reduce(
(obj, item) => ({ ...obj, [item.fieldId]: item.value }), {},
);

// merge new and old ansers to account for old non active answers
const mergedAnswers = { ...userObj, ...newAnswers };

// convert merged answers into valid array of { _id, value } answers
const toSet = Object.keys(mergedAnswers).map((key) => {
const obj = { _id: key, value: mergedAnswers[key] };
return obj;
});

user.set('customTextFieldAnswers', toSet);
};
2 changes: 1 addition & 1 deletion services/graphql/src/graphql/definitions/app-user.js
Original file line number Diff line number Diff line change
Expand Up @@ -461,7 +461,7 @@ input SetAppUserUnverifiedDataMutationInput {

# customBooleanFieldAnswers: [UpdateAppUserCustomBooleanAnswer!] = []
customSelectFieldAnswers: [UpdateAppUserCustomSelectAnswer!] = []
# customTextFieldAnswers: [UpdateAppUserCustomTextAnswer!] = []
customTextFieldAnswers: [UpdateAppUserCustomTextAnswer!] = []
regionalConsentAnswers: [SetAppUserRegionalConsentAnswerInput!] = []
}

Expand Down
4 changes: 2 additions & 2 deletions services/graphql/src/graphql/resolvers/app-user.js
Original file line number Diff line number Diff line change
Expand Up @@ -614,7 +614,7 @@ module.exports = {
regionalConsentAnswers,
// customBooleanFieldAnswers,
customSelectFieldAnswers,
// customTextFieldAnswers,
customTextFieldAnswers,
} = input;

const payload = {
Expand All @@ -633,7 +633,7 @@ module.exports = {
regionalConsentAnswers,
// customBooleanFieldAnswers,
customSelectFieldAnswers,
// customTextFieldAnswers,
customTextFieldAnswers,
};

return applicationService.request('user.setUnverifiedData', {
Expand Down