abmp-npm 2.0.3 → 2.0.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -5,11 +5,18 @@ const { changeWixMembersEmails } = require('./utils');
|
|
|
5
5
|
|
|
6
6
|
/**
|
|
7
7
|
* Processes and saves multiple member records in bulk
|
|
8
|
+
* @param {Object} options - The options object
|
|
9
|
+
* @param {Array} options.memberDataList - Array of member data from API
|
|
10
|
+
* @param {number} options.currentPageNumber - Current page number being processed
|
|
11
|
+
* @param {boolean} [options.addInterests=true] - Whether to add interests to the member data
|
|
8
12
|
* @param {Array} memberDataList - Array of member data from API
|
|
9
|
-
* @param {number} currentPageNumber - Current page number being processed
|
|
10
13
|
* @returns {Promise<Object>} - Bulk save operation result with statistics
|
|
11
14
|
*/
|
|
12
|
-
const bulkProcessAndSaveMemberData = async (
|
|
15
|
+
const bulkProcessAndSaveMemberData = async ({
|
|
16
|
+
memberDataList,
|
|
17
|
+
currentPageNumber,
|
|
18
|
+
addInterests = true,
|
|
19
|
+
}) => {
|
|
13
20
|
if (!Array.isArray(memberDataList) || memberDataList.length === 0) {
|
|
14
21
|
throw new Error('Invalid member data list provided');
|
|
15
22
|
}
|
|
@@ -18,7 +25,11 @@ const bulkProcessAndSaveMemberData = async (memberDataList, currentPageNumber) =
|
|
|
18
25
|
|
|
19
26
|
try {
|
|
20
27
|
const processedMemberDataPromises = memberDataList.map(memberData =>
|
|
21
|
-
generateUpdatedMemberData(
|
|
28
|
+
generateUpdatedMemberData({
|
|
29
|
+
inputMemberData: memberData,
|
|
30
|
+
currentPageNumber,
|
|
31
|
+
addInterests,
|
|
32
|
+
})
|
|
22
33
|
);
|
|
23
34
|
|
|
24
35
|
const processedMemberDataList = await Promise.all(processedMemberDataPromises);
|
|
@@ -24,8 +24,19 @@ const DEFAULT_MEMBER_DISPLAY_SETTINGS = {
|
|
|
24
24
|
showWixUrl: true,
|
|
25
25
|
};
|
|
26
26
|
|
|
27
|
+
const PAC_ASSOCIATIONS = {
|
|
28
|
+
ABMP: 'ABMP',
|
|
29
|
+
ASCP: 'ASCP',
|
|
30
|
+
ANP: 'ANP',
|
|
31
|
+
AHP: 'AHP',
|
|
32
|
+
};
|
|
33
|
+
|
|
34
|
+
const SITES_WITH_INTERESTS_TO_MIGRATE = [PAC_ASSOCIATIONS.ABMP];
|
|
35
|
+
|
|
27
36
|
module.exports = {
|
|
28
37
|
MEMBER_ACTIONS,
|
|
29
38
|
ADDRESS_VISIBILITY_OPTIONS,
|
|
30
39
|
DEFAULT_MEMBER_DISPLAY_SETTINGS,
|
|
40
|
+
PAC_ASSOCIATIONS,
|
|
41
|
+
SITES_WITH_INTERESTS_TO_MIGRATE,
|
|
31
42
|
};
|
|
@@ -60,11 +60,17 @@ const ensureUniqueUrl = async ({ url, memberId, fullName }) => {
|
|
|
60
60
|
|
|
61
61
|
/**
|
|
62
62
|
* Generates complete updated member data by combining existing and migration data
|
|
63
|
-
* @param {Object}
|
|
64
|
-
* @param {
|
|
63
|
+
* @param {Object} options - The options object
|
|
64
|
+
* @param {Object} options.inputMemberData - Raw member data from API
|
|
65
|
+
* @param {string} options.addInterests - Site association of the member
|
|
66
|
+
* @param {number} options.currentPageNumber - Current page number being processed
|
|
65
67
|
* @returns {Promise<Object|null>} - Complete updated member data or null if validation fails
|
|
66
68
|
*/
|
|
67
|
-
async function generateUpdatedMemberData(
|
|
69
|
+
async function generateUpdatedMemberData({
|
|
70
|
+
inputMemberData,
|
|
71
|
+
addInterests = true,
|
|
72
|
+
currentPageNumber,
|
|
73
|
+
}) {
|
|
68
74
|
if (!validateCoreMemberData(inputMemberData)) {
|
|
69
75
|
throw new Error(
|
|
70
76
|
'Invalid member data: memberid, email (valid string), and memberships (array) are required'
|
|
@@ -86,7 +92,11 @@ async function generateUpdatedMemberData(inputMemberData, currentPageNumber) {
|
|
|
86
92
|
|
|
87
93
|
// Only enrich with migration and address data for new members
|
|
88
94
|
if (!existingDbMember) {
|
|
89
|
-
enrichWithMigrationData(
|
|
95
|
+
enrichWithMigrationData({
|
|
96
|
+
memberDataToUpdate: updatedMemberData,
|
|
97
|
+
migrationData: inputMemberData.migrationData,
|
|
98
|
+
addInterests,
|
|
99
|
+
});
|
|
90
100
|
|
|
91
101
|
enrichWithAddressData(
|
|
92
102
|
updatedMemberData,
|
|
@@ -196,10 +206,13 @@ async function getNewMemberOnlyFields(inputMemberData, existingDbMember) {
|
|
|
196
206
|
}
|
|
197
207
|
/**
|
|
198
208
|
* Enriches member data with optional migration properties
|
|
199
|
-
* @param {Object}
|
|
209
|
+
* @param {Object} options - The options object
|
|
210
|
+
* @param {Object} options.memberDataToUpdate - Member data object to enhance
|
|
211
|
+
* @param {Object} options.migrationData - Migration data containing optional properties
|
|
212
|
+
* @param {boolean} [options.addInterests=true] - Whether to add interests to the member data
|
|
200
213
|
* @param {Object} migrationData - Migration data containing optional properties
|
|
201
214
|
*/
|
|
202
|
-
function enrichWithMigrationData(memberDataToUpdate, migrationData) {
|
|
215
|
+
function enrichWithMigrationData({ memberDataToUpdate, migrationData, addInterests = true }) {
|
|
203
216
|
if (!migrationData) return;
|
|
204
217
|
|
|
205
218
|
memberDataToUpdate.addressInfo = migrationData.addressinfo;
|
|
@@ -209,7 +222,7 @@ function enrichWithMigrationData(memberDataToUpdate, migrationData) {
|
|
|
209
222
|
memberDataToUpdate.showWebsite = true;
|
|
210
223
|
}
|
|
211
224
|
|
|
212
|
-
if (migrationData.interests) {
|
|
225
|
+
if (addInterests && migrationData.interests) {
|
|
213
226
|
memberDataToUpdate.areasOfPractices = processInterests(migrationData.interests);
|
|
214
227
|
}
|
|
215
228
|
}
|
|
@@ -6,6 +6,7 @@ const { TASKS_NAMES } = require('../tasks/consts');
|
|
|
6
6
|
const { getSiteConfigs } = require('../utils');
|
|
7
7
|
|
|
8
8
|
const { bulkProcessAndSaveMemberData } = require('./bulk-process-methods');
|
|
9
|
+
const { SITES_WITH_INTERESTS_TO_MIGRATE } = require('./consts');
|
|
9
10
|
const { isUpdatedMember, isSiteAssociatedMember } = require('./utils');
|
|
10
11
|
|
|
11
12
|
async function syncMembersDataPerAction(action) {
|
|
@@ -79,6 +80,7 @@ async function synchronizeSinglePage(taskObject) {
|
|
|
79
80
|
getSiteConfigs(CONFIG_KEYS.SITE_ASSOCIATION),
|
|
80
81
|
fetchPACMembers(pageNumber, action),
|
|
81
82
|
]);
|
|
83
|
+
const addInterests = SITES_WITH_INTERESTS_TO_MIGRATE.includes(siteAssociation);
|
|
82
84
|
if (
|
|
83
85
|
!memberDataResponse ||
|
|
84
86
|
!memberDataResponse.results ||
|
|
@@ -98,7 +100,11 @@ async function synchronizeSinglePage(taskObject) {
|
|
|
98
100
|
message: `No to be updated, or members of association: '${siteAssociation}' found`,
|
|
99
101
|
};
|
|
100
102
|
}
|
|
101
|
-
const result = await bulkProcessAndSaveMemberData(
|
|
103
|
+
const result = await bulkProcessAndSaveMemberData({
|
|
104
|
+
memberDataList: toSyncMembers,
|
|
105
|
+
currentPageNumber: pageNumber,
|
|
106
|
+
addInterests,
|
|
107
|
+
});
|
|
102
108
|
|
|
103
109
|
return {
|
|
104
110
|
success: true,
|