lms-sync 1.0.92 → 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 +1041 -916
- 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
|
@@ -753,13 +1048,6 @@ const server = {
|
|
753
1048
|
let firstName = _instructor?.first_name
|
754
1049
|
let lastName = _instructor?.last_name
|
755
1050
|
let middleName = _instructor?.middle_name
|
756
|
-
let getUserName = Mixins.generateUsername(firstName, lastName)
|
757
|
-
let email = `${getUserName}@mscmarinduque.edu.ph`
|
758
|
-
let password = getUserName
|
759
|
-
const hashedPassword = await bcrypt.hash(password, saltRounds);
|
760
|
-
|
761
|
-
let temporaryPassword = getUserName
|
762
|
-
let adminScopes = []
|
763
1051
|
|
764
1052
|
let employeeNumber = _instructor?.faculty_id
|
765
1053
|
let departmentId = _acadDepartment?._id??departmentDefault?._id
|
@@ -767,19 +1055,65 @@ const server = {
|
|
767
1055
|
let employeeId = employeeFind?._id??null
|
768
1056
|
let userId = userFind?._id??_userFind?._id
|
769
1057
|
|
770
|
-
|
1058
|
+
let getfNameU = _instructor?.first_name.split("")[0].toUpperCase()||""
|
1059
|
+
let getfNameL = _instructor?.first_name.split("")[0].toLowerCase()||""
|
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, '')?? ""
|
771
1063
|
|
772
|
-
|
773
|
-
|
774
|
-
|
775
|
-
|
1064
|
+
|
1065
|
+
let email = `${employeeNumber}.${getfNameL}${lastNameWithoutTitles}@mscmarinduque.edu.ph`
|
1066
|
+
let password = `${employeeNumber}${getfNameU}${lastNameWithoutTitles}`
|
1067
|
+
const hashedPassword = await bcrypt.hash(password, saltRounds);
|
1068
|
+
|
1069
|
+
let temporaryPassword = `${employeeNumber}${getfNameU}${lastNameWithoutTitles}`
|
1070
|
+
let adminScopes = []
|
1071
|
+
|
1072
|
+
const userApp = await Applications.findOne({ where: { name: "Learning Management System - Instructor" }})
|
1073
|
+
|
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}`)
|
776
1110
|
uniqueErrors.add(errorMsg)
|
777
1111
|
// errorCounter++
|
778
1112
|
}
|
779
1113
|
}
|
780
|
-
else if (exUserMap.has(
|
781
|
-
const exUser = exUserMap.get(
|
782
|
-
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}`
|
783
1117
|
if(!uniqueErrors.has(errorMsg)){
|
784
1118
|
// logger.error(`${errorCounter + 1}/${errorCounter + 1}: ${errorMsg}`)
|
785
1119
|
uniqueErrors.add(errorMsg)
|
@@ -796,10 +1130,10 @@ const server = {
|
|
796
1130
|
uScopes.add(adminScopes)
|
797
1131
|
newUser.push({
|
798
1132
|
firstName: _instructor?.first_name,
|
799
|
-
lastName:
|
1133
|
+
lastName: _lastName,
|
800
1134
|
middleName: _instructor?.middle_name,
|
801
1135
|
password: hashedPassword,
|
802
|
-
temporaryPassword:
|
1136
|
+
temporaryPassword: password,
|
803
1137
|
email,
|
804
1138
|
modifiedById,
|
805
1139
|
createdById,
|
@@ -810,7 +1144,24 @@ const server = {
|
|
810
1144
|
isMigrated,
|
811
1145
|
})
|
812
1146
|
}
|
813
|
-
|
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
|
814
1165
|
if(uNum.has(employeeNumber) && uLname.has(lastName) && uFname.has(firstName) && uMname.has(middleName) && uDept.has(departmentId) && uCamp.has(campusId)){
|
815
1166
|
const errorMsg = `Duplicate Payload Found: [${employeeNumber}] - ${lastName}, ${firstName} ${middleName} [departmentId: ${departmentId}, campusId:${campusId}]`
|
816
1167
|
if(!uniqueErrors.has(errorMsg)){
|
@@ -837,7 +1188,7 @@ const server = {
|
|
837
1188
|
uCamp.add(campusId)
|
838
1189
|
newInstructor.push({
|
839
1190
|
firstName: _instructor?.first_name,
|
840
|
-
lastName:
|
1191
|
+
lastName: _lastName,
|
841
1192
|
middleName: _instructor?.middle_name,
|
842
1193
|
employeeNumber: _instructor?.faculty_id,
|
843
1194
|
departmentId: _acadDepartment?._id??departmentDefault?._id,
|
@@ -869,6 +1220,22 @@ const server = {
|
|
869
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}`)
|
870
1221
|
});
|
871
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
|
+
}
|
872
1239
|
|
873
1240
|
|
874
1241
|
if (newInstructor.length > 0) {
|
@@ -886,565 +1253,261 @@ const server = {
|
|
886
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}]`);
|
887
1254
|
});
|
888
1255
|
}
|
889
|
-
|
890
|
-
|
891
|
-
|
892
|
-
console.log("");
|
893
|
-
console.log("########################################################")
|
894
|
-
console.log("")
|
895
|
-
logger.info('Instructors Data Migration Completed');
|
896
|
-
logger.info(`Total Successful Instructors Records Created: ${createdCounter}/${createdCounter}`);
|
897
|
-
logger.info(`Total Existing Instructors Records: ${errorCounter}/${errorCounter}`);
|
898
|
-
logger.info(`Total Records: ${createdCounter + errorCounter}`);
|
899
|
-
console.log("")
|
900
|
-
console.log("########################################################")
|
901
|
-
console.log("")
|
902
|
-
|
903
|
-
let totalSummary = {
|
904
|
-
itemLength: createdCounter + errorCounter,
|
905
|
-
error: errorCounter,
|
906
|
-
success: createdCounter
|
907
|
-
}
|
908
|
-
return totalSummary
|
909
|
-
|
910
|
-
} catch (error) {
|
911
|
-
;
|
912
|
-
logger.error(`Error occurred: ${error} ${error.stack} `);
|
913
|
-
|
914
|
-
}
|
915
|
-
},
|
916
1256
|
|
917
|
-
async AcadDeptInstructor(){
|
918
|
-
try {
|
919
|
-
await db.sequelize.query('DROP FUNCTION IF EXISTS pg_temp.testfunc()');
|
920
|
-
|
921
|
-
console.log("");
|
922
|
-
console.log("########################################################")
|
923
|
-
console.log(" Academic Department Instructors Migrations ")
|
924
|
-
console.log("########################################################")
|
925
|
-
console.log("");
|
926
1257
|
|
927
|
-
const db_schema = schema
|
928
|
-
let maxIds = await AcademicDepartmentInstructors.max('_id'); //Fetch maximum _id directly from the Users model
|
929
|
-
let maxId = maxIds|| 0;
|
930
|
-
await db.sequelize.query(`CREATE SEQUENCE IF NOT EXISTS ${db_schema}."AcademicDepartmentInstructors__id_seq"`);
|
931
|
-
await db.sequelize.query(`ALTER SEQUENCE ${db_schema}."AcademicDepartmentInstructors__id_seq" RESTART WITH ${maxId + 1}`);
|
932
|
-
await db.sequelize.query(`DROP FUNCTION IF EXISTS ${db_schema}."pg_temp.testfunc()"`);
|
933
|
-
|
934
|
-
const instructorApi = await api.Instructor()
|
935
|
-
|
936
|
-
const instructorSeq = await Instructors.findAll()
|
937
|
-
const departmentSeq = await AcademicDepartments.findAll()
|
938
|
-
|
939
|
-
const userMail = await Users.findOne({ where: { email: 'ccci_integrator@gmail.com' } });
|
940
|
-
if (!userMail){}
|
941
|
-
|
942
|
-
let createdCounter = 0
|
943
|
-
let errorCounter = 0
|
944
|
-
let uniqueErrors = new Set()
|
945
|
-
|
946
|
-
for(let i = 0; i < instructorApi.length; i++){
|
947
|
-
try {
|
948
|
-
let instructor = instructorApi[i]
|
949
|
-
|
950
|
-
let _instructor = instructorSeq.find(num => num.employeeNumber === instructor?.faculty_id)
|
951
|
-
let _department = departmentSeq.find(dep => dep._id === _instructor?.departmentId)
|
952
|
-
|
953
|
-
let migratedAt = new Date() //present date of the migration
|
954
|
-
let migratedTable = 'Instructors' // sql counterpart main table
|
955
|
-
let referenceId = _instructor?.id // id of the data
|
956
|
-
let isMigrated = true
|
957
|
-
|
958
|
-
let modifiedById = userMail._id
|
959
|
-
let createdById = userMail._id
|
960
|
-
|
961
|
-
let [record, created] = await AcademicDepartmentInstructors.findOrCreate({
|
962
|
-
where:{
|
963
|
-
instructorId: _instructor?._id,
|
964
|
-
academicDepartmentId: _department?._id,
|
965
|
-
},
|
966
|
-
defaults:{
|
967
|
-
instructorId: _instructor?._id,
|
968
|
-
academicDepartmentId: _department?._id,
|
969
|
-
modifiedById,
|
970
|
-
createdById,
|
971
|
-
migratedAt,
|
972
|
-
migratedTable,
|
973
|
-
isMigrated,
|
974
|
-
}
|
975
|
-
})
|
976
|
-
if (created){
|
977
|
-
logger.info(`${createdCounter + 1}/${createdCounter + 1} New Academic Department Instructor Record Created: instructorId: ${record.instructorId}, academicDepartmentId: ${record.academicDepartmentId} `)
|
978
|
-
createdCounter++;
|
979
|
-
}
|
980
|
-
else {
|
981
|
-
const errorMsg = `Academic Department Instructor Record Already Exists: instructorId: ${record.instructorId}, academicDepartmentId: ${record.academicDepartmentId}`;
|
982
1258
|
|
983
|
-
if (!uniqueErrors.has(errorMsg)) {
|
984
|
-
logger.error(`${errorCounter + 1}/${errorCounter + 1} ${errorMsg}`);
|
985
|
-
uniqueErrors.add(errorMsg);
|
986
|
-
errorCounter++;
|
987
|
-
}
|
988
1259
|
|
989
|
-
}
|
990
|
-
} catch (error) {
|
991
|
-
logger.error(`Error occurred: ${error} ${error.stack}`);
|
992
|
-
}
|
993
|
-
}
|
994
|
-
let items = createdCounter + errorCounter
|
995
1260
|
console.log("");
|
996
1261
|
console.log("########################################################")
|
997
1262
|
console.log("")
|
998
|
-
logger.info('
|
999
|
-
logger.info(`Total Successful Records Created: ${createdCounter}/${createdCounter}`);
|
1000
|
-
logger.info(`Total Existing Records: ${errorCounter}/${errorCounter}`);
|
1001
|
-
logger.info(`Total
|
1002
|
-
console.log("")
|
1003
|
-
console.log("########################################################")
|
1004
|
-
console.log("")
|
1005
|
-
|
1006
|
-
let totalSummary = {
|
1007
|
-
itemLength: items,
|
1008
|
-
error: errorCounter,
|
1009
|
-
success: createdCounter
|
1010
|
-
}
|
1011
|
-
return totalSummary
|
1012
|
-
|
1013
|
-
} catch (error) {
|
1014
|
-
logger.error(`Error occurred: ${error} ${error.stack}`);
|
1015
|
-
}
|
1016
|
-
},
|
1017
|
-
|
1018
|
-
async Course(){
|
1019
|
-
try {
|
1020
|
-
await db.sequelize.query('DROP FUNCTION IF EXISTS pg_temp.testfunc()');
|
1021
|
-
|
1022
|
-
console.log("");
|
1023
|
-
console.log("########################################################")
|
1024
|
-
console.log(" Courses Migration ")
|
1025
|
-
console.log("########################################################")
|
1026
|
-
console.log("");
|
1027
|
-
|
1028
|
-
const db_schema = schema
|
1029
|
-
let maxIds = await Courses.max('_id'); //Fetch maximum _id directly from the Courses model
|
1030
|
-
let maxId = maxIds|| 0;
|
1031
|
-
await db.sequelize.query(`CREATE SEQUENCE IF NOT EXISTS ${db_schema}."Courses__id_seq"`);
|
1032
|
-
await db.sequelize.query(`ALTER SEQUENCE ${db_schema}."Courses__id_seq" RESTART WITH ${maxId + 1}`);
|
1033
|
-
await db.sequelize.query(`DROP FUNCTION IF EXISTS ${db_schema}."pg_temp.testfunc()"`);
|
1034
|
-
|
1035
|
-
const studentApi = (await api.Student()).data
|
1036
|
-
|
1037
|
-
const courseApi = await api.Course()
|
1038
|
-
const collegeApi = await api.College()
|
1039
|
-
const departmentApi = await api.Department()
|
1040
|
-
|
1041
|
-
const acadDeptSeq = await AcademicDepartments.findAll()
|
1042
|
-
|
1043
|
-
const campusSeq = await Campuses.findAll()
|
1044
|
-
const userMail = await Users.findOne({ where: { email: 'ccci_integrator@gmail.com' } });
|
1045
|
-
const campusDefault = await Campuses.findOne({ where: { name: 'Campus Default' } });
|
1046
|
-
const departmentDefault = await AcademicDepartments.findOne({ where: { name: 'AcademicDepartments Default' } });
|
1047
|
-
|
1048
|
-
let defaultPayload = {
|
1049
|
-
name: 'Course Default',
|
1050
|
-
code: 'CORDEF',
|
1051
|
-
major: 'Major Course',
|
1052
|
-
campusId: campusDefault._id,
|
1053
|
-
departmentId: departmentDefault._id,
|
1054
|
-
modifiedById: userMail?._id,
|
1055
|
-
createdById: userMail?._id
|
1056
|
-
};
|
1057
|
-
|
1058
|
-
let [defaults, createddef] = await Courses.findOrCreate({
|
1059
|
-
where: { name: defaultPayload.name, code: defaultPayload.code},
|
1060
|
-
defaults: defaultPayload
|
1061
|
-
});
|
1062
|
-
|
1063
|
-
|
1064
|
-
let createdCounter = 0
|
1065
|
-
let errorCounter = 0
|
1066
|
-
let uniqueErrors = new Set()
|
1067
|
-
|
1068
|
-
let uCode = new Set()
|
1069
|
-
let uName = new Set()
|
1070
|
-
let uMajor = new Set()
|
1071
|
-
let uCampus = new Set()
|
1072
|
-
let uDept = new Set()
|
1073
|
-
|
1074
|
-
let newCourse = []
|
1075
|
-
|
1076
|
-
const exCourse = await Courses.findAll()
|
1077
|
-
const exCourseMap = new Map(exCourse.map(course => [`[${course.code}] - ${course.name}, ${course.major} [${course.campusId}, ${course.departmentId}]`, course]))
|
1078
|
-
|
1079
|
-
|
1080
|
-
for (let i = 0; i < studentApi.length; i++){
|
1081
|
-
try {
|
1082
|
-
|
1083
|
-
let course = studentApi[i]
|
1084
|
-
let courseCode = courseApi.find(crs => crs.name === course?.course)
|
1085
|
-
let campus = campusSeq.find(camp => camp.name === course?.campus)
|
1086
|
-
|
1087
|
-
let college = collegeApi.find(col => col.name === course?.college)
|
1088
|
-
let department = departmentApi.find(dep => dep.name === college?.name)
|
1089
|
-
let _department = acadDeptSeq.find(ad => ad.name === department?.name)
|
1090
|
-
|
1091
|
-
let modifiedById = userMail?._id
|
1092
|
-
let createdById = userMail?._id
|
1093
|
-
|
1094
|
-
let name = course?.course
|
1095
|
-
let code = courseCode?.code
|
1096
|
-
let major = course?.major
|
1097
|
-
let campusId = campus?._id??null
|
1098
|
-
let departmentId = _department?._id??null
|
1099
|
-
|
1100
|
-
let migratedAt = new Date() //present date of the migration
|
1101
|
-
let migratedTable = 'Courses' // sql counterpart main table
|
1102
|
-
let referenceId = courseCode?.id // id of the data
|
1103
|
-
let isMigrated = true
|
1104
|
-
|
1105
|
-
|
1106
|
-
if(uCode.has(code) && uName.has(name) && uMajor.has(major) && uCampus.has(campusId) && uDept.has(departmentId)){
|
1107
|
-
const errorMsg = `Duplicate Payload Found: [${code}] - ${name}, ${major} [campusId: ${campusId}, academicDepartmentId: ${departmentId}]`
|
1108
|
-
if(!uniqueErrors.has(errorMsg)){
|
1109
|
-
logger.error(`${errorCounter + 1}/${errorCounter + 1}: ${errorMsg}`)
|
1110
|
-
uniqueErrors.add(errorMsg)
|
1111
|
-
errorCounter++
|
1112
|
-
}
|
1113
|
-
}
|
1114
|
-
else if ( exCourseMap.has(`[${code}] - ${name}, ${major} [${campusId}, ${departmentId}]`)){
|
1115
|
-
const exCourse = exCourseMap.get(`[${code}] - ${name}, ${major} [${campusId}, ${departmentId}]`)
|
1116
|
-
const errorMsg = `Existing Data Found: [${exCourse.code}] - ${exCourse.name}, ${exCourse.major} [campusId: ${exCourse.campusId}, academicDepartmentId: ${exCourse.departmentId}]`
|
1117
|
-
if(!uniqueErrors.has(errorMsg)){
|
1118
|
-
logger.error(`${errorCounter + 1}/${errorCounter + 1}: ${errorMsg}`)
|
1119
|
-
uniqueErrors.add(errorMsg)
|
1120
|
-
errorCounter++
|
1121
|
-
}
|
1122
|
-
}
|
1123
|
-
else{
|
1124
|
-
uCode.add(code)
|
1125
|
-
uName.add(name)
|
1126
|
-
uMajor.add(major)
|
1127
|
-
uCampus.add(campusId)
|
1128
|
-
uDept.add(departmentId)
|
1129
|
-
newCourse.push({
|
1130
|
-
name: course?.course,
|
1131
|
-
code: courseCode?.code,
|
1132
|
-
major: course?.major,
|
1133
|
-
campusId: campus?._id??campusDefault?._id,
|
1134
|
-
departmentId: _department?._id??departmentDefault?._id,
|
1135
|
-
modifiedById,
|
1136
|
-
createdById,
|
1137
|
-
migratedAt,
|
1138
|
-
migratedTable,
|
1139
|
-
referenceId,
|
1140
|
-
isMigrated
|
1141
|
-
})
|
1142
|
-
}
|
1143
|
-
|
1144
|
-
} catch (error) {
|
1145
|
-
;
|
1146
|
-
logger.error(`Error occurred: ${error.stack} ${error}`);
|
1147
|
-
}
|
1148
|
-
}
|
1149
|
-
|
1150
|
-
if (newCourse.length > 0) {
|
1151
|
-
await Courses.bulkCreate(newCourse)
|
1152
|
-
createdCounter += newCourse.length
|
1153
|
-
|
1154
|
-
newCourse.forEach((course, index) => {
|
1155
|
-
logger.info(`${index + 1}/${index + 1}: New Courses Record Created: [${course.code}] - ${course.name}, ${course.major} [courseId: ${course.campusId}, academicDepartmentId: ${course.departmentId}]`)
|
1156
|
-
});
|
1157
|
-
}
|
1158
|
-
|
1159
|
-
|
1160
|
-
console.log("");
|
1161
|
-
console.log("########################################################")
|
1162
|
-
console.log("")
|
1163
|
-
logger.info('Course Data Migration Completed');
|
1164
|
-
logger.info(`Total Successful Course Records Created: ${createdCounter}/${createdCounter}`);
|
1165
|
-
logger.info(`Total Existing Course Records: ${errorCounter}/${errorCounter}`);
|
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}`);
|
1166
1267
|
console.log("")
|
1167
1268
|
console.log("########################################################")
|
1168
1269
|
console.log("")
|
1169
1270
|
|
1170
1271
|
let totalSummary = {
|
1171
|
-
itemLength:
|
1272
|
+
itemLength: createdCounter + errorCounter,
|
1172
1273
|
error: errorCounter,
|
1173
1274
|
success: createdCounter
|
1174
1275
|
}
|
1175
|
-
|
1176
|
-
uniqueErrors.clear();
|
1177
|
-
|
1178
1276
|
return totalSummary
|
1179
|
-
|
1277
|
+
|
1180
1278
|
} catch (error) {
|
1181
1279
|
;
|
1182
|
-
logger.error(`Error occurred: ${error
|
1280
|
+
logger.error(`Error occurred: ${error} ${error.stack} `);
|
1281
|
+
|
1183
1282
|
}
|
1184
1283
|
},
|
1185
1284
|
|
1186
|
-
async
|
1285
|
+
async AcadDeptInstructor(){
|
1187
1286
|
try {
|
1188
1287
|
await db.sequelize.query('DROP FUNCTION IF EXISTS pg_temp.testfunc()');
|
1189
1288
|
|
1190
1289
|
console.log("");
|
1191
1290
|
console.log("########################################################")
|
1192
|
-
console.log("
|
1291
|
+
console.log(" Academic Department Instructors Migrations ")
|
1193
1292
|
console.log("########################################################")
|
1194
1293
|
console.log("");
|
1195
|
-
|
1294
|
+
|
1196
1295
|
const db_schema = schema
|
1197
|
-
let maxIds = await
|
1296
|
+
let maxIds = await AcademicDepartmentInstructors.max('_id'); //Fetch maximum _id directly from the Users model
|
1198
1297
|
let maxId = maxIds|| 0;
|
1199
|
-
await db.sequelize.query(`CREATE SEQUENCE IF NOT EXISTS ${db_schema}."
|
1200
|
-
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}`);
|
1201
1300
|
await db.sequelize.query(`DROP FUNCTION IF EXISTS ${db_schema}."pg_temp.testfunc()"`);
|
1202
1301
|
|
1203
|
-
const
|
1204
|
-
const roomApi = await api.Room()
|
1302
|
+
const instructorApi = await api.Instructor()
|
1205
1303
|
|
1206
|
-
const
|
1207
|
-
const campusSeq = await Campuses.findAll()
|
1304
|
+
const instructorSeq = await Instructors.findAll()
|
1208
1305
|
const departmentSeq = await AcademicDepartments.findAll()
|
1209
1306
|
|
1210
|
-
const userMail = await Users.findOne({ where: { email: 'ccci_integrator@gmail.com' } });
|
1211
|
-
|
1212
|
-
|
1213
|
-
let defaultPayload = {
|
1214
|
-
name: 'Rooms Default',
|
1215
|
-
campusId: campusesDefault._id,
|
1216
|
-
capacity: 40,
|
1217
|
-
modifiedById: userMail?._id,
|
1218
|
-
createdById: userMail?._id
|
1219
|
-
};
|
1220
|
-
|
1221
|
-
let [defaults, createddef] = await Rooms.findOrCreate({
|
1222
|
-
where: { name: defaultPayload.name},
|
1223
|
-
defaults: defaultPayload
|
1224
|
-
});
|
1307
|
+
const userMail = await Users.findOne({ where: { email: 'ccci_integrator@gmail.com' } });
|
1308
|
+
if (!userMail){}
|
1225
1309
|
|
1226
1310
|
let createdCounter = 0
|
1227
1311
|
let errorCounter = 0
|
1228
1312
|
let uniqueErrors = new Set()
|
1229
1313
|
|
1230
|
-
let
|
1231
|
-
let uCampus = new Set()
|
1232
|
-
|
1233
|
-
let newRoom = []
|
1234
|
-
|
1235
|
-
const exRoom = await Rooms.findAll()
|
1236
|
-
const exRoomMap = new Map(exRoom.map(room => [`[${room.name}] - ${room.campusId}`, room]))
|
1237
|
-
|
1238
|
-
|
1239
|
-
for (let i = 0; i < roomApi.length; i++){
|
1314
|
+
for(let i = 0; i < instructorApi.length; i++){
|
1240
1315
|
try {
|
1241
|
-
let
|
1242
|
-
|
1243
|
-
let _subject = subjectRoom.find(r => r.room_id === _room?.id)
|
1244
|
-
let _subjects = subjectSeq.find(s => s.name === _subject?.name)
|
1245
|
-
let _department = departmentSeq.find(dep => dep._id === _subjects?.departmentId)
|
1246
|
-
let _campus = campusSeq.find (cam => cam._id === _department?.campusId)
|
1247
|
-
|
1248
|
-
let capacity = 50
|
1249
|
-
let campusDefault = "MSC - Boac Campus"
|
1250
|
-
let _campusDefault = campusSeq.find(ccc => ccc.name === campusDefault)
|
1251
|
-
|
1252
|
-
// return console.log('campusDefault :>> ', campusDefault);
|
1316
|
+
let instructor = instructorApi[i]
|
1253
1317
|
|
1254
|
-
let
|
1255
|
-
let
|
1318
|
+
let _instructor = instructorSeq.find(num => num.employeeNumber === instructor?.faculty_id)
|
1319
|
+
let _department = departmentSeq.find(dep => dep._id === _instructor?.departmentId)
|
1256
1320
|
|
1257
1321
|
let migratedAt = new Date() //present date of the migration
|
1258
|
-
let migratedTable = '
|
1259
|
-
let referenceId =
|
1322
|
+
let migratedTable = 'Instructors' // sql counterpart main table
|
1323
|
+
let referenceId = _instructor?.id // id of the data
|
1260
1324
|
let isMigrated = true
|
1261
1325
|
|
1262
|
-
let
|
1263
|
-
let
|
1326
|
+
let modifiedById = userMail._id
|
1327
|
+
let createdById = userMail._id
|
1264
1328
|
|
1265
|
-
|
1266
|
-
|
1267
|
-
|
1268
|
-
|
1269
|
-
|
1270
|
-
|
1271
|
-
|
1272
|
-
|
1273
|
-
else if ( exRoomMap.has(`[${name}] - ${campusId}`)){
|
1274
|
-
const exRoom = exRoomMap.get(`[${name}] - ${campusId}`)
|
1275
|
-
const errorMsg = `Existing Data Found:[${exRoom.name}] - campusId: ${exRoom.campusId}`
|
1276
|
-
if(!uniqueErrors.has(errorMsg)){
|
1277
|
-
logger.error(`${errorCounter + 1}/${errorCounter + 1}: ${errorMsg}`)
|
1278
|
-
uniqueErrors.add(errorMsg)
|
1279
|
-
errorCounter++
|
1280
|
-
}
|
1281
|
-
}
|
1282
|
-
else{
|
1283
|
-
uName.add(name)
|
1284
|
-
uCampus.add(campusId)
|
1285
|
-
newRoom.push({
|
1286
|
-
name: _room?.name,
|
1287
|
-
campusId: _campus?._id??_campusDefault?._id??campusesDefault._id,
|
1288
|
-
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,
|
1289
1337
|
modifiedById,
|
1290
1338
|
createdById,
|
1291
1339
|
migratedAt,
|
1292
1340
|
migratedTable,
|
1293
|
-
|
1294
|
-
|
1295
|
-
|
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++;
|
1296
1347
|
}
|
1297
|
-
|
1298
|
-
|
1299
|
-
;
|
1300
|
-
logger.error(`Error occurred: ${error.stack} ${error}`);
|
1301
|
-
}
|
1302
|
-
}
|
1348
|
+
else {
|
1349
|
+
const errorMsg = `Academic Department Instructor Record Already Exists: instructorId: ${record.instructorId}, academicDepartmentId: ${record.academicDepartmentId}`;
|
1303
1350
|
|
1304
|
-
|
1305
|
-
|
1306
|
-
|
1307
|
-
|
1308
|
-
|
1309
|
-
logger.info(`${index + 1}/${index + 1}: New Rooms Record Created: [${room.name}], campusId: ${room.campusId}`)
|
1310
|
-
});
|
1311
|
-
}
|
1351
|
+
if (!uniqueErrors.has(errorMsg)) {
|
1352
|
+
logger.error(`${errorCounter + 1}/${errorCounter + 1} ${errorMsg}`);
|
1353
|
+
uniqueErrors.add(errorMsg);
|
1354
|
+
errorCounter++;
|
1355
|
+
}
|
1312
1356
|
|
1357
|
+
}
|
1358
|
+
} catch (error) {
|
1359
|
+
logger.error(`Error occurred: ${error} ${error.stack}`);
|
1360
|
+
}
|
1361
|
+
}
|
1362
|
+
let items = createdCounter + errorCounter
|
1313
1363
|
console.log("");
|
1314
1364
|
console.log("########################################################")
|
1315
1365
|
console.log("")
|
1316
|
-
logger.info('
|
1317
|
-
logger.info(`Total Successful
|
1318
|
-
logger.info(`Total Existing
|
1319
|
-
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} `)
|
1320
1370
|
console.log("")
|
1321
1371
|
console.log("########################################################")
|
1322
1372
|
console.log("")
|
1323
1373
|
|
1324
1374
|
let totalSummary = {
|
1325
|
-
itemLength:
|
1375
|
+
itemLength: items,
|
1326
1376
|
error: errorCounter,
|
1327
1377
|
success: createdCounter
|
1328
1378
|
}
|
1329
1379
|
return totalSummary
|
1330
1380
|
|
1331
1381
|
} catch (error) {
|
1332
|
-
logger.error(`Error occurred: ${error
|
1333
|
-
|
1382
|
+
logger.error(`Error occurred: ${error} ${error.stack}`);
|
1334
1383
|
}
|
1335
1384
|
},
|
1336
1385
|
|
1337
|
-
async
|
1386
|
+
async Course(){
|
1338
1387
|
try {
|
1339
1388
|
await db.sequelize.query('DROP FUNCTION IF EXISTS pg_temp.testfunc()');
|
1340
1389
|
|
1341
1390
|
console.log("");
|
1342
1391
|
console.log("########################################################")
|
1343
|
-
console.log("
|
1392
|
+
console.log(" Courses Migration ")
|
1344
1393
|
console.log("########################################################")
|
1345
1394
|
console.log("");
|
1346
1395
|
|
1347
1396
|
const db_schema = schema
|
1348
|
-
let maxIds = await
|
1397
|
+
let maxIds = await Courses.max('_id'); //Fetch maximum _id directly from the Courses model
|
1349
1398
|
let maxId = maxIds|| 0;
|
1350
|
-
await db.sequelize.query(`CREATE SEQUENCE IF NOT EXISTS ${db_schema}."
|
1351
|
-
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}`);
|
1352
1401
|
await db.sequelize.query(`DROP FUNCTION IF EXISTS ${db_schema}."pg_temp.testfunc()"`);
|
1353
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()
|
1354
1410
|
|
1355
|
-
|
1356
|
-
|
1357
|
-
|
1358
|
-
|
1359
|
-
|
1360
|
-
|
1361
|
-
|
1362
|
-
|
1363
|
-
|
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
|
1364
1424
|
};
|
1365
1425
|
|
1366
|
-
let [
|
1367
|
-
where: {
|
1368
|
-
defaults:
|
1369
|
-
});
|
1426
|
+
let [defaults, createddef] = await Courses.findOrCreate({
|
1427
|
+
where: { name: defaultPayload.name, code: defaultPayload.code},
|
1428
|
+
defaults: defaultPayload
|
1429
|
+
});
|
1370
1430
|
|
1371
|
-
const acadYearApi = await api.AcademicYear()
|
1372
|
-
const userMail = await Users.findOne({ where: { email: 'ccci_integrator@gmail.com' } });
|
1373
1431
|
|
1374
1432
|
let createdCounter = 0
|
1375
1433
|
let errorCounter = 0
|
1376
1434
|
let uniqueErrors = new Set()
|
1377
1435
|
|
1378
|
-
|
1379
|
-
|
1380
|
-
|
1381
|
-
let
|
1382
|
-
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()
|
1383
1441
|
|
1384
|
-
let
|
1442
|
+
let newCourse = []
|
1385
1443
|
|
1386
|
-
const
|
1387
|
-
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]))
|
1388
1446
|
|
1389
1447
|
|
1390
|
-
for (let i = 0; i <
|
1448
|
+
for (let i = 0; i < studentApi.length; i++){
|
1391
1449
|
try {
|
1392
|
-
let _acadyear = acadYearResult[i]
|
1393
|
-
// console.log('_acadyear :>> ', _acadyear);
|
1394
|
-
|
1395
|
-
let [from, to] = _acadyear.year.split('-')
|
1396
1450
|
|
1397
|
-
|
1398
|
-
|
1399
|
-
|
1400
|
-
let defaultDate = new Date()
|
1401
|
-
let currentYear = defaultDate.getFullYear()
|
1402
|
-
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)
|
1403
1454
|
|
1404
|
-
let
|
1405
|
-
|
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)
|
1406
1458
|
|
1407
1459
|
let modifiedById = userMail?._id
|
1408
1460
|
let createdById = userMail?._id
|
1409
1461
|
|
1410
|
-
|
1411
|
-
|
1412
|
-
|
1413
|
-
|
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
|
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
|
1414
1472
|
|
1415
1473
|
|
1416
|
-
|
1417
|
-
|
1418
|
-
|
1419
|
-
|
1420
|
-
|
1421
|
-
|
1422
|
-
|
1423
|
-
|
1424
|
-
|
1425
|
-
|
1426
|
-
|
1427
|
-
|
1428
|
-
|
1429
|
-
|
1430
|
-
|
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
|
+
})
|
1431
1510
|
}
|
1432
|
-
}
|
1433
|
-
else{
|
1434
|
-
uFrom.add(from)
|
1435
|
-
uTo.add(to)
|
1436
|
-
newYears.push({
|
1437
|
-
from,
|
1438
|
-
to,
|
1439
|
-
modifiedById,
|
1440
|
-
createdById,
|
1441
|
-
default: isDefault,
|
1442
|
-
migratedAt,
|
1443
|
-
migratedTable,
|
1444
|
-
referenceId,
|
1445
|
-
isMigrated
|
1446
|
-
})
|
1447
|
-
}
|
1448
1511
|
|
1449
1512
|
} catch (error) {
|
1450
1513
|
;
|
@@ -1452,120 +1515,132 @@ const server = {
|
|
1452
1515
|
}
|
1453
1516
|
}
|
1454
1517
|
|
1455
|
-
if (
|
1456
|
-
await
|
1457
|
-
createdCounter +=
|
1518
|
+
if (newCourse.length > 0) {
|
1519
|
+
await Courses.bulkCreate(newCourse)
|
1520
|
+
createdCounter += newCourse.length
|
1458
1521
|
|
1459
|
-
|
1460
|
-
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}]`)
|
1461
1524
|
});
|
1462
1525
|
}
|
1463
1526
|
|
1527
|
+
|
1464
1528
|
console.log("");
|
1465
1529
|
console.log("########################################################")
|
1466
1530
|
console.log("")
|
1467
|
-
logger.info('
|
1468
|
-
logger.info(`Total Successful
|
1469
|
-
logger.info(`Total Existing
|
1470
|
-
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}`);
|
1471
1534
|
console.log("")
|
1472
1535
|
console.log("########################################################")
|
1473
1536
|
console.log("")
|
1474
1537
|
|
1475
1538
|
let totalSummary = {
|
1476
|
-
itemLength:
|
1539
|
+
itemLength: courseApi.length,
|
1477
1540
|
error: errorCounter,
|
1478
1541
|
success: createdCounter
|
1479
1542
|
}
|
1480
|
-
return totalSummary
|
1481
1543
|
|
1544
|
+
uniqueErrors.clear();
|
1545
|
+
|
1546
|
+
return totalSummary
|
1547
|
+
|
1482
1548
|
} catch (error) {
|
1483
1549
|
;
|
1484
1550
|
logger.error(`Error occurred: ${error.stack} ${error}`);
|
1485
|
-
|
1486
1551
|
}
|
1487
1552
|
},
|
1488
1553
|
|
1489
|
-
async
|
1554
|
+
async Room(){
|
1490
1555
|
try {
|
1491
1556
|
await db.sequelize.query('DROP FUNCTION IF EXISTS pg_temp.testfunc()');
|
1492
1557
|
|
1493
1558
|
console.log("");
|
1494
1559
|
console.log("########################################################")
|
1495
|
-
console.log("
|
1560
|
+
console.log(" Rooms Migration ")
|
1496
1561
|
console.log("########################################################")
|
1497
1562
|
console.log("");
|
1498
1563
|
|
1499
1564
|
const db_schema = schema
|
1500
|
-
let maxIds = await
|
1565
|
+
let maxIds = await Rooms.max('_id'); // Fetch maximum _id directly from the Rooms model
|
1501
1566
|
let maxId = maxIds|| 0;
|
1502
|
-
await db.sequelize.query(`CREATE SEQUENCE IF NOT EXISTS ${db_schema}."
|
1503
|
-
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}`);
|
1504
1569
|
await db.sequelize.query(`DROP FUNCTION IF EXISTS ${db_schema}."pg_temp.testfunc()"`);
|
1505
1570
|
|
1571
|
+
const subjectRoom = await api.Subject()
|
1572
|
+
const roomApi = await api.Room()
|
1573
|
+
|
1574
|
+
const subjectSeq = await Subjects.findAll()
|
1575
|
+
const campusSeq = await Campuses.findAll()
|
1576
|
+
const departmentSeq = await AcademicDepartments.findAll()
|
1506
1577
|
|
1507
|
-
|
1508
|
-
|
1509
|
-
|
1510
|
-
|
1511
|
-
|
1512
|
-
|
1513
|
-
|
1514
|
-
|
1515
|
-
|
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
|
1516
1587
|
};
|
1517
1588
|
|
1518
|
-
let [
|
1519
|
-
where: {
|
1520
|
-
defaults:
|
1521
|
-
});
|
1522
|
-
|
1523
|
-
const acadYearApi = await api.AcademicYear()
|
1524
|
-
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
|
+
});
|
1525
1593
|
|
1526
1594
|
let createdCounter = 0
|
1527
1595
|
let errorCounter = 0
|
1528
1596
|
let uniqueErrors = new Set()
|
1529
1597
|
|
1530
|
-
|
1531
|
-
|
1532
|
-
|
1533
|
-
let uCode = new Set()
|
1534
|
-
let uDesc = new Set()
|
1598
|
+
let uName = new Set()
|
1599
|
+
let uCampus = new Set()
|
1535
1600
|
|
1536
|
-
let
|
1601
|
+
let newRoom = []
|
1537
1602
|
|
1538
|
-
const
|
1539
|
-
const
|
1603
|
+
const exRoom = await Rooms.findAll()
|
1604
|
+
const exRoomMap = new Map(exRoom.map(room => [`[${room.name}] - ${room.campusId}`, room]))
|
1540
1605
|
|
1541
1606
|
|
1542
|
-
for (let i = 0; i <
|
1607
|
+
for (let i = 0; i < roomApi.length; i++){
|
1543
1608
|
try {
|
1544
|
-
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);
|
1545
1621
|
|
1546
1622
|
let modifiedById = userMail?._id
|
1547
1623
|
let createdById = userMail?._id
|
1548
1624
|
|
1549
1625
|
let migratedAt = new Date() //present date of the migration
|
1550
|
-
let migratedTable = '
|
1551
|
-
let referenceId =
|
1626
|
+
let migratedTable = 'Rooms' // sql counterpart main table
|
1627
|
+
let referenceId = _room?.id // id of the data
|
1552
1628
|
let isMigrated = true
|
1553
1629
|
|
1554
|
-
let
|
1555
|
-
let
|
1556
|
-
|
1630
|
+
let name = _room?.name
|
1631
|
+
let campusId = _campus?._id??_campusDefault?._id??null
|
1557
1632
|
|
1558
|
-
if(
|
1559
|
-
const errorMsg = `Duplicate Payload Found: [${
|
1633
|
+
if(uName.has(name) && uCampus.has(campusId)){
|
1634
|
+
const errorMsg = `Duplicate Payload Found: [${name}] - campusId: ${campusId}`
|
1560
1635
|
if(!uniqueErrors.has(errorMsg)){
|
1561
1636
|
logger.error(`${errorCounter + 1}/${errorCounter + 1}: ${errorMsg}`)
|
1562
1637
|
uniqueErrors.add(errorMsg)
|
1563
1638
|
errorCounter++
|
1564
1639
|
}
|
1565
1640
|
}
|
1566
|
-
else if (
|
1567
|
-
const
|
1568
|
-
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}`
|
1569
1644
|
if(!uniqueErrors.has(errorMsg)){
|
1570
1645
|
logger.error(`${errorCounter + 1}/${errorCounter + 1}: ${errorMsg}`)
|
1571
1646
|
uniqueErrors.add(errorMsg)
|
@@ -1573,11 +1648,12 @@ const server = {
|
|
1573
1648
|
}
|
1574
1649
|
}
|
1575
1650
|
else{
|
1576
|
-
|
1577
|
-
|
1578
|
-
|
1579
|
-
|
1580
|
-
|
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,
|
1581
1657
|
modifiedById,
|
1582
1658
|
createdById,
|
1583
1659
|
migratedAt,
|
@@ -1593,21 +1669,21 @@ const server = {
|
|
1593
1669
|
}
|
1594
1670
|
}
|
1595
1671
|
|
1596
|
-
if (
|
1597
|
-
await
|
1598
|
-
createdCounter +=
|
1672
|
+
if (newRoom.length > 0) {
|
1673
|
+
await Rooms.bulkCreate(newRoom)
|
1674
|
+
createdCounter += newRoom.length
|
1599
1675
|
|
1600
|
-
|
1601
|
-
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}`)
|
1602
1678
|
});
|
1603
1679
|
}
|
1604
1680
|
|
1605
1681
|
console.log("");
|
1606
1682
|
console.log("########################################################")
|
1607
1683
|
console.log("")
|
1608
|
-
logger.info('
|
1609
|
-
logger.info(`Total Successful
|
1610
|
-
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}`);
|
1611
1687
|
logger.info(`Total Records: ${createdCounter + errorCounter}`);
|
1612
1688
|
console.log("")
|
1613
1689
|
console.log("########################################################")
|
@@ -1621,7 +1697,6 @@ const server = {
|
|
1621
1697
|
return totalSummary
|
1622
1698
|
|
1623
1699
|
} catch (error) {
|
1624
|
-
;
|
1625
1700
|
logger.error(`Error occurred: ${error.stack} ${error}`);
|
1626
1701
|
|
1627
1702
|
}
|
@@ -1990,6 +2065,8 @@ const server = {
|
|
1990
2065
|
const collegeSeq = await Colleges.findAll()
|
1991
2066
|
const semesterSeq = await Semesters.findAll()
|
1992
2067
|
const acadYearSeq = await AcademicYears.findAll()
|
2068
|
+
const userSeq = await Users.findAll()
|
2069
|
+
|
1993
2070
|
|
1994
2071
|
const userMail = await Users.findOne({ where: { email: 'ccci_integrator@gmail.com' } });
|
1995
2072
|
|
@@ -2032,6 +2109,15 @@ const server = {
|
|
2032
2109
|
const exUser = await Users.findAll()
|
2033
2110
|
const exUserMap = new Map(exUser.map(usr => [`[${usr.email} - ${usr.password} ${usr.temporaryPassword}] - ${usr.lastName}, ${usr.firstName} ${usr.middleName} ${usr.adminScopes}`, usr]))
|
2034
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
|
+
|
2035
2121
|
let uNum = new Set()
|
2036
2122
|
let uLname = new Set()
|
2037
2123
|
let uMname = new Set()
|
@@ -2083,20 +2169,27 @@ const server = {
|
|
2083
2169
|
let courseId = _course?._id??courseDefault?._id
|
2084
2170
|
let campusId = _campus?._id??campusDefault?._id
|
2085
2171
|
|
2086
|
-
let getUserName = Mixins.generateUsername(firstName, lastName)
|
2087
|
-
let email = `${getUserName}@mscmarinduque.edu.ph`
|
2088
|
-
let password = `${getUserName}`
|
2089
|
-
|
2090
|
-
const hashedPassword = await bcrypt.hash(password, saltRounds);
|
2091
|
-
let temporaryPassword = getUserName
|
2092
|
-
let adminScopes = []
|
2093
|
-
|
2094
2172
|
let migratedAt = new Date() //present date of the migration
|
2095
2173
|
let migratedTable = 'Students' // sql counterpart main table
|
2096
2174
|
let referenceId = _student?.id // id of the data
|
2097
2175
|
let isMigrated = true
|
2098
2176
|
|
2177
|
+
let getfNameU = _student?.first_name.split("")[0].toUpperCase()||""
|
2178
|
+
let getfNameL = _student?.first_name.split("")[0].toLowerCase()||""
|
2179
|
+
let getlName = _student?.last_name.toLowerCase().replace(/\s/g, '')?? ""
|
2180
|
+
|
2181
|
+
let email = `${studentNumber}.${getfNameL}${getlName}@mscmarinduque.edu.ph`
|
2182
|
+
let password = `${studentNumber}${getfNameU}${getlName}`
|
2183
|
+
|
2184
|
+
const hashedPassword = await bcrypt.hash(password, saltRounds);
|
2185
|
+
let temporaryPassword = `${studentNumber}${getfNameU}${getlName}`
|
2186
|
+
let adminScopes = []
|
2187
|
+
|
2188
|
+
const roleSeq = await Roles.findOne({ where: { name: "Student" }})
|
2189
|
+
const userApp = await Applications.findOne({ where: { name: "Learning Management System - Student/Parent" }})
|
2099
2190
|
|
2191
|
+
let roleId = roleSeq?._id
|
2192
|
+
let applicationId = userApp?._id
|
2100
2193
|
|
2101
2194
|
if(uEmail.has(email) && uPass.has(password) && uTPass.has(temporaryPassword) && uULname.has(lastName) && uUFname.has(firstName) && uUMname.has(middleName) && uScopes.has(adminScopes)){
|
2102
2195
|
const errorMsg = `Duplicate Payload Found: [${email} - ${password} ${temporaryPassword}] - ${lastName}, ${firstName} ${middleName} ${adminScopes}`
|
@@ -2128,7 +2221,7 @@ const server = {
|
|
2128
2221
|
lastName: _student?.last_name,
|
2129
2222
|
middleName: _student?.middle_name,
|
2130
2223
|
password: hashedPassword,
|
2131
|
-
temporaryPassword:
|
2224
|
+
temporaryPassword: password,
|
2132
2225
|
email,
|
2133
2226
|
modifiedById,
|
2134
2227
|
createdById,
|
@@ -2140,6 +2233,21 @@ const server = {
|
|
2140
2233
|
})
|
2141
2234
|
}
|
2142
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
|
+
|
2143
2251
|
if(uNum.has(studentNumber) && uLname.has(lastName) && uFname.has(firstName) && uMname.has(middleName) && uCourse.has(courseId) && uCampus.has(campusId)){
|
2144
2252
|
const errorMsg = `Duplicate Payload Found: [${studentNumber}] - ${lastName}, ${firstName} ${middleName} [courseId: ${courseId}, campusId:${campusId}]`
|
2145
2253
|
if(!uniqueErrors.has(errorMsg)){
|
@@ -2197,6 +2305,23 @@ const server = {
|
|
2197
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}`)
|
2198
2306
|
});
|
2199
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
|
+
|
2200
2325
|
|
2201
2326
|
if (newStudent.length > 0) {
|
2202
2327
|
// Associate userIds with new students
|
@@ -2772,6 +2897,8 @@ async function runServerFunctions() {
|
|
2772
2897
|
|
2773
2898
|
module.exports = {
|
2774
2899
|
serverTable: server,
|
2900
|
+
AcademicYear: server.AcademicYear,
|
2901
|
+
Semester: server.Semester,
|
2775
2902
|
Campus: server.Campus,
|
2776
2903
|
College: server.College,
|
2777
2904
|
AcademicDepartments: server.AcademicDepartment,
|
@@ -2779,8 +2906,6 @@ module.exports = {
|
|
2779
2906
|
Room: server.Room,
|
2780
2907
|
Instructor: server.Instructor,
|
2781
2908
|
AcadDeptInstructor: server.AcadDeptInstructor,
|
2782
|
-
AcademicYear: server.AcademicYear,
|
2783
|
-
Semester: server.Semester,
|
2784
2909
|
Subject: server.Subject,
|
2785
2910
|
Schedule: server.Schedule,
|
2786
2911
|
Student: server.Student,
|