lms-sync 1.0.93 → 1.0.94
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.
- package/apiConnections/mapping.js +1028 -908
- package/models/applications.model.js +106 -0
- package/models/roles.model.js +78 -0
- package/models/userRoles.model.js +80 -0
- package/package.json +1 -1
@@ -23,43 +23,33 @@ const {
|
|
23
23
|
Users,
|
24
24
|
Semesters,
|
25
25
|
Employees,
|
26
|
+
UserRoles,
|
27
|
+
Applications,
|
28
|
+
Roles
|
26
29
|
|
27
30
|
|
28
31
|
} = db
|
29
32
|
|
30
33
|
const server = {
|
31
34
|
|
32
|
-
async
|
35
|
+
async AcademicYear(){
|
33
36
|
try {
|
34
37
|
await db.sequelize.query('DROP FUNCTION IF EXISTS pg_temp.testfunc()');
|
38
|
+
|
35
39
|
console.log("");
|
36
40
|
console.log("########################################################")
|
37
|
-
console.log("
|
41
|
+
console.log(" Academic Years Migration ")
|
38
42
|
console.log("########################################################")
|
39
43
|
console.log("");
|
40
44
|
|
41
45
|
const db_schema = schema
|
42
|
-
let maxIds = await
|
43
|
-
let maxIdsSem = await Semesters.max('_id'); //Fetch maximum _id directly from the campuses model
|
44
|
-
let maxIdsUser = await Users.max('_id'); //Fetch maximum _id directly from the campuses model
|
45
|
-
|
46
|
+
let maxIds = await AcademicYears.max('_id'); // Fetch maximum _id directly from the AcademicYears model
|
46
47
|
let maxId = maxIds|| 0;
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
await db.sequelize.query(`CREATE SEQUENCE IF NOT EXISTS ${db_schema}."Users__id_seq"`);
|
51
|
-
await db.sequelize.query(`ALTER SEQUENCE ${db_schema}."Users__id_seq" RESTART WITH ${maxIdUsers + 1}`);
|
52
|
-
|
53
|
-
await db.sequelize.query(`CREATE SEQUENCE IF NOT EXISTS ${db_schema}."Campuses__id_seq"`);
|
54
|
-
await db.sequelize.query(`ALTER SEQUENCE ${db_schema}."Campuses__id_seq" RESTART WITH ${maxId + 1}`);
|
55
|
-
|
56
|
-
await db.sequelize.query(`CREATE SEQUENCE IF NOT EXISTS ${db_schema}."Semesters__id_seq"`);
|
57
|
-
await db.sequelize.query(`ALTER SEQUENCE ${db_schema}."Semesters__id_seq" RESTART WITH ${maxIdSems + 1}`);
|
58
|
-
|
48
|
+
await db.sequelize.query(`CREATE SEQUENCE IF NOT EXISTS ${db_schema}."AcademicYears__id_seq"`);
|
49
|
+
await db.sequelize.query(`ALTER SEQUENCE ${db_schema}."AcademicYears__id_seq" RESTART WITH ${maxId + 1}`);
|
59
50
|
await db.sequelize.query(`DROP FUNCTION IF EXISTS ${db_schema}."pg_temp.testfunc()"`);
|
60
51
|
|
61
52
|
|
62
|
-
|
63
53
|
let userDefPayload = {
|
64
54
|
email: 'ccci_integrator@gmail.com',
|
65
55
|
password: '$2a$12$Q.h3Q9IN6vsIxGBa/EgfOOABeXTcwxt4t9cu4nqAK.nczGRRtZJUS',
|
@@ -76,122 +66,62 @@ const server = {
|
|
76
66
|
defaults: userDefPayload
|
77
67
|
});
|
78
68
|
|
79
|
-
const
|
69
|
+
const acadYearApi = await api.AcademicYear()
|
70
|
+
const userMail = await Users.findOne({ where: { email: 'ccci_integrator@gmail.com' } });
|
80
71
|
|
81
|
-
let
|
82
|
-
|
83
|
-
|
84
|
-
modifiedById: userMail?._id,
|
85
|
-
createdById: userMail?._id,
|
86
|
-
default: false,
|
87
|
-
}
|
88
|
-
let [yeardef, createdyear] = await AcademicYears.findOrCreate({
|
89
|
-
where: {
|
90
|
-
from: yearDefPayload.from,
|
91
|
-
to: yearDefPayload.to,
|
92
|
-
},
|
93
|
-
defaults: yearDefPayload
|
94
|
-
});
|
72
|
+
let createdCounter = 0
|
73
|
+
let errorCounter = 0
|
74
|
+
let uniqueErrors = new Set()
|
95
75
|
|
96
|
-
|
97
|
-
// {
|
98
|
-
// code: '1st Semester',
|
99
|
-
// description: '1st Semester',
|
100
|
-
// modifiedById: userMail?._id,
|
101
|
-
// createdById: userMail?._id
|
102
|
-
// },
|
103
|
-
// {
|
104
|
-
// code: '2nd Semester',
|
105
|
-
// description: '2nd Semester',
|
106
|
-
// modifiedById: userMail?._id,
|
107
|
-
// createdById: userMail?._id
|
108
|
-
// },
|
109
|
-
// {
|
110
|
-
// code: 'Summer',
|
111
|
-
// description: 'Summer',
|
112
|
-
// modifiedById: userMail?._id,
|
113
|
-
// createdById: userMail?._id
|
114
|
-
// },
|
115
|
-
// {
|
116
|
-
// code: 'School Year',
|
117
|
-
// description: 'School Year',
|
118
|
-
// modifiedById: userMail?._id,
|
119
|
-
// createdById: userMail?._id
|
120
|
-
// }
|
121
|
-
|
122
|
-
// ]
|
76
|
+
const { acadYearResult, currentSchoolYear } = acadYearApi;
|
123
77
|
|
124
|
-
// for (let sem = 0; sem < semesterData.length; sem++) {
|
125
|
-
// const semesters = semesterData[sem];
|
126
|
-
|
127
|
-
// let semestersPayload = {
|
128
|
-
// code: semesters.code,
|
129
|
-
// description: semesters.description,
|
130
|
-
// modifiedById: userMail?._id,
|
131
|
-
// createdById: userMail?._id
|
132
|
-
// }
|
133
78
|
|
134
|
-
|
135
|
-
|
136
|
-
// defaults: semestersPayload
|
137
|
-
// });
|
138
|
-
// }
|
79
|
+
let uFrom = new Set()
|
80
|
+
let uTo = new Set()
|
139
81
|
|
140
|
-
|
141
|
-
|
142
|
-
let campusDefPayload = {
|
143
|
-
name: 'Campus Default',
|
144
|
-
code: 'DEF',
|
145
|
-
email: 'campus_default@gmail.com',
|
146
|
-
address: 'MSC',
|
147
|
-
modifiedById: userMail?._id,
|
148
|
-
createdById: userMail?._id
|
149
|
-
};
|
150
|
-
|
151
|
-
let [defaults, createddef] = await Campuses.findOrCreate({
|
152
|
-
where: { name: campusDefPayload.name, code: campusDefPayload.code},
|
153
|
-
defaults: campusDefPayload
|
154
|
-
});
|
82
|
+
let newYears = []
|
155
83
|
|
156
|
-
|
157
|
-
|
158
|
-
|
84
|
+
const exYear = await AcademicYears.findAll()
|
85
|
+
const exYearMap = new Map(exYear.map(year => [`[${year.from} - ${year.to}]`, year]))
|
86
|
+
|
159
87
|
|
160
|
-
let
|
161
|
-
|
88
|
+
for (let i = 0; i < acadYearResult.length; i++){
|
89
|
+
try {
|
90
|
+
let _acadyear = acadYearResult[i]
|
91
|
+
// console.log('_acadyear :>> ', _acadyear);
|
162
92
|
|
163
|
-
|
93
|
+
let [from, to] = _acadyear.year.split('-')
|
164
94
|
|
165
|
-
|
166
|
-
|
167
|
-
|
168
|
-
|
169
|
-
|
170
|
-
|
171
|
-
|
95
|
+
to = /^\d+$/.test(to) ? parseInt(to, 10) : null;
|
96
|
+
from = /^\d+$/.test(from) ? parseInt(from, 10) : null;
|
97
|
+
|
98
|
+
let defaultDate = new Date()
|
99
|
+
let currentYear = defaultDate.getFullYear()
|
100
|
+
let previousYear = currentYear - 1
|
101
|
+
|
102
|
+
let isDefault = false
|
103
|
+
if(from == previousYear && to == currentYear) isDefault = true
|
172
104
|
|
173
105
|
let modifiedById = userMail?._id
|
174
106
|
let createdById = userMail?._id
|
175
107
|
|
176
|
-
let name = _campus?.name
|
177
|
-
let code = _campus?.code
|
178
|
-
|
179
108
|
let migratedAt = new Date() //present date of the migration
|
180
|
-
let migratedTable = '
|
181
|
-
let referenceId =
|
109
|
+
let migratedTable = 'AcademicYears' // sql counterpart main table
|
110
|
+
let referenceId = _acadyear?.id // id of the data
|
182
111
|
let isMigrated = true
|
183
112
|
|
184
|
-
|
185
|
-
|
113
|
+
|
114
|
+
if(uFrom.has(from) && uTo.has(to)){
|
115
|
+
const errorMsg = `Duplicate Payload Found: [${from} - ${to}]`
|
186
116
|
if(!uniqueErrors.has(errorMsg)){
|
187
117
|
logger.error(`${errorCounter + 1}/${errorCounter + 1}: ${errorMsg}`)
|
188
118
|
uniqueErrors.add(errorMsg)
|
189
119
|
errorCounter++
|
190
120
|
}
|
191
121
|
}
|
192
|
-
else if (
|
193
|
-
const
|
194
|
-
const errorMsg = `Existing Data Found:[${
|
122
|
+
else if ( exYearMap.has(`[${from} - ${to}]`)){
|
123
|
+
const exYear = exYearMap.get(`[${from} - ${to}]`)
|
124
|
+
const errorMsg = `Existing Data Found:[${exYear.from} - ${exYear.to}]`
|
195
125
|
if(!uniqueErrors.has(errorMsg)){
|
196
126
|
logger.error(`${errorCounter + 1}/${errorCounter + 1}: ${errorMsg}`)
|
197
127
|
uniqueErrors.add(errorMsg)
|
@@ -199,15 +129,14 @@ const server = {
|
|
199
129
|
}
|
200
130
|
}
|
201
131
|
else{
|
202
|
-
|
203
|
-
|
204
|
-
|
205
|
-
|
206
|
-
|
207
|
-
email: _campus?.email,
|
208
|
-
address: _campus?.address,
|
132
|
+
uFrom.add(from)
|
133
|
+
uTo.add(to)
|
134
|
+
newYears.push({
|
135
|
+
from,
|
136
|
+
to,
|
209
137
|
modifiedById,
|
210
138
|
createdById,
|
139
|
+
default: isDefault,
|
211
140
|
migratedAt,
|
212
141
|
migratedTable,
|
213
142
|
referenceId,
|
@@ -216,27 +145,26 @@ const server = {
|
|
216
145
|
}
|
217
146
|
|
218
147
|
} catch (error) {
|
219
|
-
|
220
|
-
|
148
|
+
;
|
149
|
+
logger.error(`Error occurred: ${error.stack} ${error}`);
|
221
150
|
}
|
222
151
|
}
|
223
152
|
|
224
|
-
|
225
|
-
|
226
|
-
|
227
|
-
|
228
|
-
|
229
|
-
|
230
|
-
|
231
|
-
}
|
232
|
-
}
|
153
|
+
if (newYears.length > 0) {
|
154
|
+
await AcademicYears.bulkCreate(newYears)
|
155
|
+
createdCounter += newYears.length
|
156
|
+
|
157
|
+
newYears.forEach((year, index) => {
|
158
|
+
logger.info(`${index + 1}/${index + 1}: New Academic Years Record Created: [${year.from} - ${year.to}]`)
|
159
|
+
});
|
160
|
+
}
|
233
161
|
|
234
162
|
console.log("");
|
235
163
|
console.log("########################################################")
|
236
164
|
console.log("")
|
237
|
-
logger.info('
|
238
|
-
logger.info(`Total Successful
|
239
|
-
logger.info(`Total Existing
|
165
|
+
logger.info('Academic Years Data Migration Completed');
|
166
|
+
logger.info(`Total Successful Academic Years Records Created: ${createdCounter}/${createdCounter}`);
|
167
|
+
logger.info(`Total Existing Academic Years Records: ${errorCounter}/${errorCounter}`);
|
240
168
|
logger.info(`Total Records: ${createdCounter + errorCounter}`);
|
241
169
|
console.log("")
|
242
170
|
console.log("########################################################")
|
@@ -256,86 +184,86 @@ const server = {
|
|
256
184
|
}
|
257
185
|
},
|
258
186
|
|
259
|
-
async
|
187
|
+
async Semester(){
|
260
188
|
try {
|
261
189
|
await db.sequelize.query('DROP FUNCTION IF EXISTS pg_temp.testfunc()');
|
262
190
|
|
263
191
|
console.log("");
|
264
192
|
console.log("########################################################")
|
265
|
-
console.log("
|
193
|
+
console.log(" Semesters Migration ")
|
266
194
|
console.log("########################################################")
|
267
195
|
console.log("");
|
268
196
|
|
269
197
|
const db_schema = schema
|
270
|
-
let maxIds = await
|
198
|
+
let maxIds = await AcademicYears.max('_id'); // Fetch maximum _id directly from the AcademicYears model
|
271
199
|
let maxId = maxIds|| 0;
|
272
|
-
await db.sequelize.query(`CREATE SEQUENCE IF NOT EXISTS ${db_schema}."
|
273
|
-
await db.sequelize.query(`ALTER SEQUENCE ${db_schema}."
|
274
|
-
|
200
|
+
await db.sequelize.query(`CREATE SEQUENCE IF NOT EXISTS ${db_schema}."Semesters__id_seq"`);
|
201
|
+
await db.sequelize.query(`ALTER SEQUENCE ${db_schema}."Semesters__id_seq" RESTART WITH ${maxId + 1}`);
|
275
202
|
await db.sequelize.query(`DROP FUNCTION IF EXISTS ${db_schema}."pg_temp.testfunc()"`);
|
276
203
|
|
277
|
-
const collegeApi = await api.College()
|
278
|
-
const campusApi = await api.Campus()
|
279
204
|
|
280
|
-
|
281
|
-
|
282
|
-
|
283
|
-
|
284
|
-
|
285
|
-
|
286
|
-
|
287
|
-
|
288
|
-
|
289
|
-
createdById: userMail?._id
|
205
|
+
let userDefPayload = {
|
206
|
+
email: 'ccci_integrator@gmail.com',
|
207
|
+
password: '$2a$12$Q.h3Q9IN6vsIxGBa/EgfOOABeXTcwxt4t9cu4nqAK.nczGRRtZJUS',
|
208
|
+
temporaryPassword: 'P@ssw0rd123',
|
209
|
+
firstName: 'Androi',
|
210
|
+
lastName: 'Pamisaran',
|
211
|
+
adminScopes: [],
|
212
|
+
createdAt: new Date(),
|
213
|
+
updatedAt: new Date()
|
290
214
|
};
|
291
215
|
|
292
|
-
let [
|
293
|
-
where: {
|
294
|
-
defaults:
|
295
|
-
});
|
216
|
+
let [userDefault, createdUser] = await Users.findOrCreate({
|
217
|
+
where: { email: userDefPayload.email },
|
218
|
+
defaults: userDefPayload
|
219
|
+
});
|
220
|
+
|
221
|
+
const acadYearApi = await api.AcademicYear()
|
222
|
+
const userMail = await Users.findOne({ where: { email: 'ccci_integrator@gmail.com' } });
|
296
223
|
|
297
224
|
let createdCounter = 0
|
298
225
|
let errorCounter = 0
|
299
|
-
let uniqueErrors = new Set()
|
226
|
+
let uniqueErrors = new Set()
|
227
|
+
|
228
|
+
const { acadYearResult, currentSchoolYear } = acadYearApi;
|
229
|
+
|
300
230
|
|
301
231
|
let uCode = new Set()
|
302
|
-
let
|
232
|
+
let uDesc = new Set()
|
303
233
|
|
304
|
-
let
|
234
|
+
let newYears = []
|
305
235
|
|
306
|
-
const
|
307
|
-
const
|
236
|
+
const exYear = await Semesters.findAll()
|
237
|
+
const exYearMap = new Map(exYear.map(sem => [`[${sem.code}] ${sem.description}`, sem]))
|
238
|
+
|
308
239
|
|
309
|
-
for (let i = 0; i <
|
240
|
+
for (let i = 0; i < acadYearResult.length; i++){
|
310
241
|
try {
|
311
|
-
let
|
312
|
-
|
313
|
-
let campusMap = campusApi.find(a => a.id === _college?.campus_id)
|
314
|
-
|
315
|
-
let _campus = campusSeq.find(b => b.name === campusMap?.name)
|
242
|
+
let _acadyear = acadYearResult[i]
|
316
243
|
|
317
244
|
let modifiedById = userMail?._id
|
318
245
|
let createdById = userMail?._id
|
319
246
|
|
320
|
-
let name = _college?.name
|
321
|
-
let code = _college?.code
|
322
|
-
|
323
247
|
let migratedAt = new Date() //present date of the migration
|
324
|
-
let migratedTable = '
|
325
|
-
let referenceId =
|
248
|
+
let migratedTable = 'AcademicYears' // sql counterpart main table
|
249
|
+
let referenceId = _acadyear?.id // id of the data
|
326
250
|
let isMigrated = true
|
327
251
|
|
328
|
-
|
329
|
-
|
252
|
+
let code = _acadyear?.term
|
253
|
+
let description = _acadyear?.term
|
254
|
+
|
255
|
+
|
256
|
+
if(uCode.has(code) && uDesc.has(description)){
|
257
|
+
const errorMsg = `Duplicate Payload Found: [${code}] ${description}]`
|
330
258
|
if(!uniqueErrors.has(errorMsg)){
|
331
259
|
logger.error(`${errorCounter + 1}/${errorCounter + 1}: ${errorMsg}`)
|
332
260
|
uniqueErrors.add(errorMsg)
|
333
261
|
errorCounter++
|
334
262
|
}
|
335
263
|
}
|
336
|
-
else if (
|
337
|
-
const
|
338
|
-
const errorMsg = `Existing Data Found:[${
|
264
|
+
else if ( exYearMap.has(`[${code}] ${description}`)){
|
265
|
+
const exYear = exYearMap.get(`[${code}] ${description}`)
|
266
|
+
const errorMsg = `Existing Data Found:[${exYear.code}] ${exYear.description}]`
|
339
267
|
if(!uniqueErrors.has(errorMsg)){
|
340
268
|
logger.error(`${errorCounter + 1}/${errorCounter + 1}: ${errorMsg}`)
|
341
269
|
uniqueErrors.add(errorMsg)
|
@@ -344,20 +272,15 @@ const server = {
|
|
344
272
|
}
|
345
273
|
else{
|
346
274
|
uCode.add(code)
|
347
|
-
|
348
|
-
|
349
|
-
|
350
|
-
|
351
|
-
campusId: _campus?._id??campusDefault?._id,
|
275
|
+
uDesc.add(description)
|
276
|
+
newYears.push({
|
277
|
+
code,
|
278
|
+
description,
|
352
279
|
modifiedById,
|
353
280
|
createdById,
|
354
281
|
migratedAt,
|
355
282
|
migratedTable,
|
356
283
|
referenceId,
|
357
|
-
isMigrated,
|
358
|
-
migratedAt,
|
359
|
-
migratedTable,
|
360
|
-
referenceId,
|
361
284
|
isMigrated
|
362
285
|
})
|
363
286
|
}
|
@@ -368,31 +291,28 @@ const server = {
|
|
368
291
|
}
|
369
292
|
}
|
370
293
|
|
371
|
-
|
372
|
-
|
373
|
-
|
374
|
-
|
375
|
-
|
376
|
-
|
377
|
-
|
378
|
-
}
|
379
|
-
}
|
380
|
-
|
381
|
-
let itemLength = createdCounter + errorCounter;
|
294
|
+
if (newYears.length > 0) {
|
295
|
+
await Semesters.bulkCreate(newYears)
|
296
|
+
createdCounter += newYears.length
|
297
|
+
|
298
|
+
newYears.forEach((year, index) => {
|
299
|
+
logger.info(`${index + 1}/${index + 1}: New Semesters Years Record Created: [${year.code} - ${year.description}]`)
|
300
|
+
});
|
301
|
+
}
|
382
302
|
|
383
303
|
console.log("");
|
384
304
|
console.log("########################################################")
|
385
305
|
console.log("")
|
386
|
-
logger.info('
|
387
|
-
logger.info(`Total Successful
|
388
|
-
logger.info(`Total Existing
|
389
|
-
logger.info(`Total Records: ${
|
306
|
+
logger.info('Semesters Data Migration Completed');
|
307
|
+
logger.info(`Total Successful Semesters Records Created: ${createdCounter}/${createdCounter}`);
|
308
|
+
logger.info(`Total Existing Semesters Records: ${errorCounter}/${errorCounter}`);
|
309
|
+
logger.info(`Total Records: ${createdCounter + errorCounter}`);
|
390
310
|
console.log("")
|
391
311
|
console.log("########################################################")
|
392
312
|
console.log("")
|
393
313
|
|
394
314
|
let totalSummary = {
|
395
|
-
itemLength:
|
315
|
+
itemLength: createdCounter + errorCounter,
|
396
316
|
error: errorCounter,
|
397
317
|
success: createdCounter
|
398
318
|
}
|
@@ -405,48 +325,128 @@ const server = {
|
|
405
325
|
}
|
406
326
|
},
|
407
327
|
|
408
|
-
async
|
328
|
+
async Campus(){
|
409
329
|
try {
|
410
330
|
await db.sequelize.query('DROP FUNCTION IF EXISTS pg_temp.testfunc()');
|
411
|
-
|
412
331
|
console.log("");
|
413
332
|
console.log("########################################################")
|
414
|
-
console.log("
|
333
|
+
console.log(" Campuses Migration ")
|
415
334
|
console.log("########################################################")
|
416
335
|
console.log("");
|
417
336
|
|
418
337
|
const db_schema = schema
|
419
|
-
let maxIds = await
|
338
|
+
let maxIds = await Campuses.max('_id'); //Fetch maximum _id directly from the campuses model
|
339
|
+
let maxIdsSem = await Semesters.max('_id'); //Fetch maximum _id directly from the campuses model
|
340
|
+
let maxIdsUser = await Users.max('_id'); //Fetch maximum _id directly from the campuses model
|
341
|
+
|
420
342
|
let maxId = maxIds|| 0;
|
421
|
-
|
422
|
-
|
343
|
+
let maxIdSems = maxIdsSem || 0;
|
344
|
+
let maxIdUsers = maxIdsUser || 0;
|
345
|
+
|
346
|
+
await db.sequelize.query(`CREATE SEQUENCE IF NOT EXISTS ${db_schema}."Users__id_seq"`);
|
347
|
+
await db.sequelize.query(`ALTER SEQUENCE ${db_schema}."Users__id_seq" RESTART WITH ${maxIdUsers + 1}`);
|
348
|
+
|
349
|
+
await db.sequelize.query(`CREATE SEQUENCE IF NOT EXISTS ${db_schema}."Campuses__id_seq"`);
|
350
|
+
await db.sequelize.query(`ALTER SEQUENCE ${db_schema}."Campuses__id_seq" RESTART WITH ${maxId + 1}`);
|
351
|
+
|
352
|
+
await db.sequelize.query(`CREATE SEQUENCE IF NOT EXISTS ${db_schema}."Semesters__id_seq"`);
|
353
|
+
await db.sequelize.query(`ALTER SEQUENCE ${db_schema}."Semesters__id_seq" RESTART WITH ${maxIdSems + 1}`);
|
354
|
+
|
423
355
|
await db.sequelize.query(`DROP FUNCTION IF EXISTS ${db_schema}."pg_temp.testfunc()"`);
|
424
356
|
|
425
|
-
const departmentApi = await api.Department()
|
426
|
-
const campusApi = await api.Campus()
|
427
|
-
const collegeApi = await api.College()
|
428
|
-
const instructorApi = await api.Instructor()
|
429
357
|
|
430
|
-
|
431
|
-
|
432
|
-
|
433
|
-
|
434
|
-
|
435
|
-
|
358
|
+
|
359
|
+
let userDefPayload = {
|
360
|
+
email: 'ccci_integrator@gmail.com',
|
361
|
+
password: '$2a$12$Q.h3Q9IN6vsIxGBa/EgfOOABeXTcwxt4t9cu4nqAK.nczGRRtZJUS',
|
362
|
+
temporaryPassword: 'P@ssw0rd123',
|
363
|
+
firstName: 'Androi',
|
364
|
+
lastName: 'Pamisaran',
|
365
|
+
adminScopes: [],
|
366
|
+
createdAt: new Date(),
|
367
|
+
updatedAt: new Date()
|
368
|
+
};
|
436
369
|
|
437
|
-
let
|
438
|
-
|
439
|
-
|
440
|
-
|
441
|
-
|
442
|
-
|
370
|
+
let [userDefault, createdUser] = await Users.findOrCreate({
|
371
|
+
where: { email: userDefPayload.email },
|
372
|
+
defaults: userDefPayload
|
373
|
+
});
|
374
|
+
|
375
|
+
const userMail = await Users.findOne({ where: { email: 'ccci_integrator@gmail.com' } });
|
376
|
+
|
377
|
+
let yearDefPayload = {
|
378
|
+
from: 1799,
|
379
|
+
to: 1800,
|
380
|
+
modifiedById: userMail?._id,
|
381
|
+
createdById: userMail?._id,
|
382
|
+
default: false,
|
383
|
+
}
|
384
|
+
let [yeardef, createdyear] = await AcademicYears.findOrCreate({
|
385
|
+
where: {
|
386
|
+
from: yearDefPayload.from,
|
387
|
+
to: yearDefPayload.to,
|
388
|
+
},
|
389
|
+
defaults: yearDefPayload
|
390
|
+
});
|
391
|
+
|
392
|
+
// let semesterData = [
|
393
|
+
// {
|
394
|
+
// code: '1st Semester',
|
395
|
+
// description: '1st Semester',
|
396
|
+
// modifiedById: userMail?._id,
|
397
|
+
// createdById: userMail?._id
|
398
|
+
// },
|
399
|
+
// {
|
400
|
+
// code: '2nd Semester',
|
401
|
+
// description: '2nd Semester',
|
402
|
+
// modifiedById: userMail?._id,
|
403
|
+
// createdById: userMail?._id
|
404
|
+
// },
|
405
|
+
// {
|
406
|
+
// code: 'Summer',
|
407
|
+
// description: 'Summer',
|
408
|
+
// modifiedById: userMail?._id,
|
409
|
+
// createdById: userMail?._id
|
410
|
+
// },
|
411
|
+
// {
|
412
|
+
// code: 'School Year',
|
413
|
+
// description: 'School Year',
|
414
|
+
// modifiedById: userMail?._id,
|
415
|
+
// createdById: userMail?._id
|
416
|
+
// }
|
417
|
+
|
418
|
+
// ]
|
419
|
+
|
420
|
+
// for (let sem = 0; sem < semesterData.length; sem++) {
|
421
|
+
// const semesters = semesterData[sem];
|
422
|
+
|
423
|
+
// let semestersPayload = {
|
424
|
+
// code: semesters.code,
|
425
|
+
// description: semesters.description,
|
426
|
+
// modifiedById: userMail?._id,
|
427
|
+
// createdById: userMail?._id
|
428
|
+
// }
|
429
|
+
|
430
|
+
// let [semdefaults, semcreateddef] = await Semesters.findOrCreate({
|
431
|
+
// where: { code: semestersPayload.code},
|
432
|
+
// defaults: semestersPayload
|
433
|
+
// });
|
434
|
+
// }
|
435
|
+
|
436
|
+
const campusApi = await api.Campus()
|
437
|
+
|
438
|
+
let campusDefPayload = {
|
439
|
+
name: 'Campus Default',
|
440
|
+
code: 'DEF',
|
441
|
+
email: 'campus_default@gmail.com',
|
442
|
+
address: 'MSC',
|
443
443
|
modifiedById: userMail?._id,
|
444
444
|
createdById: userMail?._id
|
445
445
|
};
|
446
446
|
|
447
|
-
let [defaults, createddef] = await
|
448
|
-
where: { name:
|
449
|
-
defaults:
|
447
|
+
let [defaults, createddef] = await Campuses.findOrCreate({
|
448
|
+
where: { name: campusDefPayload.name, code: campusDefPayload.code},
|
449
|
+
defaults: campusDefPayload
|
450
450
|
});
|
451
451
|
|
452
452
|
let createdCounter = 0
|
@@ -455,33 +455,26 @@ const server = {
|
|
455
455
|
|
456
456
|
let uCode = new Set()
|
457
457
|
let uName = new Set()
|
458
|
-
let newAcadDept = []
|
459
|
-
const exAcadDept = await AcademicDepartments.findAll()
|
460
|
-
const exAcadDeptMap = new Map(exAcadDept.map(dept => [`[${dept.code}] - ${dept.name}`, dept]))
|
461
458
|
|
462
|
-
let
|
463
|
-
let uNameTwo = new Set()
|
464
|
-
let newAcadDeptTwo = []
|
465
|
-
const exAcadDeptTwo = await AcademicDepartments.findAll()
|
466
|
-
const exAcadDeptMapTwo = new Map(exAcadDeptTwo.map(dept => [`[${dept.code}] - ${dept.name}`, dept]))
|
467
|
-
|
459
|
+
let newCampus = []
|
468
460
|
|
469
|
-
|
461
|
+
const existingCampus = await Campuses.findAll()
|
462
|
+
const existingCampusMap = new Map(existingCampus.map(campus => [`[${campus.code}] - ${campus.name}`, campus]))
|
463
|
+
|
464
|
+
for (let i = 0; i < campusApi.length; i++){
|
470
465
|
try {
|
471
|
-
|
472
|
-
let
|
473
|
-
|
474
|
-
let _campus = campusApi.find(cam => cam.id === college?.campus_id)
|
475
|
-
let campus = campusSeq.find(camp => camp.code === _campus?.code)
|
476
|
-
let chairPersonDefault = 0
|
466
|
+
|
467
|
+
let _campus = campusApi[i]
|
468
|
+
|
477
469
|
let modifiedById = userMail?._id
|
478
470
|
let createdById = userMail?._id
|
479
|
-
|
480
|
-
let
|
471
|
+
|
472
|
+
let name = _campus?.name
|
473
|
+
let code = _campus?.code
|
481
474
|
|
482
475
|
let migratedAt = new Date() //present date of the migration
|
483
|
-
let migratedTable = '
|
484
|
-
let referenceId =
|
476
|
+
let migratedTable = 'Campuses' // sql counterpart main table
|
477
|
+
let referenceId = _campus?.id // id of the data
|
485
478
|
let isMigrated = true
|
486
479
|
|
487
480
|
if(uCode.has(code) && uName.has(name)){
|
@@ -492,9 +485,9 @@ const server = {
|
|
492
485
|
errorCounter++
|
493
486
|
}
|
494
487
|
}
|
495
|
-
else if (
|
496
|
-
const
|
497
|
-
const errorMsg = `Existing Data Found:[${
|
488
|
+
else if ( existingCampusMap.has(`[${code}] - ${name}`)){
|
489
|
+
const existingCampus = existingCampusMap.get(`[${code}] - ${name}`)
|
490
|
+
const errorMsg = `Existing Data Found:[${existingCampus.code}] - ${existingCampus.name}`
|
498
491
|
if(!uniqueErrors.has(errorMsg)){
|
499
492
|
logger.error(`${errorCounter + 1}/${errorCounter + 1}: ${errorMsg}`)
|
500
493
|
uniqueErrors.add(errorMsg)
|
@@ -504,11 +497,11 @@ const server = {
|
|
504
497
|
else{
|
505
498
|
uCode.add(code)
|
506
499
|
uName.add(name)
|
507
|
-
|
508
|
-
name:
|
509
|
-
code:
|
510
|
-
|
511
|
-
|
500
|
+
newCampus.push({
|
501
|
+
name: _campus?.name,
|
502
|
+
code: _campus?.code,
|
503
|
+
email: _campus?.email,
|
504
|
+
address: _campus?.address,
|
512
505
|
modifiedById,
|
513
506
|
createdById,
|
514
507
|
migratedAt,
|
@@ -517,166 +510,238 @@ const server = {
|
|
517
510
|
isMigrated
|
518
511
|
})
|
519
512
|
}
|
513
|
+
|
520
514
|
} catch (error) {
|
521
|
-
|
515
|
+
;
|
516
|
+
logger.error(`Error occurred: ${error.stack} ${error}`);
|
522
517
|
}
|
523
518
|
}
|
524
|
-
if (newAcadDept.length > 0) {
|
525
|
-
await AcademicDepartments.bulkCreate(newAcadDept)
|
526
|
-
createdCounter += newAcadDept.length
|
527
|
-
|
528
|
-
newAcadDept.forEach((dept, index) => {
|
529
|
-
logger.info(`${index + 1}/${index + 1}: New Academic Department Record Created: [${dept.code}], ${dept.name}`)
|
530
|
-
});
|
531
|
-
}
|
532
519
|
|
533
|
-
|
534
|
-
|
535
|
-
|
536
|
-
|
537
|
-
let instructor = instructorApi[j];
|
538
|
-
let modifiedById = userMail?._id
|
539
|
-
let createdById = userMail?._id
|
520
|
+
// bulk create new campus Records
|
521
|
+
if (newCampus.length > 0) {
|
522
|
+
await Campuses.bulkCreate(newCampus)
|
523
|
+
createdCounter += newCampus.length
|
540
524
|
|
541
|
-
|
525
|
+
newCampus.forEach((campus, index) => {
|
526
|
+
logger.info(`${index + 1}/${index + 1}: New Campus Record Created: [${campus.code}], ${campus.name}`)
|
527
|
+
});
|
528
|
+
}
|
542
529
|
|
543
|
-
|
530
|
+
console.log("");
|
531
|
+
console.log("########################################################")
|
532
|
+
console.log("")
|
533
|
+
logger.info('Campus Data Migration Completed');
|
534
|
+
logger.info(`Total Successful Campus Records Created: ${createdCounter}/${createdCounter}`);
|
535
|
+
logger.info(`Total Existing Campus Records: ${errorCounter}/${errorCounter}`);
|
536
|
+
logger.info(`Total Records: ${createdCounter + errorCounter}`);
|
537
|
+
console.log("")
|
538
|
+
console.log("########################################################")
|
539
|
+
console.log("")
|
544
540
|
|
545
|
-
|
541
|
+
let totalSummary = {
|
542
|
+
itemLength: createdCounter + errorCounter,
|
543
|
+
error: errorCounter,
|
544
|
+
success: createdCounter
|
545
|
+
}
|
546
|
+
return totalSummary
|
546
547
|
|
547
|
-
|
548
|
-
|
548
|
+
} catch (error) {
|
549
|
+
;
|
550
|
+
logger.error(`Error occurred: ${error.stack} ${error}`);
|
551
|
+
|
552
|
+
}
|
553
|
+
},
|
549
554
|
|
550
|
-
|
551
|
-
|
555
|
+
async College(){
|
556
|
+
try {
|
557
|
+
await db.sequelize.query('DROP FUNCTION IF EXISTS pg_temp.testfunc()');
|
552
558
|
|
553
|
-
|
559
|
+
console.log("");
|
560
|
+
console.log("########################################################")
|
561
|
+
console.log(" Colleges Migration ")
|
562
|
+
console.log("########################################################")
|
563
|
+
console.log("");
|
554
564
|
|
555
|
-
|
565
|
+
const db_schema = schema
|
566
|
+
let maxIds = await Colleges.max('_id'); // Fetch maximum _id directly from the Colleges model
|
567
|
+
let maxId = maxIds|| 0;
|
568
|
+
await db.sequelize.query(`CREATE SEQUENCE IF NOT EXISTS ${db_schema}."Colleges__id_seq"`);
|
569
|
+
await db.sequelize.query(`ALTER SEQUENCE ${db_schema}."Colleges__id_seq" RESTART WITH ${maxId + 1}`);
|
570
|
+
|
571
|
+
await db.sequelize.query(`DROP FUNCTION IF EXISTS ${db_schema}."pg_temp.testfunc()"`);
|
572
|
+
|
573
|
+
const collegeApi = await api.College()
|
574
|
+
const campusApi = await api.Campus()
|
575
|
+
|
576
|
+
const campusSeq = await Campuses.findAll()
|
577
|
+
const userMail = await Users.findOne({ where: { email: 'ccci_integrator@gmail.com' } });
|
578
|
+
const campusDefault = await Campuses.findOne({ where: { name: 'Campus Default' } });
|
579
|
+
|
580
|
+
let defaultPayload = {
|
581
|
+
name: 'Colleges Default',
|
582
|
+
code: 'DefCol',
|
583
|
+
campusId: campusDefault._id,
|
584
|
+
modifiedById: userMail?._id,
|
585
|
+
createdById: userMail?._id
|
586
|
+
};
|
587
|
+
|
588
|
+
let [defaults, createddef] = await Colleges.findOrCreate({
|
589
|
+
where: { name: defaultPayload.name, code: defaultPayload.code},
|
590
|
+
defaults: defaultPayload
|
591
|
+
});
|
592
|
+
|
593
|
+
let createdCounter = 0
|
594
|
+
let errorCounter = 0
|
595
|
+
let uniqueErrors = new Set()
|
596
|
+
|
597
|
+
let uCode = new Set()
|
598
|
+
let uName = new Set()
|
599
|
+
|
600
|
+
let newColleges = []
|
601
|
+
|
602
|
+
const existingCollege = await Colleges.findAll()
|
603
|
+
const existingCollegeMap = new Map(existingCollege.map(college => [`[${college.code}] - ${college.name}`, college]))
|
604
|
+
|
605
|
+
for (let i = 0; i < collegeApi.length; i++){
|
606
|
+
try {
|
607
|
+
let _college = collegeApi[i]
|
608
|
+
|
609
|
+
let campusMap = campusApi.find(a => a.id === _college?.campus_id)
|
610
|
+
|
611
|
+
let _campus = campusSeq.find(b => b.name === campusMap?.name)
|
612
|
+
|
613
|
+
let modifiedById = userMail?._id
|
614
|
+
let createdById = userMail?._id
|
615
|
+
|
616
|
+
let name = _college?.name
|
617
|
+
let code = _college?.code
|
618
|
+
|
619
|
+
let migratedAt = new Date() //present date of the migration
|
620
|
+
let migratedTable = 'Colleges' // sql counterpart main table
|
621
|
+
let referenceId = _college.id // id of the data
|
622
|
+
let isMigrated = true
|
623
|
+
|
624
|
+
if(uCode.has(code) && uName.has(name)){
|
556
625
|
const errorMsg = `Duplicate Payload Found: [${code}] - ${name}`
|
557
|
-
|
626
|
+
if(!uniqueErrors.has(errorMsg)){
|
558
627
|
logger.error(`${errorCounter + 1}/${errorCounter + 1}: ${errorMsg}`)
|
559
628
|
uniqueErrors.add(errorMsg)
|
560
629
|
errorCounter++
|
630
|
+
}
|
561
631
|
}
|
562
|
-
}
|
563
|
-
|
564
|
-
const
|
565
|
-
const errorMsg = `Existing Data Found:[${exAcadDeptTwo.code}] - ${exAcadDeptTwo.name}`
|
632
|
+
else if ( existingCollegeMap.has(`[${code}] - ${name}`)){
|
633
|
+
const existingCollege = existingCollegeMap.get(`[${code}] - ${name}`)
|
634
|
+
const errorMsg = `Existing Data Found:[${existingCollege.code}] - ${existingCollege.name}`
|
566
635
|
if(!uniqueErrors.has(errorMsg)){
|
567
|
-
|
568
|
-
|
569
|
-
|
636
|
+
logger.error(`${errorCounter + 1}/${errorCounter + 1}: ${errorMsg}`)
|
637
|
+
uniqueErrors.add(errorMsg)
|
638
|
+
errorCounter++
|
570
639
|
}
|
571
|
-
|
640
|
+
}
|
572
641
|
else{
|
573
|
-
|
574
|
-
|
575
|
-
|
576
|
-
name:
|
577
|
-
code: code,
|
642
|
+
uCode.add(code)
|
643
|
+
uName.add(name)
|
644
|
+
newColleges.push({
|
645
|
+
name: _college?.name,
|
646
|
+
code: _college?.code,
|
647
|
+
campusId: _campus?._id??campusDefault?._id,
|
578
648
|
modifiedById,
|
579
649
|
createdById,
|
580
|
-
|
581
|
-
|
582
|
-
|
650
|
+
migratedAt,
|
651
|
+
migratedTable,
|
652
|
+
referenceId,
|
653
|
+
isMigrated,
|
654
|
+
migratedAt,
|
655
|
+
migratedTable,
|
656
|
+
referenceId,
|
657
|
+
isMigrated
|
583
658
|
})
|
584
659
|
}
|
585
|
-
|
586
|
-
|
660
|
+
|
587
661
|
} catch (error) {
|
588
|
-
|
662
|
+
;
|
663
|
+
logger.error(`Error occurred: ${error.stack} ${error}`);
|
589
664
|
}
|
590
665
|
}
|
591
|
-
if (newAcadDeptTwo.length > 0) {
|
592
|
-
await AcademicDepartments.bulkCreate(newAcadDeptTwo)
|
593
|
-
createdCounter += newAcadDeptTwo.length
|
594
666
|
|
595
|
-
|
596
|
-
|
597
|
-
|
598
|
-
|
667
|
+
// bulk create new campus Records
|
668
|
+
if (newColleges.length > 0) {
|
669
|
+
await Colleges.bulkCreate(newColleges)
|
670
|
+
createdCounter += newColleges.length
|
671
|
+
|
672
|
+
newColleges.forEach((colleges, index) => {
|
673
|
+
logger.info(`${index + 1}/${index + 1}: New Colleges Record Created: [${colleges.code}], ${colleges.name}`)
|
674
|
+
});
|
675
|
+
}
|
676
|
+
|
677
|
+
let itemLength = createdCounter + errorCounter;
|
599
678
|
|
600
679
|
console.log("");
|
601
680
|
console.log("########################################################")
|
602
681
|
console.log("")
|
603
|
-
logger.info('
|
604
|
-
logger.info(`Total Successful
|
605
|
-
logger.info(`Total Existing
|
606
|
-
logger.info(`Total Records: ${
|
682
|
+
logger.info('College Data Migration Completed');
|
683
|
+
logger.info(`Total Successful College Records Created: ${createdCounter}/${createdCounter}`);
|
684
|
+
logger.info(`Total Existing College Records: ${errorCounter}/${errorCounter}`);
|
685
|
+
logger.info(`Total Records: ${itemLength}`)
|
607
686
|
console.log("")
|
608
687
|
console.log("########################################################")
|
609
688
|
console.log("")
|
610
689
|
|
611
690
|
let totalSummary = {
|
612
|
-
itemLength:
|
691
|
+
itemLength: itemLength,
|
613
692
|
error: errorCounter,
|
614
693
|
success: createdCounter
|
615
694
|
}
|
616
695
|
return totalSummary
|
617
696
|
|
618
697
|
} catch (error) {
|
619
|
-
|
620
|
-
|
698
|
+
;
|
699
|
+
logger.error(`Error occurred: ${error.stack} ${error}`);
|
700
|
+
|
621
701
|
}
|
622
702
|
},
|
623
703
|
|
624
|
-
async
|
625
|
-
let userIds = []
|
626
|
-
await db.sequelize.query('DROP FUNCTION IF EXISTS pg_temp.testfunc()');
|
627
|
-
|
704
|
+
async AcademicDepartment(){
|
628
705
|
try {
|
706
|
+
await db.sequelize.query('DROP FUNCTION IF EXISTS pg_temp.testfunc()');
|
707
|
+
|
629
708
|
console.log("");
|
630
709
|
console.log("########################################################")
|
631
|
-
console.log("
|
710
|
+
console.log(" Academic Departments Migration ")
|
632
711
|
console.log("########################################################")
|
633
712
|
console.log("");
|
634
713
|
|
635
714
|
const db_schema = schema
|
636
|
-
let maxIds = await
|
637
|
-
let maxIdsIns = await Instructors.max('_id'); //Fetch maximum _id directly from the Users model
|
638
|
-
|
639
|
-
// console.log('maxIdsIns :>> ', maxIdsIns);
|
640
|
-
|
715
|
+
let maxIds = await AcademicDepartments.max('_id'); // Fetch maximum _id directly from the AcademicDepartments model
|
641
716
|
let maxId = maxIds|| 0;
|
642
|
-
|
643
|
-
|
644
|
-
// console.log('maxIdIns :>> ', maxIdIns);
|
645
|
-
|
646
|
-
await db.sequelize.query(`CREATE SEQUENCE IF NOT EXISTS ${db_schema}."Users__id_seq"`);
|
647
|
-
await db.sequelize.query(`ALTER SEQUENCE ${db_schema}."Users__id_seq" RESTART WITH ${maxId + 1}`);
|
648
|
-
|
649
|
-
await db.sequelize.query(`CREATE SEQUENCE IF NOT EXISTS ${db_schema}."Instructors__id_seq"`);
|
650
|
-
await db.sequelize.query(`ALTER SEQUENCE ${db_schema}."Instructors__id_seq" RESTART WITH ${maxIdIns + 1}`);
|
717
|
+
await db.sequelize.query(`CREATE SEQUENCE IF NOT EXISTS ${db_schema}."AcademicDepartments__id_seq"`);
|
718
|
+
await db.sequelize.query(`ALTER SEQUENCE ${db_schema}."AcademicDepartments__id_seq" RESTART WITH ${maxId + 1}`);
|
651
719
|
await db.sequelize.query(`DROP FUNCTION IF EXISTS ${db_schema}."pg_temp.testfunc()"`);
|
652
720
|
|
653
|
-
const instructorApi = await api.Instructor()
|
654
721
|
const departmentApi = await api.Department()
|
722
|
+
const campusApi = await api.Campus()
|
723
|
+
const collegeApi = await api.College()
|
724
|
+
const instructorApi = await api.Instructor()
|
655
725
|
|
656
|
-
const departmentSeq = await AcademicDepartments.findAll()
|
657
726
|
const campusSeq = await Campuses.findAll()
|
658
|
-
const
|
659
|
-
const
|
660
|
-
|
661
|
-
const
|
662
|
-
|
663
|
-
|
664
|
-
const campusDefault = await Campuses.findOne({ where: { name: 'Campus Default' } });
|
665
|
-
const departmentDefault = await AcademicDepartments.findOne({ where: { name: 'AcademicDepartments Default' } });
|
666
|
-
|
727
|
+
const collegeSeq = await Colleges.findAll()
|
728
|
+
const departmentSeq = await AcademicDepartments.findAll()
|
729
|
+
const userMail = await Users.findOne({ where: { email: 'ccci_integrator@gmail.com' } });
|
730
|
+
const campusDefault = await Campuses.findOne({ where: { name: 'Campus Default' } });
|
731
|
+
const collegeDefault = await Colleges.findOne({ where: { name: 'Colleges Default' } });
|
732
|
+
|
667
733
|
let defaultPayload = {
|
668
|
-
|
669
|
-
|
670
|
-
|
671
|
-
|
672
|
-
|
673
|
-
campusId: campusDefault?._id,
|
734
|
+
name: 'AcademicDepartments Default',
|
735
|
+
code: 'AcadDeptDef',
|
736
|
+
campusId: campusDefault._id,
|
737
|
+
collegeId: collegeDefault._id,
|
738
|
+
chairPersonId: 99999,
|
674
739
|
modifiedById: userMail?._id,
|
675
740
|
createdById: userMail?._id
|
676
741
|
};
|
677
742
|
|
678
|
-
let [defaults, createddef] = await
|
679
|
-
where: {
|
743
|
+
let [defaults, createddef] = await AcademicDepartments.findOrCreate({
|
744
|
+
where: { name: defaultPayload.name, code: defaultPayload.code},
|
680
745
|
defaults: defaultPayload
|
681
746
|
});
|
682
747
|
|
@@ -684,8 +749,239 @@ const server = {
|
|
684
749
|
let errorCounter = 0
|
685
750
|
let uniqueErrors = new Set()
|
686
751
|
|
687
|
-
let
|
688
|
-
let
|
752
|
+
let uCode = new Set()
|
753
|
+
let uName = new Set()
|
754
|
+
let newAcadDept = []
|
755
|
+
const exAcadDept = await AcademicDepartments.findAll()
|
756
|
+
const exAcadDeptMap = new Map(exAcadDept.map(dept => [`[${dept.code}] - ${dept.name}`, dept]))
|
757
|
+
|
758
|
+
let uCodeTwo = new Set()
|
759
|
+
let uNameTwo = new Set()
|
760
|
+
let newAcadDeptTwo = []
|
761
|
+
const exAcadDeptTwo = await AcademicDepartments.findAll()
|
762
|
+
const exAcadDeptMapTwo = new Map(exAcadDeptTwo.map(dept => [`[${dept.code}] - ${dept.name}`, dept]))
|
763
|
+
|
764
|
+
|
765
|
+
for (let i = 0; i < departmentApi.length; i++){
|
766
|
+
try {
|
767
|
+
let _acadDept = departmentApi[i]
|
768
|
+
let _college = collegeSeq.find( col => col.code === _acadDept?.code)
|
769
|
+
let college = collegeApi.find( cols => cols.code === _acadDept?.code)
|
770
|
+
let _campus = campusApi.find(cam => cam.id === college?.campus_id)
|
771
|
+
let campus = campusSeq.find(camp => camp.code === _campus?.code)
|
772
|
+
let chairPersonDefault = 0
|
773
|
+
let modifiedById = userMail?._id
|
774
|
+
let createdById = userMail?._id
|
775
|
+
let name = _acadDept?.name
|
776
|
+
let code = _acadDept?.code
|
777
|
+
|
778
|
+
let migratedAt = new Date() //present date of the migration
|
779
|
+
let migratedTable = 'Departments' // sql counterpart main table
|
780
|
+
let referenceId = _acadDept.id // id of the data
|
781
|
+
let isMigrated = true
|
782
|
+
|
783
|
+
if(uCode.has(code) && uName.has(name)){
|
784
|
+
const errorMsg = `Duplicate Payload Found: [${code}] - ${name}`
|
785
|
+
if(!uniqueErrors.has(errorMsg)){
|
786
|
+
logger.error(`${errorCounter + 1}/${errorCounter + 1}: ${errorMsg}`)
|
787
|
+
uniqueErrors.add(errorMsg)
|
788
|
+
errorCounter++
|
789
|
+
}
|
790
|
+
}
|
791
|
+
else if ( exAcadDeptMap.has(`[${code}] - ${name}`)){
|
792
|
+
const exAcadDept = exAcadDeptMap.get(`[${code}] - ${name}`)
|
793
|
+
const errorMsg = `Existing Data Found:[${exAcadDept.code}] - ${exAcadDept.name}`
|
794
|
+
if(!uniqueErrors.has(errorMsg)){
|
795
|
+
logger.error(`${errorCounter + 1}/${errorCounter + 1}: ${errorMsg}`)
|
796
|
+
uniqueErrors.add(errorMsg)
|
797
|
+
errorCounter++
|
798
|
+
}
|
799
|
+
}
|
800
|
+
else{
|
801
|
+
uCode.add(code)
|
802
|
+
uName.add(name)
|
803
|
+
newAcadDept.push({
|
804
|
+
name: _acadDept?.name,
|
805
|
+
code: _acadDept?.code,
|
806
|
+
collegeId: _college?._id??collegeDefault?._id,
|
807
|
+
campusId: campus?._id??campusDefault?._id,
|
808
|
+
modifiedById,
|
809
|
+
createdById,
|
810
|
+
migratedAt,
|
811
|
+
migratedTable,
|
812
|
+
referenceId,
|
813
|
+
isMigrated
|
814
|
+
})
|
815
|
+
}
|
816
|
+
} catch (error) {
|
817
|
+
logger.error(`Error occurred: ${error.stack} ${error}`);
|
818
|
+
}
|
819
|
+
}
|
820
|
+
if (newAcadDept.length > 0) {
|
821
|
+
await AcademicDepartments.bulkCreate(newAcadDept)
|
822
|
+
createdCounter += newAcadDept.length
|
823
|
+
|
824
|
+
newAcadDept.forEach((dept, index) => {
|
825
|
+
logger.info(`${index + 1}/${index + 1}: New Academic Department Record Created: [${dept.code}], ${dept.name}`)
|
826
|
+
});
|
827
|
+
}
|
828
|
+
|
829
|
+
|
830
|
+
//additional departments from instructors api
|
831
|
+
for (let j = 0; j < instructorApi.length; j++) {
|
832
|
+
try {
|
833
|
+
let instructor = instructorApi[j];
|
834
|
+
let modifiedById = userMail?._id
|
835
|
+
let createdById = userMail?._id
|
836
|
+
|
837
|
+
let acadDepartmentMap = departmentApi.find(a => a.name === instructor?.department_name)
|
838
|
+
|
839
|
+
let _acadDepartment = departmentSeq.find(b => b.name === acadDepartmentMap?.name)
|
840
|
+
|
841
|
+
let campusMap = campusSeq.find(c => c._id === _acadDepartment?.campusId)
|
842
|
+
|
843
|
+
let campusDefault = "MSC - Boac Campus"
|
844
|
+
let _campusDefault = campusSeq.find(ccc => ccc.name === campusDefault)
|
845
|
+
|
846
|
+
let code = instructor?.department_name ?? 'CODE'
|
847
|
+
code = code.split(/\s+/).map((word) => word.charAt(0).toUpperCase()).join('')
|
848
|
+
|
849
|
+
let name = instructor?.department_name
|
850
|
+
|
851
|
+
if(uCodeTwo.has(code) && uNameTwo.has(name)){
|
852
|
+
const errorMsg = `Duplicate Payload Found: [${code}] - ${name}`
|
853
|
+
if(!uniqueErrors.has(errorMsg)){
|
854
|
+
logger.error(`${errorCounter + 1}/${errorCounter + 1}: ${errorMsg}`)
|
855
|
+
uniqueErrors.add(errorMsg)
|
856
|
+
errorCounter++
|
857
|
+
}
|
858
|
+
}
|
859
|
+
else if ( exAcadDeptMapTwo.has(`[${code}] - ${name}`)){
|
860
|
+
const exAcadDeptTwo = exAcadDeptMapTwo.get(`[${code}] - ${name}`)
|
861
|
+
const errorMsg = `Existing Data Found:[${exAcadDeptTwo.code}] - ${exAcadDeptTwo.name}`
|
862
|
+
if(!uniqueErrors.has(errorMsg)){
|
863
|
+
logger.error(`${errorCounter + 1}/${errorCounter + 1}: ${errorMsg}`)
|
864
|
+
uniqueErrors.add(errorMsg)
|
865
|
+
errorCounter++
|
866
|
+
}
|
867
|
+
}
|
868
|
+
else{
|
869
|
+
uCodeTwo.add(code)
|
870
|
+
uNameTwo.add(name)
|
871
|
+
newAcadDeptTwo.push({
|
872
|
+
name: instructor?.department_name,
|
873
|
+
code: code,
|
874
|
+
modifiedById,
|
875
|
+
createdById,
|
876
|
+
campusId: campusMap?._id??_campusDefault?._id,
|
877
|
+
collegeId: collegeDefault?._id,
|
878
|
+
|
879
|
+
})
|
880
|
+
}
|
881
|
+
|
882
|
+
|
883
|
+
} catch (error) {
|
884
|
+
logger.error(`Error occurred: ${error} ${error.stack}`);
|
885
|
+
}
|
886
|
+
}
|
887
|
+
if (newAcadDeptTwo.length > 0) {
|
888
|
+
await AcademicDepartments.bulkCreate(newAcadDeptTwo)
|
889
|
+
createdCounter += newAcadDeptTwo.length
|
890
|
+
|
891
|
+
newAcadDeptTwo.forEach((deptTwo, index) => {
|
892
|
+
logger.info(`${index + 1}/${index + 1}: New Academic Department Record Created: [${deptTwo.code}], ${deptTwo.name}`)
|
893
|
+
});
|
894
|
+
}
|
895
|
+
|
896
|
+
console.log("");
|
897
|
+
console.log("########################################################")
|
898
|
+
console.log("")
|
899
|
+
logger.info('Academic Department Data Migration Completed');
|
900
|
+
logger.info(`Total Successful Academic Department Records Created: ${createdCounter}/${createdCounter}`);
|
901
|
+
logger.info(`Total Existing Academic Department Records: ${errorCounter}/${errorCounter}`);
|
902
|
+
logger.info(`Total Records: ${createdCounter + errorCounter}`);
|
903
|
+
console.log("")
|
904
|
+
console.log("########################################################")
|
905
|
+
console.log("")
|
906
|
+
|
907
|
+
let totalSummary = {
|
908
|
+
itemLength: createdCounter + errorCounter,
|
909
|
+
error: errorCounter,
|
910
|
+
success: createdCounter
|
911
|
+
}
|
912
|
+
return totalSummary
|
913
|
+
|
914
|
+
} catch (error) {
|
915
|
+
logger.error(`Error occurred: ${error} ${error.stack}`);
|
916
|
+
logger.error(`Error occurredsss: ${error.stack}`);
|
917
|
+
}
|
918
|
+
},
|
919
|
+
|
920
|
+
async Instructor(){
|
921
|
+
let userIds = []
|
922
|
+
await db.sequelize.query('DROP FUNCTION IF EXISTS pg_temp.testfunc()');
|
923
|
+
|
924
|
+
try {
|
925
|
+
console.log("");
|
926
|
+
console.log("########################################################")
|
927
|
+
console.log(" Instructors Migrations ")
|
928
|
+
console.log("########################################################")
|
929
|
+
console.log("");
|
930
|
+
|
931
|
+
const db_schema = schema
|
932
|
+
let maxIds = await Users.max('_id'); //Fetch maximum _id directly from the Users model
|
933
|
+
let maxIdsIns = await Instructors.max('_id'); //Fetch maximum _id directly from the Users model
|
934
|
+
|
935
|
+
// console.log('maxIdsIns :>> ', maxIdsIns);
|
936
|
+
|
937
|
+
let maxId = maxIds|| 0;
|
938
|
+
let maxIdIns = maxIdsIns|| 0;
|
939
|
+
|
940
|
+
// console.log('maxIdIns :>> ', maxIdIns);
|
941
|
+
|
942
|
+
await db.sequelize.query(`CREATE SEQUENCE IF NOT EXISTS ${db_schema}."Users__id_seq"`);
|
943
|
+
await db.sequelize.query(`ALTER SEQUENCE ${db_schema}."Users__id_seq" RESTART WITH ${maxId + 1}`);
|
944
|
+
|
945
|
+
await db.sequelize.query(`CREATE SEQUENCE IF NOT EXISTS ${db_schema}."Instructors__id_seq"`);
|
946
|
+
await db.sequelize.query(`ALTER SEQUENCE ${db_schema}."Instructors__id_seq" RESTART WITH ${maxIdIns + 1}`);
|
947
|
+
await db.sequelize.query(`DROP FUNCTION IF EXISTS ${db_schema}."pg_temp.testfunc()"`);
|
948
|
+
|
949
|
+
const instructorApi = await api.Instructor()
|
950
|
+
const departmentApi = await api.Department()
|
951
|
+
|
952
|
+
const departmentSeq = await AcademicDepartments.findAll()
|
953
|
+
const campusSeq = await Campuses.findAll()
|
954
|
+
const employeeSeq = await Employees.findAll()
|
955
|
+
const userSeq = await Users.findAll()
|
956
|
+
|
957
|
+
const userMail = await Users.findOne({ where: { email: 'ccci_integrator@gmail.com' } });
|
958
|
+
if (!userMail){}
|
959
|
+
|
960
|
+
const campusDefault = await Campuses.findOne({ where: { name: 'Campus Default' } });
|
961
|
+
const departmentDefault = await AcademicDepartments.findOne({ where: { name: 'AcademicDepartments Default' } });
|
962
|
+
|
963
|
+
let defaultPayload = {
|
964
|
+
firstName: 'Instructor',
|
965
|
+
lastName: 'Default',
|
966
|
+
middleName: 'Migration',
|
967
|
+
employeeNumber: '_Instructor',
|
968
|
+
departmentId: departmentDefault?._id,
|
969
|
+
campusId: campusDefault?._id,
|
970
|
+
modifiedById: userMail?._id,
|
971
|
+
createdById: userMail?._id
|
972
|
+
};
|
973
|
+
|
974
|
+
let [defaults, createddef] = await Instructors.findOrCreate({
|
975
|
+
where: { employeeNumber: defaultPayload.employeeNumber, lastName: defaultPayload.lastName},
|
976
|
+
defaults: defaultPayload
|
977
|
+
});
|
978
|
+
|
979
|
+
let createdCounter = 0
|
980
|
+
let errorCounter = 0
|
981
|
+
let uniqueErrors = new Set()
|
982
|
+
|
983
|
+
let uEmail = new Set()
|
984
|
+
let uPass = new Set()
|
689
985
|
let uTPass = new Set()
|
690
986
|
let uULname = new Set()
|
691
987
|
let uUFname = new Set()
|
@@ -695,7 +991,8 @@ const server = {
|
|
695
991
|
let newUser = []
|
696
992
|
|
697
993
|
const exUser = await Users.findAll()
|
698
|
-
const exUserMap = new Map(exUser.map(usr => [
|
994
|
+
const exUserMap = new Map(exUser.map(usr => [`${usr.lastName}, ${usr.firstName} ${usr.middleName}`, usr]))
|
995
|
+
// const exUserMap = new Map(exUser.map(usr => [`[${usr.email} - ${usr.password} ${usr.temporaryPassword}] - ${usr.lastName}, ${usr.firstName} ${usr.middleName} ${usr.adminScopes}`, usr]))
|
699
996
|
|
700
997
|
let uDept = new Set()
|
701
998
|
let uCamp = new Set()
|
@@ -709,6 +1006,15 @@ const server = {
|
|
709
1006
|
const exInst = await Instructors.findAll()
|
710
1007
|
const exInstMap = new Map(exInst.map(inst => [`[${inst.employeeNumber}] - ${inst.lastName}, ${inst.firstName} ${inst.middleName} [${inst.departmentId}, ${inst.campusId}]` , inst]))
|
711
1008
|
|
1009
|
+
let uApplication = new Set()
|
1010
|
+
let uRole = new Set ()
|
1011
|
+
let uUser = new Set ()
|
1012
|
+
|
1013
|
+
let newUserRole = []
|
1014
|
+
|
1015
|
+
const exURole = await UserRoles.findAll()
|
1016
|
+
const exURoleMap = new Map (exURole.map( role => [`${role.applicationId} ${role.roleId} ${role.userId}`, role]))
|
1017
|
+
|
712
1018
|
for (let i = 0; i < instructorApi.length; i++){
|
713
1019
|
try {
|
714
1020
|
let _instructor = instructorApi[i]
|
@@ -732,17 +1038,6 @@ const server = {
|
|
732
1038
|
let campusDefault = "MSC - Boac Campus"
|
733
1039
|
let _campusDefault = campusSeq.find(ccc => ccc.name === campusDefault)
|
734
1040
|
|
735
|
-
let role = _instructor?.role
|
736
|
-
let isChairPerson = false
|
737
|
-
let isDean = false
|
738
|
-
|
739
|
-
if(role === "Program Chair"){
|
740
|
-
isChairPerson = true
|
741
|
-
}
|
742
|
-
if(role === "Dean"){
|
743
|
-
isDean = true
|
744
|
-
}
|
745
|
-
|
746
1041
|
let migratedAt = new Date() //present date of the migration
|
747
1042
|
let migratedTable = 'Instructors' // sql counterpart main table
|
748
1043
|
let referenceId = _instructor?.id // id of the data
|
@@ -763,27 +1058,62 @@ const server = {
|
|
763
1058
|
let getfNameU = _instructor?.first_name.split("")[0].toUpperCase()||""
|
764
1059
|
let getfNameL = _instructor?.first_name.split("")[0].toLowerCase()||""
|
765
1060
|
let getlName = _instructor?.last_name.toLowerCase().replace(/\s/g, '')?? ""
|
1061
|
+
let lastNameWithoutTitles = _instructor?.last_name.split(',')[0].toLowerCase().replace(/\s/g, '')?? ""
|
1062
|
+
let _lastName = _instructor?.last_name.split(',')[0].replace(/\s/g, '')?? ""
|
766
1063
|
|
767
|
-
|
768
|
-
let
|
1064
|
+
|
1065
|
+
let email = `${employeeNumber}.${getfNameL}${lastNameWithoutTitles}@mscmarinduque.edu.ph`
|
1066
|
+
let password = `${employeeNumber}${getfNameU}${lastNameWithoutTitles}`
|
769
1067
|
const hashedPassword = await bcrypt.hash(password, saltRounds);
|
770
1068
|
|
771
|
-
let temporaryPassword =
|
1069
|
+
let temporaryPassword = `${employeeNumber}${getfNameU}${lastNameWithoutTitles}`
|
772
1070
|
let adminScopes = []
|
773
1071
|
|
774
|
-
|
1072
|
+
const userApp = await Applications.findOne({ where: { name: "Learning Management System - Instructor" }})
|
775
1073
|
|
776
|
-
|
777
|
-
|
778
|
-
|
779
|
-
|
780
|
-
|
781
|
-
|
1074
|
+
let role = _instructor?.role
|
1075
|
+
let isChairPerson = false
|
1076
|
+
let isDean = false
|
1077
|
+
|
1078
|
+
if(role === "Program Chair"){
|
1079
|
+
isChairPerson = true
|
1080
|
+
}
|
1081
|
+
if(role === "Dean"){
|
1082
|
+
isDean = true
|
1083
|
+
}
|
1084
|
+
|
1085
|
+
let roleCategory
|
1086
|
+
|
1087
|
+
if (isDean === true){
|
1088
|
+
roleCategory = await Roles.findOne({where: {name: 'Dean'}})
|
1089
|
+
|
1090
|
+
}
|
1091
|
+
else if (isDean === true && departmentId){
|
1092
|
+
roleCategory = await Roles.findOne({where: {description: 'Access all sections under the department'}})
|
1093
|
+
}
|
1094
|
+
else{
|
1095
|
+
roleCategory = await Roles.findOne({where: {name: 'Instructor'}})
|
1096
|
+
}
|
1097
|
+
|
1098
|
+
let roleId = roleCategory?._id
|
1099
|
+
let applicationId = userApp?._id
|
1100
|
+
|
1101
|
+
|
1102
|
+
|
1103
|
+
|
1104
|
+
// console.log('userId :>> ', userId);
|
1105
|
+
|
1106
|
+
if(uULname.has(lastName) && uUFname.has(firstName)){
|
1107
|
+
const errorMsg = `Duplicate Payload Found: ${lastName}, ${firstName}`
|
1108
|
+
if(!uniqueErrors.has(errorMsg)){
|
1109
|
+
// logger.error(`${errorCounter + 1}/${errorCounter + 1}: ${errorMsg}`)
|
1110
|
+
uniqueErrors.add(errorMsg)
|
1111
|
+
// errorCounter++
|
782
1112
|
}
|
783
1113
|
}
|
784
|
-
else if (exUserMap.has(
|
785
|
-
const exUser = exUserMap.get(
|
786
|
-
const errorMsg = `Existing Data Found:
|
1114
|
+
else if (exUserMap.has(`${lastName}, ${firstName} ${middleName}`)){
|
1115
|
+
const exUser = exUserMap.get(`${lastName}, ${firstName} ${middleName}`)
|
1116
|
+
const errorMsg = `Existing Data Found: ${exUser.lastName}, ${exUser.firstName}`
|
787
1117
|
if(!uniqueErrors.has(errorMsg)){
|
788
1118
|
// logger.error(`${errorCounter + 1}/${errorCounter + 1}: ${errorMsg}`)
|
789
1119
|
uniqueErrors.add(errorMsg)
|
@@ -800,7 +1130,7 @@ const server = {
|
|
800
1130
|
uScopes.add(adminScopes)
|
801
1131
|
newUser.push({
|
802
1132
|
firstName: _instructor?.first_name,
|
803
|
-
lastName:
|
1133
|
+
lastName: _lastName,
|
804
1134
|
middleName: _instructor?.middle_name,
|
805
1135
|
password: hashedPassword,
|
806
1136
|
temporaryPassword: password,
|
@@ -814,7 +1144,24 @@ const server = {
|
|
814
1144
|
isMigrated,
|
815
1145
|
})
|
816
1146
|
}
|
817
|
-
|
1147
|
+
|
1148
|
+
//user roles creation
|
1149
|
+
if(
|
1150
|
+
uApplication.add(applicationId),
|
1151
|
+
uRole.add(roleId),
|
1152
|
+
uUser.add(userId)){
|
1153
|
+
newUserRole.push({
|
1154
|
+
applicationId,
|
1155
|
+
roleId,
|
1156
|
+
userId,
|
1157
|
+
migratedAt,
|
1158
|
+
migratedTable,
|
1159
|
+
isMigrated,
|
1160
|
+
})
|
1161
|
+
}
|
1162
|
+
|
1163
|
+
|
1164
|
+
//instructors creation
|
818
1165
|
if(uNum.has(employeeNumber) && uLname.has(lastName) && uFname.has(firstName) && uMname.has(middleName) && uDept.has(departmentId) && uCamp.has(campusId)){
|
819
1166
|
const errorMsg = `Duplicate Payload Found: [${employeeNumber}] - ${lastName}, ${firstName} ${middleName} [departmentId: ${departmentId}, campusId:${campusId}]`
|
820
1167
|
if(!uniqueErrors.has(errorMsg)){
|
@@ -841,7 +1188,7 @@ const server = {
|
|
841
1188
|
uCamp.add(campusId)
|
842
1189
|
newInstructor.push({
|
843
1190
|
firstName: _instructor?.first_name,
|
844
|
-
lastName:
|
1191
|
+
lastName: _lastName,
|
845
1192
|
middleName: _instructor?.middle_name,
|
846
1193
|
employeeNumber: _instructor?.faculty_id,
|
847
1194
|
departmentId: _acadDepartment?._id??departmentDefault?._id,
|
@@ -873,6 +1220,22 @@ const server = {
|
|
873
1220
|
// logger.info(`${index + 1}/${index + 1}: New Instructor User Record Created: [${user.email} - ${user.password} ${user.temporaryPassword}] - ${user.lastName}, ${user.firstName} ${user.middleName} ${user.adminScopes}`)
|
874
1221
|
});
|
875
1222
|
}
|
1223
|
+
|
1224
|
+
if (newUserRole.length > 0) {
|
1225
|
+
// Associate userIds with new instructors
|
1226
|
+
if(!newUserRole.userId){
|
1227
|
+
newUserRole = newUserRole.map((inst, index) => ({
|
1228
|
+
...inst,
|
1229
|
+
userId: userIds[index]
|
1230
|
+
}));
|
1231
|
+
}
|
1232
|
+
await UserRoles.bulkCreate(newUserRole);
|
1233
|
+
createdCounter += newUserRole.length;
|
1234
|
+
|
1235
|
+
newUserRole.forEach((inst, index) => {
|
1236
|
+
logger.info(`${index + 1}/${index + 1}: User Role Created: ${inst.applicationId} ${inst.roleId} ${inst.userId}`);
|
1237
|
+
});
|
1238
|
+
}
|
876
1239
|
|
877
1240
|
|
878
1241
|
if (newInstructor.length > 0) {
|
@@ -890,565 +1253,261 @@ const server = {
|
|
890
1253
|
logger.info(`${index + 1}/${index + 1}: New Instructor Record Created: [${inst.employeeNumber}] - ${inst.lastName}, ${inst.firstName} ${inst.middleName} [ departmentId: ${inst.departmentId}, campusId: ${inst.campusId}]`);
|
891
1254
|
});
|
892
1255
|
}
|
893
|
-
|
894
|
-
|
895
|
-
|
896
|
-
console.log("");
|
897
|
-
console.log("########################################################")
|
898
|
-
console.log("")
|
899
|
-
logger.info('Instructors Data Migration Completed');
|
900
|
-
logger.info(`Total Successful Instructors Records Created: ${createdCounter}/${createdCounter}`);
|
901
|
-
logger.info(`Total Existing Instructors Records: ${errorCounter}/${errorCounter}`);
|
902
|
-
logger.info(`Total Records: ${createdCounter + errorCounter}`);
|
903
|
-
console.log("")
|
904
|
-
console.log("########################################################")
|
905
|
-
console.log("")
|
906
|
-
|
907
|
-
let totalSummary = {
|
908
|
-
itemLength: createdCounter + errorCounter,
|
909
|
-
error: errorCounter,
|
910
|
-
success: createdCounter
|
911
|
-
}
|
912
|
-
return totalSummary
|
913
|
-
|
914
|
-
} catch (error) {
|
915
|
-
;
|
916
|
-
logger.error(`Error occurred: ${error} ${error.stack} `);
|
917
|
-
|
918
|
-
}
|
919
|
-
},
|
920
|
-
|
921
|
-
async AcadDeptInstructor(){
|
922
|
-
try {
|
923
|
-
await db.sequelize.query('DROP FUNCTION IF EXISTS pg_temp.testfunc()');
|
924
|
-
|
925
|
-
console.log("");
|
926
|
-
console.log("########################################################")
|
927
|
-
console.log(" Academic Department Instructors Migrations ")
|
928
|
-
console.log("########################################################")
|
929
|
-
console.log("");
|
930
|
-
|
931
|
-
const db_schema = schema
|
932
|
-
let maxIds = await AcademicDepartmentInstructors.max('_id'); //Fetch maximum _id directly from the Users model
|
933
|
-
let maxId = maxIds|| 0;
|
934
|
-
await db.sequelize.query(`CREATE SEQUENCE IF NOT EXISTS ${db_schema}."AcademicDepartmentInstructors__id_seq"`);
|
935
|
-
await db.sequelize.query(`ALTER SEQUENCE ${db_schema}."AcademicDepartmentInstructors__id_seq" RESTART WITH ${maxId + 1}`);
|
936
|
-
await db.sequelize.query(`DROP FUNCTION IF EXISTS ${db_schema}."pg_temp.testfunc()"`);
|
937
|
-
|
938
|
-
const instructorApi = await api.Instructor()
|
939
|
-
|
940
|
-
const instructorSeq = await Instructors.findAll()
|
941
|
-
const departmentSeq = await AcademicDepartments.findAll()
|
942
|
-
|
943
|
-
const userMail = await Users.findOne({ where: { email: 'ccci_integrator@gmail.com' } });
|
944
|
-
if (!userMail){}
|
945
|
-
|
946
|
-
let createdCounter = 0
|
947
|
-
let errorCounter = 0
|
948
|
-
let uniqueErrors = new Set()
|
949
|
-
|
950
|
-
for(let i = 0; i < instructorApi.length; i++){
|
951
|
-
try {
|
952
|
-
let instructor = instructorApi[i]
|
953
|
-
|
954
|
-
let _instructor = instructorSeq.find(num => num.employeeNumber === instructor?.faculty_id)
|
955
|
-
let _department = departmentSeq.find(dep => dep._id === _instructor?.departmentId)
|
956
|
-
|
957
|
-
let migratedAt = new Date() //present date of the migration
|
958
|
-
let migratedTable = 'Instructors' // sql counterpart main table
|
959
|
-
let referenceId = _instructor?.id // id of the data
|
960
|
-
let isMigrated = true
|
961
|
-
|
962
|
-
let modifiedById = userMail._id
|
963
|
-
let createdById = userMail._id
|
964
|
-
|
965
|
-
let [record, created] = await AcademicDepartmentInstructors.findOrCreate({
|
966
|
-
where:{
|
967
|
-
instructorId: _instructor?._id,
|
968
|
-
academicDepartmentId: _department?._id,
|
969
|
-
},
|
970
|
-
defaults:{
|
971
|
-
instructorId: _instructor?._id,
|
972
|
-
academicDepartmentId: _department?._id,
|
973
|
-
modifiedById,
|
974
|
-
createdById,
|
975
|
-
migratedAt,
|
976
|
-
migratedTable,
|
977
|
-
isMigrated,
|
978
|
-
}
|
979
|
-
})
|
980
|
-
if (created){
|
981
|
-
logger.info(`${createdCounter + 1}/${createdCounter + 1} New Academic Department Instructor Record Created: instructorId: ${record.instructorId}, academicDepartmentId: ${record.academicDepartmentId} `)
|
982
|
-
createdCounter++;
|
983
|
-
}
|
984
|
-
else {
|
985
|
-
const errorMsg = `Academic Department Instructor Record Already Exists: instructorId: ${record.instructorId}, academicDepartmentId: ${record.academicDepartmentId}`;
|
986
|
-
|
987
|
-
if (!uniqueErrors.has(errorMsg)) {
|
988
|
-
logger.error(`${errorCounter + 1}/${errorCounter + 1} ${errorMsg}`);
|
989
|
-
uniqueErrors.add(errorMsg);
|
990
|
-
errorCounter++;
|
991
|
-
}
|
992
|
-
|
993
|
-
}
|
994
|
-
} catch (error) {
|
995
|
-
logger.error(`Error occurred: ${error} ${error.stack}`);
|
996
|
-
}
|
997
|
-
}
|
998
|
-
let items = createdCounter + errorCounter
|
999
|
-
console.log("");
|
1000
|
-
console.log("########################################################")
|
1001
|
-
console.log("")
|
1002
|
-
logger.info('Academic Department Instructors Data Migration Completed');
|
1003
|
-
logger.info(`Total Successful Records Created: ${createdCounter}/${createdCounter}`);
|
1004
|
-
logger.info(`Total Existing Records: ${errorCounter}/${errorCounter}`);
|
1005
|
-
logger.info(`Total Record Fetched: ${items} `)
|
1006
|
-
console.log("")
|
1007
|
-
console.log("########################################################")
|
1008
|
-
console.log("")
|
1009
|
-
|
1010
|
-
let totalSummary = {
|
1011
|
-
itemLength: items,
|
1012
|
-
error: errorCounter,
|
1013
|
-
success: createdCounter
|
1014
|
-
}
|
1015
|
-
return totalSummary
|
1016
|
-
|
1017
|
-
} catch (error) {
|
1018
|
-
logger.error(`Error occurred: ${error} ${error.stack}`);
|
1019
|
-
}
|
1020
|
-
},
|
1021
|
-
|
1022
|
-
async Course(){
|
1023
|
-
try {
|
1024
|
-
await db.sequelize.query('DROP FUNCTION IF EXISTS pg_temp.testfunc()');
|
1025
|
-
|
1026
|
-
console.log("");
|
1027
|
-
console.log("########################################################")
|
1028
|
-
console.log(" Courses Migration ")
|
1029
|
-
console.log("########################################################")
|
1030
|
-
console.log("");
|
1031
|
-
|
1032
|
-
const db_schema = schema
|
1033
|
-
let maxIds = await Courses.max('_id'); //Fetch maximum _id directly from the Courses model
|
1034
|
-
let maxId = maxIds|| 0;
|
1035
|
-
await db.sequelize.query(`CREATE SEQUENCE IF NOT EXISTS ${db_schema}."Courses__id_seq"`);
|
1036
|
-
await db.sequelize.query(`ALTER SEQUENCE ${db_schema}."Courses__id_seq" RESTART WITH ${maxId + 1}`);
|
1037
|
-
await db.sequelize.query(`DROP FUNCTION IF EXISTS ${db_schema}."pg_temp.testfunc()"`);
|
1038
|
-
|
1039
|
-
const studentApi = (await api.Student()).data
|
1040
|
-
|
1041
|
-
const courseApi = await api.Course()
|
1042
|
-
const collegeApi = await api.College()
|
1043
|
-
const departmentApi = await api.Department()
|
1044
|
-
|
1045
|
-
const acadDeptSeq = await AcademicDepartments.findAll()
|
1046
|
-
|
1047
|
-
const campusSeq = await Campuses.findAll()
|
1048
|
-
const userMail = await Users.findOne({ where: { email: 'ccci_integrator@gmail.com' } });
|
1049
|
-
const campusDefault = await Campuses.findOne({ where: { name: 'Campus Default' } });
|
1050
|
-
const departmentDefault = await AcademicDepartments.findOne({ where: { name: 'AcademicDepartments Default' } });
|
1051
|
-
|
1052
|
-
let defaultPayload = {
|
1053
|
-
name: 'Course Default',
|
1054
|
-
code: 'CORDEF',
|
1055
|
-
major: 'Major Course',
|
1056
|
-
campusId: campusDefault._id,
|
1057
|
-
departmentId: departmentDefault._id,
|
1058
|
-
modifiedById: userMail?._id,
|
1059
|
-
createdById: userMail?._id
|
1060
|
-
};
|
1061
|
-
|
1062
|
-
let [defaults, createddef] = await Courses.findOrCreate({
|
1063
|
-
where: { name: defaultPayload.name, code: defaultPayload.code},
|
1064
|
-
defaults: defaultPayload
|
1065
|
-
});
|
1066
|
-
|
1067
|
-
|
1068
|
-
let createdCounter = 0
|
1069
|
-
let errorCounter = 0
|
1070
|
-
let uniqueErrors = new Set()
|
1071
|
-
|
1072
|
-
let uCode = new Set()
|
1073
|
-
let uName = new Set()
|
1074
|
-
let uMajor = new Set()
|
1075
|
-
let uCampus = new Set()
|
1076
|
-
let uDept = new Set()
|
1077
|
-
|
1078
|
-
let newCourse = []
|
1079
|
-
|
1080
|
-
const exCourse = await Courses.findAll()
|
1081
|
-
const exCourseMap = new Map(exCourse.map(course => [`[${course.code}] - ${course.name}, ${course.major} [${course.campusId}, ${course.departmentId}]`, course]))
|
1082
|
-
|
1083
|
-
|
1084
|
-
for (let i = 0; i < studentApi.length; i++){
|
1085
|
-
try {
|
1086
|
-
|
1087
|
-
let course = studentApi[i]
|
1088
|
-
let courseCode = courseApi.find(crs => crs.name === course?.course)
|
1089
|
-
let campus = campusSeq.find(camp => camp.name === course?.campus)
|
1090
|
-
|
1091
|
-
let college = collegeApi.find(col => col.name === course?.college)
|
1092
|
-
let department = departmentApi.find(dep => dep.name === college?.name)
|
1093
|
-
let _department = acadDeptSeq.find(ad => ad.name === department?.name)
|
1094
|
-
|
1095
|
-
let modifiedById = userMail?._id
|
1096
|
-
let createdById = userMail?._id
|
1097
|
-
|
1098
|
-
let name = course?.course
|
1099
|
-
let code = courseCode?.code
|
1100
|
-
let major = course?.major
|
1101
|
-
let campusId = campus?._id??null
|
1102
|
-
let departmentId = _department?._id??null
|
1103
|
-
|
1104
|
-
let migratedAt = new Date() //present date of the migration
|
1105
|
-
let migratedTable = 'Courses' // sql counterpart main table
|
1106
|
-
let referenceId = courseCode?.id // id of the data
|
1107
|
-
let isMigrated = true
|
1108
|
-
|
1109
|
-
|
1110
|
-
if(uCode.has(code) && uName.has(name) && uMajor.has(major) && uCampus.has(campusId) && uDept.has(departmentId)){
|
1111
|
-
const errorMsg = `Duplicate Payload Found: [${code}] - ${name}, ${major} [campusId: ${campusId}, academicDepartmentId: ${departmentId}]`
|
1112
|
-
if(!uniqueErrors.has(errorMsg)){
|
1113
|
-
logger.error(`${errorCounter + 1}/${errorCounter + 1}: ${errorMsg}`)
|
1114
|
-
uniqueErrors.add(errorMsg)
|
1115
|
-
errorCounter++
|
1116
|
-
}
|
1117
|
-
}
|
1118
|
-
else if ( exCourseMap.has(`[${code}] - ${name}, ${major} [${campusId}, ${departmentId}]`)){
|
1119
|
-
const exCourse = exCourseMap.get(`[${code}] - ${name}, ${major} [${campusId}, ${departmentId}]`)
|
1120
|
-
const errorMsg = `Existing Data Found: [${exCourse.code}] - ${exCourse.name}, ${exCourse.major} [campusId: ${exCourse.campusId}, academicDepartmentId: ${exCourse.departmentId}]`
|
1121
|
-
if(!uniqueErrors.has(errorMsg)){
|
1122
|
-
logger.error(`${errorCounter + 1}/${errorCounter + 1}: ${errorMsg}`)
|
1123
|
-
uniqueErrors.add(errorMsg)
|
1124
|
-
errorCounter++
|
1125
|
-
}
|
1126
|
-
}
|
1127
|
-
else{
|
1128
|
-
uCode.add(code)
|
1129
|
-
uName.add(name)
|
1130
|
-
uMajor.add(major)
|
1131
|
-
uCampus.add(campusId)
|
1132
|
-
uDept.add(departmentId)
|
1133
|
-
newCourse.push({
|
1134
|
-
name: course?.course,
|
1135
|
-
code: courseCode?.code,
|
1136
|
-
major: course?.major,
|
1137
|
-
campusId: campus?._id??campusDefault?._id,
|
1138
|
-
departmentId: _department?._id??departmentDefault?._id,
|
1139
|
-
modifiedById,
|
1140
|
-
createdById,
|
1141
|
-
migratedAt,
|
1142
|
-
migratedTable,
|
1143
|
-
referenceId,
|
1144
|
-
isMigrated
|
1145
|
-
})
|
1146
|
-
}
|
1147
|
-
|
1148
|
-
} catch (error) {
|
1149
|
-
;
|
1150
|
-
logger.error(`Error occurred: ${error.stack} ${error}`);
|
1151
|
-
}
|
1152
|
-
}
|
1153
|
-
|
1154
|
-
if (newCourse.length > 0) {
|
1155
|
-
await Courses.bulkCreate(newCourse)
|
1156
|
-
createdCounter += newCourse.length
|
1157
|
-
|
1158
|
-
newCourse.forEach((course, index) => {
|
1159
|
-
logger.info(`${index + 1}/${index + 1}: New Courses Record Created: [${course.code}] - ${course.name}, ${course.major} [courseId: ${course.campusId}, academicDepartmentId: ${course.departmentId}]`)
|
1160
|
-
});
|
1161
|
-
}
|
1256
|
+
|
1257
|
+
|
1162
1258
|
|
1163
1259
|
|
1164
1260
|
console.log("");
|
1165
1261
|
console.log("########################################################")
|
1166
1262
|
console.log("")
|
1167
|
-
logger.info('
|
1168
|
-
logger.info(`Total Successful
|
1169
|
-
logger.info(`Total Existing
|
1263
|
+
logger.info('Instructors Data Migration Completed');
|
1264
|
+
logger.info(`Total Successful Instructors Records Created: ${createdCounter}/${createdCounter}`);
|
1265
|
+
logger.info(`Total Existing Instructors Records: ${errorCounter}/${errorCounter}`);
|
1266
|
+
logger.info(`Total Records: ${createdCounter + errorCounter}`);
|
1170
1267
|
console.log("")
|
1171
1268
|
console.log("########################################################")
|
1172
1269
|
console.log("")
|
1173
1270
|
|
1174
1271
|
let totalSummary = {
|
1175
|
-
itemLength:
|
1272
|
+
itemLength: createdCounter + errorCounter,
|
1176
1273
|
error: errorCounter,
|
1177
1274
|
success: createdCounter
|
1178
1275
|
}
|
1179
|
-
|
1180
|
-
uniqueErrors.clear();
|
1181
|
-
|
1182
1276
|
return totalSummary
|
1183
|
-
|
1277
|
+
|
1184
1278
|
} catch (error) {
|
1185
1279
|
;
|
1186
|
-
logger.error(`Error occurred: ${error
|
1280
|
+
logger.error(`Error occurred: ${error} ${error.stack} `);
|
1281
|
+
|
1187
1282
|
}
|
1188
1283
|
},
|
1189
1284
|
|
1190
|
-
async
|
1285
|
+
async AcadDeptInstructor(){
|
1191
1286
|
try {
|
1192
1287
|
await db.sequelize.query('DROP FUNCTION IF EXISTS pg_temp.testfunc()');
|
1193
1288
|
|
1194
1289
|
console.log("");
|
1195
1290
|
console.log("########################################################")
|
1196
|
-
console.log("
|
1291
|
+
console.log(" Academic Department Instructors Migrations ")
|
1197
1292
|
console.log("########################################################")
|
1198
1293
|
console.log("");
|
1199
|
-
|
1294
|
+
|
1200
1295
|
const db_schema = schema
|
1201
|
-
let maxIds = await
|
1296
|
+
let maxIds = await AcademicDepartmentInstructors.max('_id'); //Fetch maximum _id directly from the Users model
|
1202
1297
|
let maxId = maxIds|| 0;
|
1203
|
-
await db.sequelize.query(`CREATE SEQUENCE IF NOT EXISTS ${db_schema}."
|
1204
|
-
await db.sequelize.query(`ALTER SEQUENCE ${db_schema}."
|
1298
|
+
await db.sequelize.query(`CREATE SEQUENCE IF NOT EXISTS ${db_schema}."AcademicDepartmentInstructors__id_seq"`);
|
1299
|
+
await db.sequelize.query(`ALTER SEQUENCE ${db_schema}."AcademicDepartmentInstructors__id_seq" RESTART WITH ${maxId + 1}`);
|
1205
1300
|
await db.sequelize.query(`DROP FUNCTION IF EXISTS ${db_schema}."pg_temp.testfunc()"`);
|
1206
1301
|
|
1207
|
-
const
|
1208
|
-
const roomApi = await api.Room()
|
1302
|
+
const instructorApi = await api.Instructor()
|
1209
1303
|
|
1210
|
-
const
|
1211
|
-
const campusSeq = await Campuses.findAll()
|
1304
|
+
const instructorSeq = await Instructors.findAll()
|
1212
1305
|
const departmentSeq = await AcademicDepartments.findAll()
|
1213
1306
|
|
1214
|
-
const userMail = await Users.findOne({ where: { email: 'ccci_integrator@gmail.com' } });
|
1215
|
-
|
1216
|
-
|
1217
|
-
let defaultPayload = {
|
1218
|
-
name: 'Rooms Default',
|
1219
|
-
campusId: campusesDefault._id,
|
1220
|
-
capacity: 40,
|
1221
|
-
modifiedById: userMail?._id,
|
1222
|
-
createdById: userMail?._id
|
1223
|
-
};
|
1224
|
-
|
1225
|
-
let [defaults, createddef] = await Rooms.findOrCreate({
|
1226
|
-
where: { name: defaultPayload.name},
|
1227
|
-
defaults: defaultPayload
|
1228
|
-
});
|
1307
|
+
const userMail = await Users.findOne({ where: { email: 'ccci_integrator@gmail.com' } });
|
1308
|
+
if (!userMail){}
|
1229
1309
|
|
1230
1310
|
let createdCounter = 0
|
1231
1311
|
let errorCounter = 0
|
1232
1312
|
let uniqueErrors = new Set()
|
1233
1313
|
|
1234
|
-
let
|
1235
|
-
let uCampus = new Set()
|
1236
|
-
|
1237
|
-
let newRoom = []
|
1238
|
-
|
1239
|
-
const exRoom = await Rooms.findAll()
|
1240
|
-
const exRoomMap = new Map(exRoom.map(room => [`[${room.name}] - ${room.campusId}`, room]))
|
1241
|
-
|
1242
|
-
|
1243
|
-
for (let i = 0; i < roomApi.length; i++){
|
1314
|
+
for(let i = 0; i < instructorApi.length; i++){
|
1244
1315
|
try {
|
1245
|
-
let
|
1246
|
-
|
1247
|
-
let _subject = subjectRoom.find(r => r.room_id === _room?.id)
|
1248
|
-
let _subjects = subjectSeq.find(s => s.name === _subject?.name)
|
1249
|
-
let _department = departmentSeq.find(dep => dep._id === _subjects?.departmentId)
|
1250
|
-
let _campus = campusSeq.find (cam => cam._id === _department?.campusId)
|
1251
|
-
|
1252
|
-
let capacity = 50
|
1253
|
-
let campusDefault = "MSC - Boac Campus"
|
1254
|
-
let _campusDefault = campusSeq.find(ccc => ccc.name === campusDefault)
|
1255
|
-
|
1256
|
-
// return console.log('campusDefault :>> ', campusDefault);
|
1316
|
+
let instructor = instructorApi[i]
|
1257
1317
|
|
1258
|
-
let
|
1259
|
-
let
|
1318
|
+
let _instructor = instructorSeq.find(num => num.employeeNumber === instructor?.faculty_id)
|
1319
|
+
let _department = departmentSeq.find(dep => dep._id === _instructor?.departmentId)
|
1260
1320
|
|
1261
1321
|
let migratedAt = new Date() //present date of the migration
|
1262
|
-
let migratedTable = '
|
1263
|
-
let referenceId =
|
1322
|
+
let migratedTable = 'Instructors' // sql counterpart main table
|
1323
|
+
let referenceId = _instructor?.id // id of the data
|
1264
1324
|
let isMigrated = true
|
1265
1325
|
|
1266
|
-
let
|
1267
|
-
let
|
1326
|
+
let modifiedById = userMail._id
|
1327
|
+
let createdById = userMail._id
|
1268
1328
|
|
1269
|
-
|
1270
|
-
|
1271
|
-
|
1272
|
-
|
1273
|
-
|
1274
|
-
|
1275
|
-
|
1276
|
-
|
1277
|
-
else if ( exRoomMap.has(`[${name}] - ${campusId}`)){
|
1278
|
-
const exRoom = exRoomMap.get(`[${name}] - ${campusId}`)
|
1279
|
-
const errorMsg = `Existing Data Found:[${exRoom.name}] - campusId: ${exRoom.campusId}`
|
1280
|
-
if(!uniqueErrors.has(errorMsg)){
|
1281
|
-
logger.error(`${errorCounter + 1}/${errorCounter + 1}: ${errorMsg}`)
|
1282
|
-
uniqueErrors.add(errorMsg)
|
1283
|
-
errorCounter++
|
1284
|
-
}
|
1285
|
-
}
|
1286
|
-
else{
|
1287
|
-
uName.add(name)
|
1288
|
-
uCampus.add(campusId)
|
1289
|
-
newRoom.push({
|
1290
|
-
name: _room?.name,
|
1291
|
-
campusId: _campus?._id??_campusDefault?._id??campusesDefault._id,
|
1292
|
-
capacity,
|
1329
|
+
let [record, created] = await AcademicDepartmentInstructors.findOrCreate({
|
1330
|
+
where:{
|
1331
|
+
instructorId: _instructor?._id,
|
1332
|
+
academicDepartmentId: _department?._id,
|
1333
|
+
},
|
1334
|
+
defaults:{
|
1335
|
+
instructorId: _instructor?._id,
|
1336
|
+
academicDepartmentId: _department?._id,
|
1293
1337
|
modifiedById,
|
1294
1338
|
createdById,
|
1295
1339
|
migratedAt,
|
1296
1340
|
migratedTable,
|
1297
|
-
|
1298
|
-
|
1299
|
-
|
1341
|
+
isMigrated,
|
1342
|
+
}
|
1343
|
+
})
|
1344
|
+
if (created){
|
1345
|
+
logger.info(`${createdCounter + 1}/${createdCounter + 1} New Academic Department Instructor Record Created: instructorId: ${record.instructorId}, academicDepartmentId: ${record.academicDepartmentId} `)
|
1346
|
+
createdCounter++;
|
1300
1347
|
}
|
1301
|
-
|
1302
|
-
|
1303
|
-
;
|
1304
|
-
logger.error(`Error occurred: ${error.stack} ${error}`);
|
1305
|
-
}
|
1306
|
-
}
|
1348
|
+
else {
|
1349
|
+
const errorMsg = `Academic Department Instructor Record Already Exists: instructorId: ${record.instructorId}, academicDepartmentId: ${record.academicDepartmentId}`;
|
1307
1350
|
|
1308
|
-
|
1309
|
-
|
1310
|
-
|
1311
|
-
|
1312
|
-
|
1313
|
-
logger.info(`${index + 1}/${index + 1}: New Rooms Record Created: [${room.name}], campusId: ${room.campusId}`)
|
1314
|
-
});
|
1315
|
-
}
|
1351
|
+
if (!uniqueErrors.has(errorMsg)) {
|
1352
|
+
logger.error(`${errorCounter + 1}/${errorCounter + 1} ${errorMsg}`);
|
1353
|
+
uniqueErrors.add(errorMsg);
|
1354
|
+
errorCounter++;
|
1355
|
+
}
|
1316
1356
|
|
1357
|
+
}
|
1358
|
+
} catch (error) {
|
1359
|
+
logger.error(`Error occurred: ${error} ${error.stack}`);
|
1360
|
+
}
|
1361
|
+
}
|
1362
|
+
let items = createdCounter + errorCounter
|
1317
1363
|
console.log("");
|
1318
1364
|
console.log("########################################################")
|
1319
1365
|
console.log("")
|
1320
|
-
logger.info('
|
1321
|
-
logger.info(`Total Successful
|
1322
|
-
logger.info(`Total Existing
|
1323
|
-
logger.info(`Total
|
1366
|
+
logger.info('Academic Department Instructors Data Migration Completed');
|
1367
|
+
logger.info(`Total Successful Records Created: ${createdCounter}/${createdCounter}`);
|
1368
|
+
logger.info(`Total Existing Records: ${errorCounter}/${errorCounter}`);
|
1369
|
+
logger.info(`Total Record Fetched: ${items} `)
|
1324
1370
|
console.log("")
|
1325
1371
|
console.log("########################################################")
|
1326
1372
|
console.log("")
|
1327
1373
|
|
1328
1374
|
let totalSummary = {
|
1329
|
-
itemLength:
|
1375
|
+
itemLength: items,
|
1330
1376
|
error: errorCounter,
|
1331
1377
|
success: createdCounter
|
1332
1378
|
}
|
1333
1379
|
return totalSummary
|
1334
1380
|
|
1335
1381
|
} catch (error) {
|
1336
|
-
logger.error(`Error occurred: ${error
|
1337
|
-
|
1382
|
+
logger.error(`Error occurred: ${error} ${error.stack}`);
|
1338
1383
|
}
|
1339
1384
|
},
|
1340
1385
|
|
1341
|
-
async
|
1386
|
+
async Course(){
|
1342
1387
|
try {
|
1343
1388
|
await db.sequelize.query('DROP FUNCTION IF EXISTS pg_temp.testfunc()');
|
1344
1389
|
|
1345
1390
|
console.log("");
|
1346
1391
|
console.log("########################################################")
|
1347
|
-
console.log("
|
1392
|
+
console.log(" Courses Migration ")
|
1348
1393
|
console.log("########################################################")
|
1349
1394
|
console.log("");
|
1350
1395
|
|
1351
1396
|
const db_schema = schema
|
1352
|
-
let maxIds = await
|
1397
|
+
let maxIds = await Courses.max('_id'); //Fetch maximum _id directly from the Courses model
|
1353
1398
|
let maxId = maxIds|| 0;
|
1354
|
-
await db.sequelize.query(`CREATE SEQUENCE IF NOT EXISTS ${db_schema}."
|
1355
|
-
await db.sequelize.query(`ALTER SEQUENCE ${db_schema}."
|
1399
|
+
await db.sequelize.query(`CREATE SEQUENCE IF NOT EXISTS ${db_schema}."Courses__id_seq"`);
|
1400
|
+
await db.sequelize.query(`ALTER SEQUENCE ${db_schema}."Courses__id_seq" RESTART WITH ${maxId + 1}`);
|
1356
1401
|
await db.sequelize.query(`DROP FUNCTION IF EXISTS ${db_schema}."pg_temp.testfunc()"`);
|
1357
1402
|
|
1403
|
+
const studentApi = (await api.Student()).data
|
1404
|
+
|
1405
|
+
const courseApi = await api.Course()
|
1406
|
+
const collegeApi = await api.College()
|
1407
|
+
const departmentApi = await api.Department()
|
1408
|
+
|
1409
|
+
const acadDeptSeq = await AcademicDepartments.findAll()
|
1358
1410
|
|
1359
|
-
|
1360
|
-
|
1361
|
-
|
1362
|
-
|
1363
|
-
|
1364
|
-
|
1365
|
-
|
1366
|
-
|
1367
|
-
|
1411
|
+
const campusSeq = await Campuses.findAll()
|
1412
|
+
const userMail = await Users.findOne({ where: { email: 'ccci_integrator@gmail.com' } });
|
1413
|
+
const campusDefault = await Campuses.findOne({ where: { name: 'Campus Default' } });
|
1414
|
+
const departmentDefault = await AcademicDepartments.findOne({ where: { name: 'AcademicDepartments Default' } });
|
1415
|
+
|
1416
|
+
let defaultPayload = {
|
1417
|
+
name: 'Course Default',
|
1418
|
+
code: 'CORDEF',
|
1419
|
+
major: 'Major Course',
|
1420
|
+
campusId: campusDefault._id,
|
1421
|
+
departmentId: departmentDefault._id,
|
1422
|
+
modifiedById: userMail?._id,
|
1423
|
+
createdById: userMail?._id
|
1368
1424
|
};
|
1369
1425
|
|
1370
|
-
let [
|
1371
|
-
where: {
|
1372
|
-
defaults:
|
1373
|
-
});
|
1426
|
+
let [defaults, createddef] = await Courses.findOrCreate({
|
1427
|
+
where: { name: defaultPayload.name, code: defaultPayload.code},
|
1428
|
+
defaults: defaultPayload
|
1429
|
+
});
|
1374
1430
|
|
1375
|
-
const acadYearApi = await api.AcademicYear()
|
1376
|
-
const userMail = await Users.findOne({ where: { email: 'ccci_integrator@gmail.com' } });
|
1377
1431
|
|
1378
1432
|
let createdCounter = 0
|
1379
1433
|
let errorCounter = 0
|
1380
1434
|
let uniqueErrors = new Set()
|
1381
1435
|
|
1382
|
-
|
1383
|
-
|
1384
|
-
|
1385
|
-
let
|
1386
|
-
let
|
1436
|
+
let uCode = new Set()
|
1437
|
+
let uName = new Set()
|
1438
|
+
let uMajor = new Set()
|
1439
|
+
let uCampus = new Set()
|
1440
|
+
let uDept = new Set()
|
1387
1441
|
|
1388
|
-
let
|
1442
|
+
let newCourse = []
|
1389
1443
|
|
1390
|
-
const
|
1391
|
-
const
|
1444
|
+
const exCourse = await Courses.findAll()
|
1445
|
+
const exCourseMap = new Map(exCourse.map(course => [`[${course.code}] - ${course.name}, ${course.major} [${course.campusId}, ${course.departmentId}]`, course]))
|
1392
1446
|
|
1393
1447
|
|
1394
|
-
for (let i = 0; i <
|
1448
|
+
for (let i = 0; i < studentApi.length; i++){
|
1395
1449
|
try {
|
1396
|
-
let _acadyear = acadYearResult[i]
|
1397
|
-
// console.log('_acadyear :>> ', _acadyear);
|
1398
1450
|
|
1399
|
-
let
|
1400
|
-
|
1401
|
-
|
1402
|
-
from = /^\d+$/.test(from) ? parseInt(from, 10) : null;
|
1403
|
-
|
1404
|
-
let defaultDate = new Date()
|
1405
|
-
let currentYear = defaultDate.getFullYear()
|
1406
|
-
let previousYear = currentYear - 1
|
1451
|
+
let course = studentApi[i]
|
1452
|
+
let courseCode = courseApi.find(crs => crs.name === course?.course)
|
1453
|
+
let campus = campusSeq.find(camp => camp.name === course?.campus)
|
1407
1454
|
|
1408
|
-
let
|
1409
|
-
|
1455
|
+
let college = collegeApi.find(col => col.name === course?.college)
|
1456
|
+
let department = departmentApi.find(dep => dep.name === college?.name)
|
1457
|
+
let _department = acadDeptSeq.find(ad => ad.name === department?.name)
|
1410
1458
|
|
1411
1459
|
let modifiedById = userMail?._id
|
1412
1460
|
let createdById = userMail?._id
|
1413
1461
|
|
1414
|
-
|
1415
|
-
|
1416
|
-
|
1417
|
-
|
1462
|
+
let name = course?.course
|
1463
|
+
let code = courseCode?.code
|
1464
|
+
let major = course?.major
|
1465
|
+
let campusId = campus?._id??null
|
1466
|
+
let departmentId = _department?._id??null
|
1418
1467
|
|
1468
|
+
let migratedAt = new Date() //present date of the migration
|
1469
|
+
let migratedTable = 'Courses' // sql counterpart main table
|
1470
|
+
let referenceId = courseCode?.id // id of the data
|
1471
|
+
let isMigrated = true
|
1419
1472
|
|
1420
|
-
|
1421
|
-
|
1422
|
-
|
1423
|
-
|
1424
|
-
|
1425
|
-
|
1426
|
-
|
1427
|
-
|
1428
|
-
|
1429
|
-
|
1430
|
-
|
1431
|
-
|
1432
|
-
|
1433
|
-
|
1434
|
-
|
1473
|
+
|
1474
|
+
if(uCode.has(code) && uName.has(name) && uMajor.has(major) && uCampus.has(campusId) && uDept.has(departmentId)){
|
1475
|
+
const errorMsg = `Duplicate Payload Found: [${code}] - ${name}, ${major} [campusId: ${campusId}, academicDepartmentId: ${departmentId}]`
|
1476
|
+
if(!uniqueErrors.has(errorMsg)){
|
1477
|
+
logger.error(`${errorCounter + 1}/${errorCounter + 1}: ${errorMsg}`)
|
1478
|
+
uniqueErrors.add(errorMsg)
|
1479
|
+
errorCounter++
|
1480
|
+
}
|
1481
|
+
}
|
1482
|
+
else if ( exCourseMap.has(`[${code}] - ${name}, ${major} [${campusId}, ${departmentId}]`)){
|
1483
|
+
const exCourse = exCourseMap.get(`[${code}] - ${name}, ${major} [${campusId}, ${departmentId}]`)
|
1484
|
+
const errorMsg = `Existing Data Found: [${exCourse.code}] - ${exCourse.name}, ${exCourse.major} [campusId: ${exCourse.campusId}, academicDepartmentId: ${exCourse.departmentId}]`
|
1485
|
+
if(!uniqueErrors.has(errorMsg)){
|
1486
|
+
logger.error(`${errorCounter + 1}/${errorCounter + 1}: ${errorMsg}`)
|
1487
|
+
uniqueErrors.add(errorMsg)
|
1488
|
+
errorCounter++
|
1489
|
+
}
|
1490
|
+
}
|
1491
|
+
else{
|
1492
|
+
uCode.add(code)
|
1493
|
+
uName.add(name)
|
1494
|
+
uMajor.add(major)
|
1495
|
+
uCampus.add(campusId)
|
1496
|
+
uDept.add(departmentId)
|
1497
|
+
newCourse.push({
|
1498
|
+
name: course?.course,
|
1499
|
+
code: courseCode?.code,
|
1500
|
+
major: course?.major,
|
1501
|
+
campusId: campus?._id??campusDefault?._id,
|
1502
|
+
departmentId: _department?._id??departmentDefault?._id,
|
1503
|
+
modifiedById,
|
1504
|
+
createdById,
|
1505
|
+
migratedAt,
|
1506
|
+
migratedTable,
|
1507
|
+
referenceId,
|
1508
|
+
isMigrated
|
1509
|
+
})
|
1435
1510
|
}
|
1436
|
-
}
|
1437
|
-
else{
|
1438
|
-
uFrom.add(from)
|
1439
|
-
uTo.add(to)
|
1440
|
-
newYears.push({
|
1441
|
-
from,
|
1442
|
-
to,
|
1443
|
-
modifiedById,
|
1444
|
-
createdById,
|
1445
|
-
default: isDefault,
|
1446
|
-
migratedAt,
|
1447
|
-
migratedTable,
|
1448
|
-
referenceId,
|
1449
|
-
isMigrated
|
1450
|
-
})
|
1451
|
-
}
|
1452
1511
|
|
1453
1512
|
} catch (error) {
|
1454
1513
|
;
|
@@ -1456,120 +1515,132 @@ const server = {
|
|
1456
1515
|
}
|
1457
1516
|
}
|
1458
1517
|
|
1459
|
-
if (
|
1460
|
-
await
|
1461
|
-
createdCounter +=
|
1518
|
+
if (newCourse.length > 0) {
|
1519
|
+
await Courses.bulkCreate(newCourse)
|
1520
|
+
createdCounter += newCourse.length
|
1462
1521
|
|
1463
|
-
|
1464
|
-
logger.info(`${index + 1}/${index + 1}: New
|
1522
|
+
newCourse.forEach((course, index) => {
|
1523
|
+
logger.info(`${index + 1}/${index + 1}: New Courses Record Created: [${course.code}] - ${course.name}, ${course.major} [courseId: ${course.campusId}, academicDepartmentId: ${course.departmentId}]`)
|
1465
1524
|
});
|
1466
1525
|
}
|
1467
1526
|
|
1527
|
+
|
1468
1528
|
console.log("");
|
1469
1529
|
console.log("########################################################")
|
1470
1530
|
console.log("")
|
1471
|
-
logger.info('
|
1472
|
-
logger.info(`Total Successful
|
1473
|
-
logger.info(`Total Existing
|
1474
|
-
logger.info(`Total Records: ${createdCounter + errorCounter}`);
|
1531
|
+
logger.info('Course Data Migration Completed');
|
1532
|
+
logger.info(`Total Successful Course Records Created: ${createdCounter}/${createdCounter}`);
|
1533
|
+
logger.info(`Total Existing Course Records: ${errorCounter}/${errorCounter}`);
|
1475
1534
|
console.log("")
|
1476
1535
|
console.log("########################################################")
|
1477
1536
|
console.log("")
|
1478
1537
|
|
1479
1538
|
let totalSummary = {
|
1480
|
-
itemLength:
|
1539
|
+
itemLength: courseApi.length,
|
1481
1540
|
error: errorCounter,
|
1482
1541
|
success: createdCounter
|
1483
1542
|
}
|
1484
|
-
return totalSummary
|
1485
1543
|
|
1544
|
+
uniqueErrors.clear();
|
1545
|
+
|
1546
|
+
return totalSummary
|
1547
|
+
|
1486
1548
|
} catch (error) {
|
1487
1549
|
;
|
1488
1550
|
logger.error(`Error occurred: ${error.stack} ${error}`);
|
1489
|
-
|
1490
1551
|
}
|
1491
1552
|
},
|
1492
1553
|
|
1493
|
-
async
|
1554
|
+
async Room(){
|
1494
1555
|
try {
|
1495
1556
|
await db.sequelize.query('DROP FUNCTION IF EXISTS pg_temp.testfunc()');
|
1496
1557
|
|
1497
1558
|
console.log("");
|
1498
1559
|
console.log("########################################################")
|
1499
|
-
console.log("
|
1560
|
+
console.log(" Rooms Migration ")
|
1500
1561
|
console.log("########################################################")
|
1501
1562
|
console.log("");
|
1502
1563
|
|
1503
1564
|
const db_schema = schema
|
1504
|
-
let maxIds = await
|
1565
|
+
let maxIds = await Rooms.max('_id'); // Fetch maximum _id directly from the Rooms model
|
1505
1566
|
let maxId = maxIds|| 0;
|
1506
|
-
await db.sequelize.query(`CREATE SEQUENCE IF NOT EXISTS ${db_schema}."
|
1507
|
-
await db.sequelize.query(`ALTER SEQUENCE ${db_schema}."
|
1567
|
+
await db.sequelize.query(`CREATE SEQUENCE IF NOT EXISTS ${db_schema}."Rooms__id_seq"`);
|
1568
|
+
await db.sequelize.query(`ALTER SEQUENCE ${db_schema}."Rooms__id_seq" RESTART WITH ${maxId + 1}`);
|
1508
1569
|
await db.sequelize.query(`DROP FUNCTION IF EXISTS ${db_schema}."pg_temp.testfunc()"`);
|
1509
1570
|
|
1571
|
+
const subjectRoom = await api.Subject()
|
1572
|
+
const roomApi = await api.Room()
|
1510
1573
|
|
1511
|
-
|
1512
|
-
|
1513
|
-
|
1514
|
-
|
1515
|
-
|
1516
|
-
|
1517
|
-
|
1518
|
-
|
1519
|
-
|
1574
|
+
const subjectSeq = await Subjects.findAll()
|
1575
|
+
const campusSeq = await Campuses.findAll()
|
1576
|
+
const departmentSeq = await AcademicDepartments.findAll()
|
1577
|
+
|
1578
|
+
const userMail = await Users.findOne({ where: { email: 'ccci_integrator@gmail.com' } });
|
1579
|
+
const campusesDefault = await Campuses.findOne({ where: { name: 'Campus Default' } });
|
1580
|
+
|
1581
|
+
let defaultPayload = {
|
1582
|
+
name: 'Rooms Default',
|
1583
|
+
campusId: campusesDefault._id,
|
1584
|
+
capacity: 40,
|
1585
|
+
modifiedById: userMail?._id,
|
1586
|
+
createdById: userMail?._id
|
1520
1587
|
};
|
1521
1588
|
|
1522
|
-
let [
|
1523
|
-
where: {
|
1524
|
-
defaults:
|
1525
|
-
});
|
1526
|
-
|
1527
|
-
const acadYearApi = await api.AcademicYear()
|
1528
|
-
const userMail = await Users.findOne({ where: { email: 'ccci_integrator@gmail.com' } });
|
1589
|
+
let [defaults, createddef] = await Rooms.findOrCreate({
|
1590
|
+
where: { name: defaultPayload.name},
|
1591
|
+
defaults: defaultPayload
|
1592
|
+
});
|
1529
1593
|
|
1530
1594
|
let createdCounter = 0
|
1531
1595
|
let errorCounter = 0
|
1532
1596
|
let uniqueErrors = new Set()
|
1533
1597
|
|
1534
|
-
|
1535
|
-
|
1536
|
-
|
1537
|
-
let uCode = new Set()
|
1538
|
-
let uDesc = new Set()
|
1598
|
+
let uName = new Set()
|
1599
|
+
let uCampus = new Set()
|
1539
1600
|
|
1540
|
-
let
|
1601
|
+
let newRoom = []
|
1541
1602
|
|
1542
|
-
const
|
1543
|
-
const
|
1603
|
+
const exRoom = await Rooms.findAll()
|
1604
|
+
const exRoomMap = new Map(exRoom.map(room => [`[${room.name}] - ${room.campusId}`, room]))
|
1544
1605
|
|
1545
1606
|
|
1546
|
-
for (let i = 0; i <
|
1607
|
+
for (let i = 0; i < roomApi.length; i++){
|
1547
1608
|
try {
|
1548
|
-
let
|
1609
|
+
let _room = roomApi[i]
|
1610
|
+
|
1611
|
+
let _subject = subjectRoom.find(r => r.room_id === _room?.id)
|
1612
|
+
let _subjects = subjectSeq.find(s => s.name === _subject?.name)
|
1613
|
+
let _department = departmentSeq.find(dep => dep._id === _subjects?.departmentId)
|
1614
|
+
let _campus = campusSeq.find (cam => cam._id === _department?.campusId)
|
1615
|
+
|
1616
|
+
let capacity = 50
|
1617
|
+
let campusDefault = "MSC - Boac Campus"
|
1618
|
+
let _campusDefault = campusSeq.find(ccc => ccc.name === campusDefault)
|
1619
|
+
|
1620
|
+
// return console.log('campusDefault :>> ', campusDefault);
|
1549
1621
|
|
1550
1622
|
let modifiedById = userMail?._id
|
1551
1623
|
let createdById = userMail?._id
|
1552
1624
|
|
1553
1625
|
let migratedAt = new Date() //present date of the migration
|
1554
|
-
let migratedTable = '
|
1555
|
-
let referenceId =
|
1626
|
+
let migratedTable = 'Rooms' // sql counterpart main table
|
1627
|
+
let referenceId = _room?.id // id of the data
|
1556
1628
|
let isMigrated = true
|
1557
1629
|
|
1558
|
-
let
|
1559
|
-
let
|
1560
|
-
|
1630
|
+
let name = _room?.name
|
1631
|
+
let campusId = _campus?._id??_campusDefault?._id??null
|
1561
1632
|
|
1562
|
-
if(
|
1563
|
-
const errorMsg = `Duplicate Payload Found: [${
|
1633
|
+
if(uName.has(name) && uCampus.has(campusId)){
|
1634
|
+
const errorMsg = `Duplicate Payload Found: [${name}] - campusId: ${campusId}`
|
1564
1635
|
if(!uniqueErrors.has(errorMsg)){
|
1565
1636
|
logger.error(`${errorCounter + 1}/${errorCounter + 1}: ${errorMsg}`)
|
1566
1637
|
uniqueErrors.add(errorMsg)
|
1567
1638
|
errorCounter++
|
1568
1639
|
}
|
1569
1640
|
}
|
1570
|
-
else if (
|
1571
|
-
const
|
1572
|
-
const errorMsg = `Existing Data Found:[${
|
1641
|
+
else if ( exRoomMap.has(`[${name}] - ${campusId}`)){
|
1642
|
+
const exRoom = exRoomMap.get(`[${name}] - ${campusId}`)
|
1643
|
+
const errorMsg = `Existing Data Found:[${exRoom.name}] - campusId: ${exRoom.campusId}`
|
1573
1644
|
if(!uniqueErrors.has(errorMsg)){
|
1574
1645
|
logger.error(`${errorCounter + 1}/${errorCounter + 1}: ${errorMsg}`)
|
1575
1646
|
uniqueErrors.add(errorMsg)
|
@@ -1577,11 +1648,12 @@ const server = {
|
|
1577
1648
|
}
|
1578
1649
|
}
|
1579
1650
|
else{
|
1580
|
-
|
1581
|
-
|
1582
|
-
|
1583
|
-
|
1584
|
-
|
1651
|
+
uName.add(name)
|
1652
|
+
uCampus.add(campusId)
|
1653
|
+
newRoom.push({
|
1654
|
+
name: _room?.name,
|
1655
|
+
campusId: _campus?._id??_campusDefault?._id??campusesDefault._id,
|
1656
|
+
capacity,
|
1585
1657
|
modifiedById,
|
1586
1658
|
createdById,
|
1587
1659
|
migratedAt,
|
@@ -1597,21 +1669,21 @@ const server = {
|
|
1597
1669
|
}
|
1598
1670
|
}
|
1599
1671
|
|
1600
|
-
if (
|
1601
|
-
await
|
1602
|
-
createdCounter +=
|
1672
|
+
if (newRoom.length > 0) {
|
1673
|
+
await Rooms.bulkCreate(newRoom)
|
1674
|
+
createdCounter += newRoom.length
|
1603
1675
|
|
1604
|
-
|
1605
|
-
logger.info(`${index + 1}/${index + 1}: New
|
1676
|
+
newRoom.forEach((room, index) => {
|
1677
|
+
logger.info(`${index + 1}/${index + 1}: New Rooms Record Created: [${room.name}], campusId: ${room.campusId}`)
|
1606
1678
|
});
|
1607
1679
|
}
|
1608
1680
|
|
1609
1681
|
console.log("");
|
1610
1682
|
console.log("########################################################")
|
1611
1683
|
console.log("")
|
1612
|
-
logger.info('
|
1613
|
-
logger.info(`Total Successful
|
1614
|
-
logger.info(`Total Existing
|
1684
|
+
logger.info('Room Data Migration Completed');
|
1685
|
+
logger.info(`Total Successful Room Records Created: ${createdCounter}/${createdCounter}`);
|
1686
|
+
logger.info(`Total Existing Room Records: ${errorCounter}/${errorCounter}`);
|
1615
1687
|
logger.info(`Total Records: ${createdCounter + errorCounter}`);
|
1616
1688
|
console.log("")
|
1617
1689
|
console.log("########################################################")
|
@@ -1625,7 +1697,6 @@ const server = {
|
|
1625
1697
|
return totalSummary
|
1626
1698
|
|
1627
1699
|
} catch (error) {
|
1628
|
-
;
|
1629
1700
|
logger.error(`Error occurred: ${error.stack} ${error}`);
|
1630
1701
|
|
1631
1702
|
}
|
@@ -1994,6 +2065,8 @@ const server = {
|
|
1994
2065
|
const collegeSeq = await Colleges.findAll()
|
1995
2066
|
const semesterSeq = await Semesters.findAll()
|
1996
2067
|
const acadYearSeq = await AcademicYears.findAll()
|
2068
|
+
const userSeq = await Users.findAll()
|
2069
|
+
|
1997
2070
|
|
1998
2071
|
const userMail = await Users.findOne({ where: { email: 'ccci_integrator@gmail.com' } });
|
1999
2072
|
|
@@ -2036,6 +2109,15 @@ const server = {
|
|
2036
2109
|
const exUser = await Users.findAll()
|
2037
2110
|
const exUserMap = new Map(exUser.map(usr => [`[${usr.email} - ${usr.password} ${usr.temporaryPassword}] - ${usr.lastName}, ${usr.firstName} ${usr.middleName} ${usr.adminScopes}`, usr]))
|
2038
2111
|
|
2112
|
+
let uApplication = new Set()
|
2113
|
+
let uRole = new Set ()
|
2114
|
+
let uUser = new Set ()
|
2115
|
+
|
2116
|
+
let newUserRole = []
|
2117
|
+
|
2118
|
+
const exURole = await UserRoles.findAll()
|
2119
|
+
const exURoleMap = new Map (exURole.map( role => [`${role.applicationId} ${role.roleId} ${role.userId}`, role]))
|
2120
|
+
|
2039
2121
|
let uNum = new Set()
|
2040
2122
|
let uLname = new Set()
|
2041
2123
|
let uMname = new Set()
|
@@ -2100,9 +2182,15 @@ const server = {
|
|
2100
2182
|
let password = `${studentNumber}${getfNameU}${getlName}`
|
2101
2183
|
|
2102
2184
|
const hashedPassword = await bcrypt.hash(password, saltRounds);
|
2103
|
-
let temporaryPassword =
|
2185
|
+
let temporaryPassword = `${studentNumber}${getfNameU}${getlName}`
|
2104
2186
|
let adminScopes = []
|
2105
2187
|
|
2188
|
+
const roleSeq = await Roles.findOne({ where: { name: "Student" }})
|
2189
|
+
const userApp = await Applications.findOne({ where: { name: "Learning Management System - Student/Parent" }})
|
2190
|
+
|
2191
|
+
let roleId = roleSeq?._id
|
2192
|
+
let applicationId = userApp?._id
|
2193
|
+
|
2106
2194
|
if(uEmail.has(email) && uPass.has(password) && uTPass.has(temporaryPassword) && uULname.has(lastName) && uUFname.has(firstName) && uUMname.has(middleName) && uScopes.has(adminScopes)){
|
2107
2195
|
const errorMsg = `Duplicate Payload Found: [${email} - ${password} ${temporaryPassword}] - ${lastName}, ${firstName} ${middleName} ${adminScopes}`
|
2108
2196
|
if(!uniqueErrors.has(errorMsg)){
|
@@ -2133,7 +2221,7 @@ const server = {
|
|
2133
2221
|
lastName: _student?.last_name,
|
2134
2222
|
middleName: _student?.middle_name,
|
2135
2223
|
password: hashedPassword,
|
2136
|
-
temporaryPassword:
|
2224
|
+
temporaryPassword: password,
|
2137
2225
|
email,
|
2138
2226
|
modifiedById,
|
2139
2227
|
createdById,
|
@@ -2145,6 +2233,21 @@ const server = {
|
|
2145
2233
|
})
|
2146
2234
|
}
|
2147
2235
|
|
2236
|
+
|
2237
|
+
if(
|
2238
|
+
uApplication.add(applicationId),
|
2239
|
+
uRole.add(roleId)
|
2240
|
+
){
|
2241
|
+
newUserRole.push({
|
2242
|
+
applicationId,
|
2243
|
+
roleId,
|
2244
|
+
migratedAt,
|
2245
|
+
migratedTable,
|
2246
|
+
isMigrated,
|
2247
|
+
})
|
2248
|
+
}
|
2249
|
+
|
2250
|
+
|
2148
2251
|
if(uNum.has(studentNumber) && uLname.has(lastName) && uFname.has(firstName) && uMname.has(middleName) && uCourse.has(courseId) && uCampus.has(campusId)){
|
2149
2252
|
const errorMsg = `Duplicate Payload Found: [${studentNumber}] - ${lastName}, ${firstName} ${middleName} [courseId: ${courseId}, campusId:${campusId}]`
|
2150
2253
|
if(!uniqueErrors.has(errorMsg)){
|
@@ -2202,6 +2305,23 @@ const server = {
|
|
2202
2305
|
// logger.info(`${index + 1}/${index + 1}: New Student User Record Created: [${user.email} - ${user.password} ${user.temporaryPassword}] - ${user.lastName}, ${user.firstName} ${user.middleName} ${user.adminScopes}`)
|
2203
2306
|
});
|
2204
2307
|
}
|
2308
|
+
|
2309
|
+
if (newUserRole.length > 0) {
|
2310
|
+
// Associate userIds with new students
|
2311
|
+
newUserRole = newUserRole.map((exStudent, index) => ({
|
2312
|
+
...exStudent,
|
2313
|
+
userId: userIds[index]
|
2314
|
+
}));
|
2315
|
+
|
2316
|
+
await UserRoles.bulkCreate(newUserRole);
|
2317
|
+
createdCounter += newUserRole.length;
|
2318
|
+
|
2319
|
+
newUserRole.forEach((exStudent, index) => {
|
2320
|
+
logger.info(`${index + 1}/${index + 1}: ${exStudent.userId} ${exStudent.applicationId} ${exStudent.roleId} `)
|
2321
|
+
});
|
2322
|
+
}
|
2323
|
+
|
2324
|
+
|
2205
2325
|
|
2206
2326
|
if (newStudent.length > 0) {
|
2207
2327
|
// Associate userIds with new students
|
@@ -2777,6 +2897,8 @@ async function runServerFunctions() {
|
|
2777
2897
|
|
2778
2898
|
module.exports = {
|
2779
2899
|
serverTable: server,
|
2900
|
+
AcademicYear: server.AcademicYear,
|
2901
|
+
Semester: server.Semester,
|
2780
2902
|
Campus: server.Campus,
|
2781
2903
|
College: server.College,
|
2782
2904
|
AcademicDepartments: server.AcademicDepartment,
|
@@ -2784,8 +2906,6 @@ module.exports = {
|
|
2784
2906
|
Room: server.Room,
|
2785
2907
|
Instructor: server.Instructor,
|
2786
2908
|
AcadDeptInstructor: server.AcadDeptInstructor,
|
2787
|
-
AcademicYear: server.AcademicYear,
|
2788
|
-
Semester: server.Semester,
|
2789
2909
|
Subject: server.Subject,
|
2790
2910
|
Schedule: server.Schedule,
|
2791
2911
|
Student: server.Student,
|