lms-sync 1.0.93 → 1.0.94

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -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 Campus(){
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(" Campuses Migration ")
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 Campuses.max('_id'); //Fetch maximum _id directly from the campuses model
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
- let maxIdSems = maxIdsSem || 0;
48
- let maxIdUsers = maxIdsUser || 0;
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 userMail = await Users.findOne({ where: { email: 'ccci_integrator@gmail.com' } });
69
+ const acadYearApi = await api.AcademicYear()
70
+ const userMail = await Users.findOne({ where: { email: 'ccci_integrator@gmail.com' } });
80
71
 
81
- let yearDefPayload = {
82
- from: 1799,
83
- to: 1800,
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
- // let semesterData = [
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
- // let [semdefaults, semcreateddef] = await Semesters.findOrCreate({
135
- // where: { code: semestersPayload.code},
136
- // defaults: semestersPayload
137
- // });
138
- // }
79
+ let uFrom = new Set()
80
+ let uTo = new Set()
139
81
 
140
- const campusApi = await api.Campus()
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
- let createdCounter = 0
157
- let errorCounter = 0
158
- let uniqueErrors = new Set()
84
+ const exYear = await AcademicYears.findAll()
85
+ const exYearMap = new Map(exYear.map(year => [`[${year.from} - ${year.to}]`, year]))
86
+
159
87
 
160
- let uCode = new Set()
161
- let uName = new Set()
88
+ for (let i = 0; i < acadYearResult.length; i++){
89
+ try {
90
+ let _acadyear = acadYearResult[i]
91
+ // console.log('_acadyear :>> ', _acadyear);
162
92
 
163
- let newCampus = []
93
+ let [from, to] = _acadyear.year.split('-')
164
94
 
165
- const existingCampus = await Campuses.findAll()
166
- const existingCampusMap = new Map(existingCampus.map(campus => [`[${campus.code}] - ${campus.name}`, campus]))
167
-
168
- for (let i = 0; i < campusApi.length; i++){
169
- try {
170
-
171
- let _campus = campusApi[i]
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 = 'Campuses' // sql counterpart main table
181
- let referenceId = _campus?.id // id of the data
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
- if(uCode.has(code) && uName.has(name)){
185
- const errorMsg = `Duplicate Payload Found: [${code}] - ${name}`
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 ( existingCampusMap.has(`[${code}] - ${name}`)){
193
- const existingCampus = existingCampusMap.get(`[${code}] - ${name}`)
194
- const errorMsg = `Existing Data Found:[${existingCampus.code}] - ${existingCampus.name}`
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
- uCode.add(code)
203
- uName.add(name)
204
- newCampus.push({
205
- name: _campus?.name,
206
- code: _campus?.code,
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
- logger.error(`Error occurred: ${error.stack} ${error}`);
148
+ ;
149
+ logger.error(`Error occurred: ${error.stack} ${error}`);
221
150
  }
222
151
  }
223
152
 
224
- // bulk create new campus Records
225
- if (newCampus.length > 0) {
226
- await Campuses.bulkCreate(newCampus)
227
- createdCounter += newCampus.length
228
-
229
- newCampus.forEach((campus, index) => {
230
- logger.info(`${index + 1}/${index + 1}: New Campus Record Created: [${campus.code}], ${campus.name}`)
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('Campus Data Migration Completed');
238
- logger.info(`Total Successful Campus Records Created: ${createdCounter}/${createdCounter}`);
239
- logger.info(`Total Existing Campus Records: ${errorCounter}/${errorCounter}`);
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 College(){
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(" Colleges Migration ")
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 Colleges.max('_id'); // Fetch maximum _id directly from the Colleges model
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}."Colleges__id_seq"`);
273
- await db.sequelize.query(`ALTER SEQUENCE ${db_schema}."Colleges__id_seq" RESTART WITH ${maxId + 1}`);
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
- const campusSeq = await Campuses.findAll()
281
- const userMail = await Users.findOne({ where: { email: 'ccci_integrator@gmail.com' } });
282
- const campusDefault = await Campuses.findOne({ where: { name: 'Campus Default' } });
283
-
284
- let defaultPayload = {
285
- name: 'Colleges Default',
286
- code: 'DefCol',
287
- campusId: campusDefault._id,
288
- modifiedById: userMail?._id,
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 [defaults, createddef] = await Colleges.findOrCreate({
293
- where: { name: defaultPayload.name, code: defaultPayload.code},
294
- defaults: defaultPayload
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 uName = new Set()
232
+ let uDesc = new Set()
303
233
 
304
- let newColleges = []
234
+ let newYears = []
305
235
 
306
- const existingCollege = await Colleges.findAll()
307
- const existingCollegeMap = new Map(existingCollege.map(college => [`[${college.code}] - ${college.name}`, college]))
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 < collegeApi.length; i++){
240
+ for (let i = 0; i < acadYearResult.length; i++){
310
241
  try {
311
- let _college = collegeApi[i]
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 = 'Colleges' // sql counterpart main table
325
- let referenceId = _college.id // id of the data
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
- if(uCode.has(code) && uName.has(name)){
329
- const errorMsg = `Duplicate Payload Found: [${code}] - ${name}`
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 ( existingCollegeMap.has(`[${code}] - ${name}`)){
337
- const existingCollege = existingCollegeMap.get(`[${code}] - ${name}`)
338
- const errorMsg = `Existing Data Found:[${existingCollege.code}] - ${existingCollege.name}`
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
- uName.add(name)
348
- newColleges.push({
349
- name: _college?.name,
350
- code: _college?.code,
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
- // bulk create new campus Records
372
- if (newColleges.length > 0) {
373
- await Colleges.bulkCreate(newColleges)
374
- createdCounter += newColleges.length
375
-
376
- newColleges.forEach((colleges, index) => {
377
- logger.info(`${index + 1}/${index + 1}: New Colleges Record Created: [${colleges.code}], ${colleges.name}`)
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('College Data Migration Completed');
387
- logger.info(`Total Successful College Records Created: ${createdCounter}/${createdCounter}`);
388
- logger.info(`Total Existing College Records: ${errorCounter}/${errorCounter}`);
389
- logger.info(`Total Records: ${itemLength}`)
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: 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 AcademicDepartment(){
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(" Academic Departments Migration ")
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 AcademicDepartments.max('_id'); // Fetch maximum _id directly from the AcademicDepartments model
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
- await db.sequelize.query(`CREATE SEQUENCE IF NOT EXISTS ${db_schema}."AcademicDepartments__id_seq"`);
422
- await db.sequelize.query(`ALTER SEQUENCE ${db_schema}."AcademicDepartments__id_seq" RESTART WITH ${maxId + 1}`);
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
- const campusSeq = await Campuses.findAll()
431
- const collegeSeq = await Colleges.findAll()
432
- const departmentSeq = await AcademicDepartments.findAll()
433
- const userMail = await Users.findOne({ where: { email: 'ccci_integrator@gmail.com' } });
434
- const campusDefault = await Campuses.findOne({ where: { name: 'Campus Default' } });
435
- const collegeDefault = await Colleges.findOne({ where: { name: 'Colleges Default' } });
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 defaultPayload = {
438
- name: 'AcademicDepartments Default',
439
- code: 'AcadDeptDef',
440
- campusId: campusDefault._id,
441
- collegeId: collegeDefault._id,
442
- chairPersonId: 99999,
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 AcademicDepartments.findOrCreate({
448
- where: { name: defaultPayload.name, code: defaultPayload.code},
449
- defaults: defaultPayload
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 uCodeTwo = new Set()
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
- for (let i = 0; i < departmentApi.length; i++){
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
- let _acadDept = departmentApi[i]
472
- let _college = collegeSeq.find( col => col.code === _acadDept?.code)
473
- let college = collegeApi.find( cols => cols.code === _acadDept?.code)
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
- let name = _acadDept?.name
480
- let code = _acadDept?.code
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 = 'Departments' // sql counterpart main table
484
- let referenceId = _acadDept.id // id of the data
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 ( exAcadDeptMap.has(`[${code}] - ${name}`)){
496
- const exAcadDept = exAcadDeptMap.get(`[${code}] - ${name}`)
497
- const errorMsg = `Existing Data Found:[${exAcadDept.code}] - ${exAcadDept.name}`
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
- newAcadDept.push({
508
- name: _acadDept?.name,
509
- code: _acadDept?.code,
510
- collegeId: _college?._id??collegeDefault?._id,
511
- campusId: campus?._id??campusDefault?._id,
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
- logger.error(`Error occurred: ${error.stack} ${error}`);
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
- //additional departments from instructors api
535
- for (let j = 0; j < instructorApi.length; j++) {
536
- try {
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
- let acadDepartmentMap = departmentApi.find(a => a.name === instructor?.department_name)
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
- let _acadDepartment = departmentSeq.find(b => b.name === acadDepartmentMap?.name)
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
- let campusMap = campusSeq.find(c => c._id === _acadDepartment?.campusId)
541
+ let totalSummary = {
542
+ itemLength: createdCounter + errorCounter,
543
+ error: errorCounter,
544
+ success: createdCounter
545
+ }
546
+ return totalSummary
546
547
 
547
- let campusDefault = "MSC - Boac Campus"
548
- let _campusDefault = campusSeq.find(ccc => ccc.name === campusDefault)
548
+ } catch (error) {
549
+ ;
550
+ logger.error(`Error occurred: ${error.stack} ${error}`);
551
+
552
+ }
553
+ },
549
554
 
550
- let code = instructor?.department_name ?? 'CODE'
551
- code = code.split(/\s+/).map((word) => word.charAt(0).toUpperCase()).join('')
555
+ async College(){
556
+ try {
557
+ await db.sequelize.query('DROP FUNCTION IF EXISTS pg_temp.testfunc()');
552
558
 
553
- let name = instructor?.department_name
559
+ console.log("");
560
+ console.log("########################################################")
561
+ console.log(" Colleges Migration ")
562
+ console.log("########################################################")
563
+ console.log("");
554
564
 
555
- if(uCodeTwo.has(code) && uNameTwo.has(name)){
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
- if(!uniqueErrors.has(errorMsg)){
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
- else if ( exAcadDeptMapTwo.has(`[${code}] - ${name}`)){
564
- const exAcadDeptTwo = exAcadDeptMapTwo.get(`[${code}] - ${name}`)
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
- logger.error(`${errorCounter + 1}/${errorCounter + 1}: ${errorMsg}`)
568
- uniqueErrors.add(errorMsg)
569
- errorCounter++
636
+ logger.error(`${errorCounter + 1}/${errorCounter + 1}: ${errorMsg}`)
637
+ uniqueErrors.add(errorMsg)
638
+ errorCounter++
570
639
  }
571
- }
640
+ }
572
641
  else{
573
- uCodeTwo.add(code)
574
- uNameTwo.add(name)
575
- newAcadDeptTwo.push({
576
- name: instructor?.department_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
- campusId: campusMap?._id??_campusDefault?._id,
581
- collegeId: collegeDefault?._id,
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
- logger.error(`Error occurred: ${error} ${error.stack}`);
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
- newAcadDeptTwo.forEach((deptTwo, index) => {
596
- logger.info(`${index + 1}/${index + 1}: New Academic Department Record Created: [${deptTwo.code}], ${deptTwo.name}`)
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('Academic Department Data Migration Completed');
604
- logger.info(`Total Successful Academic Department Records Created: ${createdCounter}/${createdCounter}`);
605
- logger.info(`Total Existing Academic Department Records: ${errorCounter}/${errorCounter}`);
606
- logger.info(`Total Records: ${createdCounter + errorCounter}`);
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: createdCounter + errorCounter,
691
+ itemLength: itemLength,
613
692
  error: errorCounter,
614
693
  success: createdCounter
615
694
  }
616
695
  return totalSummary
617
696
 
618
697
  } catch (error) {
619
- logger.error(`Error occurred: ${error} ${error.stack}`);
620
- logger.error(`Error occurredsss: ${error.stack}`);
698
+ ;
699
+ logger.error(`Error occurred: ${error.stack} ${error}`);
700
+
621
701
  }
622
702
  },
623
703
 
624
- async Instructor(){
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(" Instructors Migrations ")
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 Users.max('_id'); //Fetch maximum _id directly from the Users model
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
- let maxIdIns = maxIdsIns|| 0;
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 employeeSeq = await Employees.findAll()
659
- const userSeq = await Users.findAll()
660
-
661
- const userMail = await Users.findOne({ where: { email: 'ccci_integrator@gmail.com' } });
662
- if (!userMail){}
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
- firstName: 'Instructor',
669
- lastName: 'Default',
670
- middleName: 'Migration',
671
- employeeNumber: '_Instructor',
672
- departmentId: departmentDefault?._id,
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 Instructors.findOrCreate({
679
- where: { employeeNumber: defaultPayload.employeeNumber, lastName: defaultPayload.lastName},
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 uEmail = new Set()
688
- let uPass = new Set()
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 => [`[${usr.email} - ${usr.password} ${usr.temporaryPassword}] - ${usr.lastName}, ${usr.firstName} ${usr.middleName} ${usr.adminScopes}`, usr]))
994
+ const exUserMap = new Map(exUser.map(usr => [`${usr.lastName}, ${usr.firstName} ${usr.middleName}`, usr]))
995
+ // const exUserMap = new Map(exUser.map(usr => [`[${usr.email} - ${usr.password} ${usr.temporaryPassword}] - ${usr.lastName}, ${usr.firstName} ${usr.middleName} ${usr.adminScopes}`, usr]))
699
996
 
700
997
  let uDept = new Set()
701
998
  let uCamp = new Set()
@@ -709,6 +1006,15 @@ const server = {
709
1006
  const exInst = await Instructors.findAll()
710
1007
  const exInstMap = new Map(exInst.map(inst => [`[${inst.employeeNumber}] - ${inst.lastName}, ${inst.firstName} ${inst.middleName} [${inst.departmentId}, ${inst.campusId}]` , inst]))
711
1008
 
1009
+ let uApplication = new Set()
1010
+ let uRole = new Set ()
1011
+ let uUser = new Set ()
1012
+
1013
+ let newUserRole = []
1014
+
1015
+ const exURole = await UserRoles.findAll()
1016
+ const exURoleMap = new Map (exURole.map( role => [`${role.applicationId} ${role.roleId} ${role.userId}`, role]))
1017
+
712
1018
  for (let i = 0; i < instructorApi.length; i++){
713
1019
  try {
714
1020
  let _instructor = instructorApi[i]
@@ -732,17 +1038,6 @@ const server = {
732
1038
  let campusDefault = "MSC - Boac Campus"
733
1039
  let _campusDefault = campusSeq.find(ccc => ccc.name === campusDefault)
734
1040
 
735
- let role = _instructor?.role
736
- let isChairPerson = false
737
- let isDean = false
738
-
739
- if(role === "Program Chair"){
740
- isChairPerson = true
741
- }
742
- if(role === "Dean"){
743
- isDean = true
744
- }
745
-
746
1041
  let migratedAt = new Date() //present date of the migration
747
1042
  let migratedTable = 'Instructors' // sql counterpart main table
748
1043
  let referenceId = _instructor?.id // id of the data
@@ -763,27 +1058,62 @@ const server = {
763
1058
  let getfNameU = _instructor?.first_name.split("")[0].toUpperCase()||""
764
1059
  let getfNameL = _instructor?.first_name.split("")[0].toLowerCase()||""
765
1060
  let getlName = _instructor?.last_name.toLowerCase().replace(/\s/g, '')?? ""
1061
+ let lastNameWithoutTitles = _instructor?.last_name.split(',')[0].toLowerCase().replace(/\s/g, '')?? ""
1062
+ let _lastName = _instructor?.last_name.split(',')[0].replace(/\s/g, '')?? ""
766
1063
 
767
- let email = `${employeeNumber}.${getfNameL}${getlName}@mscmarinduque.edu.ph`
768
- let password = `${employeeNumber}${getfNameU}${getlName}`
1064
+
1065
+ let email = `${employeeNumber}.${getfNameL}${lastNameWithoutTitles}@mscmarinduque.edu.ph`
1066
+ let password = `${employeeNumber}${getfNameU}${lastNameWithoutTitles}`
769
1067
  const hashedPassword = await bcrypt.hash(password, saltRounds);
770
1068
 
771
- let temporaryPassword = getUserName
1069
+ let temporaryPassword = `${employeeNumber}${getfNameU}${lastNameWithoutTitles}`
772
1070
  let adminScopes = []
773
1071
 
774
- // console.log('userId :>> ', userId);
1072
+ const userApp = await Applications.findOne({ where: { name: "Learning Management System - Instructor" }})
775
1073
 
776
- if(uEmail.has(email) && uPass.has(password) && uTPass.has(temporaryPassword) && uULname.has(lastName) && uUFname.has(firstName) && uUMname.has(middleName) && uScopes.has(adminScopes)){
777
- const errorMsg = `Duplicate Payload Found: [${email} - ${password} ${temporaryPassword}] - ${lastName}, ${firstName} ${middleName} ${adminScopes}`
778
- if(!uniqueErrors.has(errorMsg)){
779
- // logger.error(`${errorCounter + 1}/${errorCounter + 1}: ${errorMsg}`)
780
- uniqueErrors.add(errorMsg)
781
- // errorCounter++
1074
+ let role = _instructor?.role
1075
+ let isChairPerson = false
1076
+ let isDean = false
1077
+
1078
+ if(role === "Program Chair"){
1079
+ isChairPerson = true
1080
+ }
1081
+ if(role === "Dean"){
1082
+ isDean = true
1083
+ }
1084
+
1085
+ let roleCategory
1086
+
1087
+ if (isDean === true){
1088
+ roleCategory = await Roles.findOne({where: {name: 'Dean'}})
1089
+
1090
+ }
1091
+ else if (isDean === true && departmentId){
1092
+ roleCategory = await Roles.findOne({where: {description: 'Access all sections under the department'}})
1093
+ }
1094
+ else{
1095
+ roleCategory = await Roles.findOne({where: {name: 'Instructor'}})
1096
+ }
1097
+
1098
+ let roleId = roleCategory?._id
1099
+ let applicationId = userApp?._id
1100
+
1101
+
1102
+
1103
+
1104
+ // console.log('userId :>> ', userId);
1105
+
1106
+ if(uULname.has(lastName) && uUFname.has(firstName)){
1107
+ const errorMsg = `Duplicate Payload Found: ${lastName}, ${firstName}`
1108
+ if(!uniqueErrors.has(errorMsg)){
1109
+ // logger.error(`${errorCounter + 1}/${errorCounter + 1}: ${errorMsg}`)
1110
+ uniqueErrors.add(errorMsg)
1111
+ // errorCounter++
782
1112
  }
783
1113
  }
784
- else if (exUserMap.has(`[${email} - ${password} ${temporaryPassword}] - ${lastName}, ${firstName} ${middleName} ${adminScopes}`)){
785
- const exUser = exUserMap.get(`[${email} - ${password} ${temporaryPassword}] - ${lastName}, ${firstName} ${middleName} ${adminScopes}`)
786
- const errorMsg = `Existing Data Found: [${exUser.email} - ${exUser.password} ${exUser.temporaryPassword}] - ${exUser.lastName}, ${exUser.firstName} ${exUser.middleName} ${exUser.adminScopes}`
1114
+ else if (exUserMap.has(`${lastName}, ${firstName} ${middleName}`)){
1115
+ const exUser = exUserMap.get(`${lastName}, ${firstName} ${middleName}`)
1116
+ const errorMsg = `Existing Data Found: ${exUser.lastName}, ${exUser.firstName}`
787
1117
  if(!uniqueErrors.has(errorMsg)){
788
1118
  // logger.error(`${errorCounter + 1}/${errorCounter + 1}: ${errorMsg}`)
789
1119
  uniqueErrors.add(errorMsg)
@@ -800,7 +1130,7 @@ const server = {
800
1130
  uScopes.add(adminScopes)
801
1131
  newUser.push({
802
1132
  firstName: _instructor?.first_name,
803
- lastName: _instructor?.last_name,
1133
+ lastName: _lastName,
804
1134
  middleName: _instructor?.middle_name,
805
1135
  password: hashedPassword,
806
1136
  temporaryPassword: password,
@@ -814,7 +1144,24 @@ const server = {
814
1144
  isMigrated,
815
1145
  })
816
1146
  }
817
-
1147
+
1148
+ //user roles creation
1149
+ if(
1150
+ uApplication.add(applicationId),
1151
+ uRole.add(roleId),
1152
+ uUser.add(userId)){
1153
+ newUserRole.push({
1154
+ applicationId,
1155
+ roleId,
1156
+ userId,
1157
+ migratedAt,
1158
+ migratedTable,
1159
+ isMigrated,
1160
+ })
1161
+ }
1162
+
1163
+
1164
+ //instructors creation
818
1165
  if(uNum.has(employeeNumber) && uLname.has(lastName) && uFname.has(firstName) && uMname.has(middleName) && uDept.has(departmentId) && uCamp.has(campusId)){
819
1166
  const errorMsg = `Duplicate Payload Found: [${employeeNumber}] - ${lastName}, ${firstName} ${middleName} [departmentId: ${departmentId}, campusId:${campusId}]`
820
1167
  if(!uniqueErrors.has(errorMsg)){
@@ -841,7 +1188,7 @@ const server = {
841
1188
  uCamp.add(campusId)
842
1189
  newInstructor.push({
843
1190
  firstName: _instructor?.first_name,
844
- lastName: _instructor?.last_name,
1191
+ lastName: _lastName,
845
1192
  middleName: _instructor?.middle_name,
846
1193
  employeeNumber: _instructor?.faculty_id,
847
1194
  departmentId: _acadDepartment?._id??departmentDefault?._id,
@@ -873,6 +1220,22 @@ const server = {
873
1220
  // logger.info(`${index + 1}/${index + 1}: New Instructor User Record Created: [${user.email} - ${user.password} ${user.temporaryPassword}] - ${user.lastName}, ${user.firstName} ${user.middleName} ${user.adminScopes}`)
874
1221
  });
875
1222
  }
1223
+
1224
+ if (newUserRole.length > 0) {
1225
+ // Associate userIds with new instructors
1226
+ if(!newUserRole.userId){
1227
+ newUserRole = newUserRole.map((inst, index) => ({
1228
+ ...inst,
1229
+ userId: userIds[index]
1230
+ }));
1231
+ }
1232
+ await UserRoles.bulkCreate(newUserRole);
1233
+ createdCounter += newUserRole.length;
1234
+
1235
+ newUserRole.forEach((inst, index) => {
1236
+ logger.info(`${index + 1}/${index + 1}: User Role Created: ${inst.applicationId} ${inst.roleId} ${inst.userId}`);
1237
+ });
1238
+ }
876
1239
 
877
1240
 
878
1241
  if (newInstructor.length > 0) {
@@ -890,565 +1253,261 @@ const server = {
890
1253
  logger.info(`${index + 1}/${index + 1}: New Instructor Record Created: [${inst.employeeNumber}] - ${inst.lastName}, ${inst.firstName} ${inst.middleName} [ departmentId: ${inst.departmentId}, campusId: ${inst.campusId}]`);
891
1254
  });
892
1255
  }
893
-
894
-
895
-
896
- console.log("");
897
- console.log("########################################################")
898
- console.log("")
899
- logger.info('Instructors Data Migration Completed');
900
- logger.info(`Total Successful Instructors Records Created: ${createdCounter}/${createdCounter}`);
901
- logger.info(`Total Existing Instructors Records: ${errorCounter}/${errorCounter}`);
902
- logger.info(`Total Records: ${createdCounter + errorCounter}`);
903
- console.log("")
904
- console.log("########################################################")
905
- console.log("")
906
-
907
- let totalSummary = {
908
- itemLength: createdCounter + errorCounter,
909
- error: errorCounter,
910
- success: createdCounter
911
- }
912
- return totalSummary
913
-
914
- } catch (error) {
915
- ;
916
- logger.error(`Error occurred: ${error} ${error.stack} `);
917
-
918
- }
919
- },
920
-
921
- async AcadDeptInstructor(){
922
- try {
923
- await db.sequelize.query('DROP FUNCTION IF EXISTS pg_temp.testfunc()');
924
-
925
- console.log("");
926
- console.log("########################################################")
927
- console.log(" Academic Department Instructors Migrations ")
928
- console.log("########################################################")
929
- console.log("");
930
-
931
- const db_schema = schema
932
- let maxIds = await AcademicDepartmentInstructors.max('_id'); //Fetch maximum _id directly from the Users model
933
- let maxId = maxIds|| 0;
934
- await db.sequelize.query(`CREATE SEQUENCE IF NOT EXISTS ${db_schema}."AcademicDepartmentInstructors__id_seq"`);
935
- await db.sequelize.query(`ALTER SEQUENCE ${db_schema}."AcademicDepartmentInstructors__id_seq" RESTART WITH ${maxId + 1}`);
936
- await db.sequelize.query(`DROP FUNCTION IF EXISTS ${db_schema}."pg_temp.testfunc()"`);
937
-
938
- const instructorApi = await api.Instructor()
939
-
940
- const instructorSeq = await Instructors.findAll()
941
- const departmentSeq = await AcademicDepartments.findAll()
942
-
943
- const userMail = await Users.findOne({ where: { email: 'ccci_integrator@gmail.com' } });
944
- if (!userMail){}
945
-
946
- let createdCounter = 0
947
- let errorCounter = 0
948
- let uniqueErrors = new Set()
949
-
950
- for(let i = 0; i < instructorApi.length; i++){
951
- try {
952
- let instructor = instructorApi[i]
953
-
954
- let _instructor = instructorSeq.find(num => num.employeeNumber === instructor?.faculty_id)
955
- let _department = departmentSeq.find(dep => dep._id === _instructor?.departmentId)
956
-
957
- let migratedAt = new Date() //present date of the migration
958
- let migratedTable = 'Instructors' // sql counterpart main table
959
- let referenceId = _instructor?.id // id of the data
960
- let isMigrated = true
961
-
962
- let modifiedById = userMail._id
963
- let createdById = userMail._id
964
-
965
- let [record, created] = await AcademicDepartmentInstructors.findOrCreate({
966
- where:{
967
- instructorId: _instructor?._id,
968
- academicDepartmentId: _department?._id,
969
- },
970
- defaults:{
971
- instructorId: _instructor?._id,
972
- academicDepartmentId: _department?._id,
973
- modifiedById,
974
- createdById,
975
- migratedAt,
976
- migratedTable,
977
- isMigrated,
978
- }
979
- })
980
- if (created){
981
- logger.info(`${createdCounter + 1}/${createdCounter + 1} New Academic Department Instructor Record Created: instructorId: ${record.instructorId}, academicDepartmentId: ${record.academicDepartmentId} `)
982
- createdCounter++;
983
- }
984
- else {
985
- const errorMsg = `Academic Department Instructor Record Already Exists: instructorId: ${record.instructorId}, academicDepartmentId: ${record.academicDepartmentId}`;
986
-
987
- if (!uniqueErrors.has(errorMsg)) {
988
- logger.error(`${errorCounter + 1}/${errorCounter + 1} ${errorMsg}`);
989
- uniqueErrors.add(errorMsg);
990
- errorCounter++;
991
- }
992
-
993
- }
994
- } catch (error) {
995
- logger.error(`Error occurred: ${error} ${error.stack}`);
996
- }
997
- }
998
- let items = createdCounter + errorCounter
999
- console.log("");
1000
- console.log("########################################################")
1001
- console.log("")
1002
- logger.info('Academic Department Instructors Data Migration Completed');
1003
- logger.info(`Total Successful Records Created: ${createdCounter}/${createdCounter}`);
1004
- logger.info(`Total Existing Records: ${errorCounter}/${errorCounter}`);
1005
- logger.info(`Total Record Fetched: ${items} `)
1006
- console.log("")
1007
- console.log("########################################################")
1008
- console.log("")
1009
-
1010
- let totalSummary = {
1011
- itemLength: items,
1012
- error: errorCounter,
1013
- success: createdCounter
1014
- }
1015
- return totalSummary
1016
-
1017
- } catch (error) {
1018
- logger.error(`Error occurred: ${error} ${error.stack}`);
1019
- }
1020
- },
1021
-
1022
- async Course(){
1023
- try {
1024
- await db.sequelize.query('DROP FUNCTION IF EXISTS pg_temp.testfunc()');
1025
-
1026
- console.log("");
1027
- console.log("########################################################")
1028
- console.log(" Courses Migration ")
1029
- console.log("########################################################")
1030
- console.log("");
1031
-
1032
- const db_schema = schema
1033
- let maxIds = await Courses.max('_id'); //Fetch maximum _id directly from the Courses model
1034
- let maxId = maxIds|| 0;
1035
- await db.sequelize.query(`CREATE SEQUENCE IF NOT EXISTS ${db_schema}."Courses__id_seq"`);
1036
- await db.sequelize.query(`ALTER SEQUENCE ${db_schema}."Courses__id_seq" RESTART WITH ${maxId + 1}`);
1037
- await db.sequelize.query(`DROP FUNCTION IF EXISTS ${db_schema}."pg_temp.testfunc()"`);
1038
-
1039
- const studentApi = (await api.Student()).data
1040
-
1041
- const courseApi = await api.Course()
1042
- const collegeApi = await api.College()
1043
- const departmentApi = await api.Department()
1044
-
1045
- const acadDeptSeq = await AcademicDepartments.findAll()
1046
-
1047
- const campusSeq = await Campuses.findAll()
1048
- const userMail = await Users.findOne({ where: { email: 'ccci_integrator@gmail.com' } });
1049
- const campusDefault = await Campuses.findOne({ where: { name: 'Campus Default' } });
1050
- const departmentDefault = await AcademicDepartments.findOne({ where: { name: 'AcademicDepartments Default' } });
1051
-
1052
- let defaultPayload = {
1053
- name: 'Course Default',
1054
- code: 'CORDEF',
1055
- major: 'Major Course',
1056
- campusId: campusDefault._id,
1057
- departmentId: departmentDefault._id,
1058
- modifiedById: userMail?._id,
1059
- createdById: userMail?._id
1060
- };
1061
-
1062
- let [defaults, createddef] = await Courses.findOrCreate({
1063
- where: { name: defaultPayload.name, code: defaultPayload.code},
1064
- defaults: defaultPayload
1065
- });
1066
-
1067
-
1068
- let createdCounter = 0
1069
- let errorCounter = 0
1070
- let uniqueErrors = new Set()
1071
-
1072
- let uCode = new Set()
1073
- let uName = new Set()
1074
- let uMajor = new Set()
1075
- let uCampus = new Set()
1076
- let uDept = new Set()
1077
-
1078
- let newCourse = []
1079
-
1080
- const exCourse = await Courses.findAll()
1081
- const exCourseMap = new Map(exCourse.map(course => [`[${course.code}] - ${course.name}, ${course.major} [${course.campusId}, ${course.departmentId}]`, course]))
1082
-
1083
-
1084
- for (let i = 0; i < studentApi.length; i++){
1085
- try {
1086
-
1087
- let course = studentApi[i]
1088
- let courseCode = courseApi.find(crs => crs.name === course?.course)
1089
- let campus = campusSeq.find(camp => camp.name === course?.campus)
1090
-
1091
- let college = collegeApi.find(col => col.name === course?.college)
1092
- let department = departmentApi.find(dep => dep.name === college?.name)
1093
- let _department = acadDeptSeq.find(ad => ad.name === department?.name)
1094
-
1095
- let modifiedById = userMail?._id
1096
- let createdById = userMail?._id
1097
-
1098
- let name = course?.course
1099
- let code = courseCode?.code
1100
- let major = course?.major
1101
- let campusId = campus?._id??null
1102
- let departmentId = _department?._id??null
1103
-
1104
- let migratedAt = new Date() //present date of the migration
1105
- let migratedTable = 'Courses' // sql counterpart main table
1106
- let referenceId = courseCode?.id // id of the data
1107
- let isMigrated = true
1108
-
1109
-
1110
- if(uCode.has(code) && uName.has(name) && uMajor.has(major) && uCampus.has(campusId) && uDept.has(departmentId)){
1111
- const errorMsg = `Duplicate Payload Found: [${code}] - ${name}, ${major} [campusId: ${campusId}, academicDepartmentId: ${departmentId}]`
1112
- if(!uniqueErrors.has(errorMsg)){
1113
- logger.error(`${errorCounter + 1}/${errorCounter + 1}: ${errorMsg}`)
1114
- uniqueErrors.add(errorMsg)
1115
- errorCounter++
1116
- }
1117
- }
1118
- else if ( exCourseMap.has(`[${code}] - ${name}, ${major} [${campusId}, ${departmentId}]`)){
1119
- const exCourse = exCourseMap.get(`[${code}] - ${name}, ${major} [${campusId}, ${departmentId}]`)
1120
- const errorMsg = `Existing Data Found: [${exCourse.code}] - ${exCourse.name}, ${exCourse.major} [campusId: ${exCourse.campusId}, academicDepartmentId: ${exCourse.departmentId}]`
1121
- if(!uniqueErrors.has(errorMsg)){
1122
- logger.error(`${errorCounter + 1}/${errorCounter + 1}: ${errorMsg}`)
1123
- uniqueErrors.add(errorMsg)
1124
- errorCounter++
1125
- }
1126
- }
1127
- else{
1128
- uCode.add(code)
1129
- uName.add(name)
1130
- uMajor.add(major)
1131
- uCampus.add(campusId)
1132
- uDept.add(departmentId)
1133
- newCourse.push({
1134
- name: course?.course,
1135
- code: courseCode?.code,
1136
- major: course?.major,
1137
- campusId: campus?._id??campusDefault?._id,
1138
- departmentId: _department?._id??departmentDefault?._id,
1139
- modifiedById,
1140
- createdById,
1141
- migratedAt,
1142
- migratedTable,
1143
- referenceId,
1144
- isMigrated
1145
- })
1146
- }
1147
-
1148
- } catch (error) {
1149
- ;
1150
- logger.error(`Error occurred: ${error.stack} ${error}`);
1151
- }
1152
- }
1153
-
1154
- if (newCourse.length > 0) {
1155
- await Courses.bulkCreate(newCourse)
1156
- createdCounter += newCourse.length
1157
-
1158
- newCourse.forEach((course, index) => {
1159
- logger.info(`${index + 1}/${index + 1}: New Courses Record Created: [${course.code}] - ${course.name}, ${course.major} [courseId: ${course.campusId}, academicDepartmentId: ${course.departmentId}]`)
1160
- });
1161
- }
1256
+
1257
+
1162
1258
 
1163
1259
 
1164
1260
  console.log("");
1165
1261
  console.log("########################################################")
1166
1262
  console.log("")
1167
- logger.info('Course Data Migration Completed');
1168
- logger.info(`Total Successful Course Records Created: ${createdCounter}/${createdCounter}`);
1169
- 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}`);
1170
1267
  console.log("")
1171
1268
  console.log("########################################################")
1172
1269
  console.log("")
1173
1270
 
1174
1271
  let totalSummary = {
1175
- itemLength: courseApi.length,
1272
+ itemLength: createdCounter + errorCounter,
1176
1273
  error: errorCounter,
1177
1274
  success: createdCounter
1178
1275
  }
1179
-
1180
- uniqueErrors.clear();
1181
-
1182
1276
  return totalSummary
1183
-
1277
+
1184
1278
  } catch (error) {
1185
1279
  ;
1186
- logger.error(`Error occurred: ${error.stack} ${error}`);
1280
+ logger.error(`Error occurred: ${error} ${error.stack} `);
1281
+
1187
1282
  }
1188
1283
  },
1189
1284
 
1190
- async Room(){
1285
+ async AcadDeptInstructor(){
1191
1286
  try {
1192
1287
  await db.sequelize.query('DROP FUNCTION IF EXISTS pg_temp.testfunc()');
1193
1288
 
1194
1289
  console.log("");
1195
1290
  console.log("########################################################")
1196
- console.log(" Rooms Migration ")
1291
+ console.log(" Academic Department Instructors Migrations ")
1197
1292
  console.log("########################################################")
1198
1293
  console.log("");
1199
-
1294
+
1200
1295
  const db_schema = schema
1201
- let maxIds = await Rooms.max('_id'); // Fetch maximum _id directly from the Rooms model
1296
+ let maxIds = await AcademicDepartmentInstructors.max('_id'); //Fetch maximum _id directly from the Users model
1202
1297
  let maxId = maxIds|| 0;
1203
- await db.sequelize.query(`CREATE SEQUENCE IF NOT EXISTS ${db_schema}."Rooms__id_seq"`);
1204
- await db.sequelize.query(`ALTER SEQUENCE ${db_schema}."Rooms__id_seq" RESTART WITH ${maxId + 1}`);
1298
+ await db.sequelize.query(`CREATE SEQUENCE IF NOT EXISTS ${db_schema}."AcademicDepartmentInstructors__id_seq"`);
1299
+ await db.sequelize.query(`ALTER SEQUENCE ${db_schema}."AcademicDepartmentInstructors__id_seq" RESTART WITH ${maxId + 1}`);
1205
1300
  await db.sequelize.query(`DROP FUNCTION IF EXISTS ${db_schema}."pg_temp.testfunc()"`);
1206
1301
 
1207
- const subjectRoom = await api.Subject()
1208
- const roomApi = await api.Room()
1302
+ const instructorApi = await api.Instructor()
1209
1303
 
1210
- const subjectSeq = await Subjects.findAll()
1211
- const campusSeq = await Campuses.findAll()
1304
+ const instructorSeq = await Instructors.findAll()
1212
1305
  const departmentSeq = await AcademicDepartments.findAll()
1213
1306
 
1214
- const userMail = await Users.findOne({ where: { email: 'ccci_integrator@gmail.com' } });
1215
- const campusesDefault = await Campuses.findOne({ where: { name: 'Campus Default' } });
1216
-
1217
- let defaultPayload = {
1218
- name: 'Rooms Default',
1219
- campusId: campusesDefault._id,
1220
- capacity: 40,
1221
- modifiedById: userMail?._id,
1222
- createdById: userMail?._id
1223
- };
1224
-
1225
- let [defaults, createddef] = await Rooms.findOrCreate({
1226
- where: { name: defaultPayload.name},
1227
- defaults: defaultPayload
1228
- });
1307
+ const userMail = await Users.findOne({ where: { email: 'ccci_integrator@gmail.com' } });
1308
+ if (!userMail){}
1229
1309
 
1230
1310
  let createdCounter = 0
1231
1311
  let errorCounter = 0
1232
1312
  let uniqueErrors = new Set()
1233
1313
 
1234
- let uName = new Set()
1235
- let uCampus = new Set()
1236
-
1237
- let newRoom = []
1238
-
1239
- const exRoom = await Rooms.findAll()
1240
- const exRoomMap = new Map(exRoom.map(room => [`[${room.name}] - ${room.campusId}`, room]))
1241
-
1242
-
1243
- for (let i = 0; i < roomApi.length; i++){
1314
+ for(let i = 0; i < instructorApi.length; i++){
1244
1315
  try {
1245
- let _room = roomApi[i]
1246
-
1247
- let _subject = subjectRoom.find(r => r.room_id === _room?.id)
1248
- let _subjects = subjectSeq.find(s => s.name === _subject?.name)
1249
- let _department = departmentSeq.find(dep => dep._id === _subjects?.departmentId)
1250
- let _campus = campusSeq.find (cam => cam._id === _department?.campusId)
1251
-
1252
- let capacity = 50
1253
- let campusDefault = "MSC - Boac Campus"
1254
- let _campusDefault = campusSeq.find(ccc => ccc.name === campusDefault)
1255
-
1256
- // return console.log('campusDefault :>> ', campusDefault);
1316
+ let instructor = instructorApi[i]
1257
1317
 
1258
- let modifiedById = userMail?._id
1259
- let createdById = userMail?._id
1318
+ let _instructor = instructorSeq.find(num => num.employeeNumber === instructor?.faculty_id)
1319
+ let _department = departmentSeq.find(dep => dep._id === _instructor?.departmentId)
1260
1320
 
1261
1321
  let migratedAt = new Date() //present date of the migration
1262
- let migratedTable = 'Rooms' // sql counterpart main table
1263
- let referenceId = _room?.id // id of the data
1322
+ let migratedTable = 'Instructors' // sql counterpart main table
1323
+ let referenceId = _instructor?.id // id of the data
1264
1324
  let isMigrated = true
1265
1325
 
1266
- let name = _room?.name
1267
- let campusId = _campus?._id??_campusDefault?._id??null
1326
+ let modifiedById = userMail._id
1327
+ let createdById = userMail._id
1268
1328
 
1269
- if(uName.has(name) && uCampus.has(campusId)){
1270
- const errorMsg = `Duplicate Payload Found: [${name}] - campusId: ${campusId}`
1271
- if(!uniqueErrors.has(errorMsg)){
1272
- logger.error(`${errorCounter + 1}/${errorCounter + 1}: ${errorMsg}`)
1273
- uniqueErrors.add(errorMsg)
1274
- errorCounter++
1275
- }
1276
- }
1277
- else if ( exRoomMap.has(`[${name}] - ${campusId}`)){
1278
- const exRoom = exRoomMap.get(`[${name}] - ${campusId}`)
1279
- const errorMsg = `Existing Data Found:[${exRoom.name}] - campusId: ${exRoom.campusId}`
1280
- if(!uniqueErrors.has(errorMsg)){
1281
- logger.error(`${errorCounter + 1}/${errorCounter + 1}: ${errorMsg}`)
1282
- uniqueErrors.add(errorMsg)
1283
- errorCounter++
1284
- }
1285
- }
1286
- else{
1287
- uName.add(name)
1288
- uCampus.add(campusId)
1289
- newRoom.push({
1290
- name: _room?.name,
1291
- campusId: _campus?._id??_campusDefault?._id??campusesDefault._id,
1292
- capacity,
1329
+ let [record, created] = await AcademicDepartmentInstructors.findOrCreate({
1330
+ where:{
1331
+ instructorId: _instructor?._id,
1332
+ academicDepartmentId: _department?._id,
1333
+ },
1334
+ defaults:{
1335
+ instructorId: _instructor?._id,
1336
+ academicDepartmentId: _department?._id,
1293
1337
  modifiedById,
1294
1338
  createdById,
1295
1339
  migratedAt,
1296
1340
  migratedTable,
1297
- referenceId,
1298
- isMigrated
1299
- })
1341
+ isMigrated,
1342
+ }
1343
+ })
1344
+ if (created){
1345
+ logger.info(`${createdCounter + 1}/${createdCounter + 1} New Academic Department Instructor Record Created: instructorId: ${record.instructorId}, academicDepartmentId: ${record.academicDepartmentId} `)
1346
+ createdCounter++;
1300
1347
  }
1301
-
1302
- } catch (error) {
1303
- ;
1304
- logger.error(`Error occurred: ${error.stack} ${error}`);
1305
- }
1306
- }
1348
+ else {
1349
+ const errorMsg = `Academic Department Instructor Record Already Exists: instructorId: ${record.instructorId}, academicDepartmentId: ${record.academicDepartmentId}`;
1307
1350
 
1308
- if (newRoom.length > 0) {
1309
- await Rooms.bulkCreate(newRoom)
1310
- createdCounter += newRoom.length
1311
-
1312
- newRoom.forEach((room, index) => {
1313
- logger.info(`${index + 1}/${index + 1}: New Rooms Record Created: [${room.name}], campusId: ${room.campusId}`)
1314
- });
1315
- }
1351
+ if (!uniqueErrors.has(errorMsg)) {
1352
+ logger.error(`${errorCounter + 1}/${errorCounter + 1} ${errorMsg}`);
1353
+ uniqueErrors.add(errorMsg);
1354
+ errorCounter++;
1355
+ }
1316
1356
 
1357
+ }
1358
+ } catch (error) {
1359
+ logger.error(`Error occurred: ${error} ${error.stack}`);
1360
+ }
1361
+ }
1362
+ let items = createdCounter + errorCounter
1317
1363
  console.log("");
1318
1364
  console.log("########################################################")
1319
1365
  console.log("")
1320
- logger.info('Room Data Migration Completed');
1321
- logger.info(`Total Successful Room Records Created: ${createdCounter}/${createdCounter}`);
1322
- logger.info(`Total Existing Room Records: ${errorCounter}/${errorCounter}`);
1323
- logger.info(`Total Records: ${createdCounter + errorCounter}`);
1366
+ logger.info('Academic Department Instructors Data Migration Completed');
1367
+ logger.info(`Total Successful Records Created: ${createdCounter}/${createdCounter}`);
1368
+ logger.info(`Total Existing Records: ${errorCounter}/${errorCounter}`);
1369
+ logger.info(`Total Record Fetched: ${items} `)
1324
1370
  console.log("")
1325
1371
  console.log("########################################################")
1326
1372
  console.log("")
1327
1373
 
1328
1374
  let totalSummary = {
1329
- itemLength: createdCounter + errorCounter,
1375
+ itemLength: items,
1330
1376
  error: errorCounter,
1331
1377
  success: createdCounter
1332
1378
  }
1333
1379
  return totalSummary
1334
1380
 
1335
1381
  } catch (error) {
1336
- logger.error(`Error occurred: ${error.stack} ${error}`);
1337
-
1382
+ logger.error(`Error occurred: ${error} ${error.stack}`);
1338
1383
  }
1339
1384
  },
1340
1385
 
1341
- async AcademicYear(){
1386
+ async Course(){
1342
1387
  try {
1343
1388
  await db.sequelize.query('DROP FUNCTION IF EXISTS pg_temp.testfunc()');
1344
1389
 
1345
1390
  console.log("");
1346
1391
  console.log("########################################################")
1347
- console.log(" Academic Years Migration ")
1392
+ console.log(" Courses Migration ")
1348
1393
  console.log("########################################################")
1349
1394
  console.log("");
1350
1395
 
1351
1396
  const db_schema = schema
1352
- let maxIds = await AcademicYears.max('_id'); // Fetch maximum _id directly from the AcademicYears model
1397
+ let maxIds = await Courses.max('_id'); //Fetch maximum _id directly from the Courses model
1353
1398
  let maxId = maxIds|| 0;
1354
- await db.sequelize.query(`CREATE SEQUENCE IF NOT EXISTS ${db_schema}."AcademicYears__id_seq"`);
1355
- await db.sequelize.query(`ALTER SEQUENCE ${db_schema}."AcademicYears__id_seq" RESTART WITH ${maxId + 1}`);
1399
+ await db.sequelize.query(`CREATE SEQUENCE IF NOT EXISTS ${db_schema}."Courses__id_seq"`);
1400
+ await db.sequelize.query(`ALTER SEQUENCE ${db_schema}."Courses__id_seq" RESTART WITH ${maxId + 1}`);
1356
1401
  await db.sequelize.query(`DROP FUNCTION IF EXISTS ${db_schema}."pg_temp.testfunc()"`);
1357
1402
 
1403
+ const studentApi = (await api.Student()).data
1404
+
1405
+ const courseApi = await api.Course()
1406
+ const collegeApi = await api.College()
1407
+ const departmentApi = await api.Department()
1408
+
1409
+ const acadDeptSeq = await AcademicDepartments.findAll()
1358
1410
 
1359
- let userDefPayload = {
1360
- email: 'ccci_integrator@gmail.com',
1361
- password: '$2a$12$Q.h3Q9IN6vsIxGBa/EgfOOABeXTcwxt4t9cu4nqAK.nczGRRtZJUS',
1362
- temporaryPassword: 'P@ssw0rd123',
1363
- firstName: 'Androi',
1364
- lastName: 'Pamisaran',
1365
- adminScopes: [],
1366
- createdAt: new Date(),
1367
- updatedAt: new Date()
1411
+ const campusSeq = await Campuses.findAll()
1412
+ const userMail = await Users.findOne({ where: { email: 'ccci_integrator@gmail.com' } });
1413
+ const campusDefault = await Campuses.findOne({ where: { name: 'Campus Default' } });
1414
+ const departmentDefault = await AcademicDepartments.findOne({ where: { name: 'AcademicDepartments Default' } });
1415
+
1416
+ let defaultPayload = {
1417
+ name: 'Course Default',
1418
+ code: 'CORDEF',
1419
+ major: 'Major Course',
1420
+ campusId: campusDefault._id,
1421
+ departmentId: departmentDefault._id,
1422
+ modifiedById: userMail?._id,
1423
+ createdById: userMail?._id
1368
1424
  };
1369
1425
 
1370
- let [userDefault, createdUser] = await Users.findOrCreate({
1371
- where: { email: userDefPayload.email },
1372
- defaults: userDefPayload
1373
- });
1426
+ let [defaults, createddef] = await Courses.findOrCreate({
1427
+ where: { name: defaultPayload.name, code: defaultPayload.code},
1428
+ defaults: defaultPayload
1429
+ });
1374
1430
 
1375
- const acadYearApi = await api.AcademicYear()
1376
- const userMail = await Users.findOne({ where: { email: 'ccci_integrator@gmail.com' } });
1377
1431
 
1378
1432
  let createdCounter = 0
1379
1433
  let errorCounter = 0
1380
1434
  let uniqueErrors = new Set()
1381
1435
 
1382
- const { acadYearResult, currentSchoolYear } = acadYearApi;
1383
-
1384
-
1385
- let uFrom = new Set()
1386
- let uTo = new Set()
1436
+ let uCode = new Set()
1437
+ let uName = new Set()
1438
+ let uMajor = new Set()
1439
+ let uCampus = new Set()
1440
+ let uDept = new Set()
1387
1441
 
1388
- let newYears = []
1442
+ let newCourse = []
1389
1443
 
1390
- const exYear = await AcademicYears.findAll()
1391
- const exYearMap = new Map(exYear.map(year => [`[${year.from} - ${year.to}]`, year]))
1444
+ const exCourse = await Courses.findAll()
1445
+ const exCourseMap = new Map(exCourse.map(course => [`[${course.code}] - ${course.name}, ${course.major} [${course.campusId}, ${course.departmentId}]`, course]))
1392
1446
 
1393
1447
 
1394
- for (let i = 0; i < acadYearResult.length; i++){
1448
+ for (let i = 0; i < studentApi.length; i++){
1395
1449
  try {
1396
- let _acadyear = acadYearResult[i]
1397
- // console.log('_acadyear :>> ', _acadyear);
1398
1450
 
1399
- let [from, to] = _acadyear.year.split('-')
1400
-
1401
- to = /^\d+$/.test(to) ? parseInt(to, 10) : null;
1402
- from = /^\d+$/.test(from) ? parseInt(from, 10) : null;
1403
-
1404
- let defaultDate = new Date()
1405
- let currentYear = defaultDate.getFullYear()
1406
- let previousYear = currentYear - 1
1451
+ let course = studentApi[i]
1452
+ let courseCode = courseApi.find(crs => crs.name === course?.course)
1453
+ let campus = campusSeq.find(camp => camp.name === course?.campus)
1407
1454
 
1408
- let isDefault = false
1409
- if(from == previousYear && to == currentYear) isDefault = true
1455
+ let college = collegeApi.find(col => col.name === course?.college)
1456
+ let department = departmentApi.find(dep => dep.name === college?.name)
1457
+ let _department = acadDeptSeq.find(ad => ad.name === department?.name)
1410
1458
 
1411
1459
  let modifiedById = userMail?._id
1412
1460
  let createdById = userMail?._id
1413
1461
 
1414
- let migratedAt = new Date() //present date of the migration
1415
- let migratedTable = 'AcademicYears' // sql counterpart main table
1416
- let referenceId = _acadyear?.id // id of the data
1417
- let isMigrated = true
1462
+ let name = course?.course
1463
+ let code = courseCode?.code
1464
+ let major = course?.major
1465
+ let campusId = campus?._id??null
1466
+ let departmentId = _department?._id??null
1418
1467
 
1468
+ let migratedAt = new Date() //present date of the migration
1469
+ let migratedTable = 'Courses' // sql counterpart main table
1470
+ let referenceId = courseCode?.id // id of the data
1471
+ let isMigrated = true
1419
1472
 
1420
- if(uFrom.has(from) && uTo.has(to)){
1421
- const errorMsg = `Duplicate Payload Found: [${from} - ${to}]`
1422
- if(!uniqueErrors.has(errorMsg)){
1423
- logger.error(`${errorCounter + 1}/${errorCounter + 1}: ${errorMsg}`)
1424
- uniqueErrors.add(errorMsg)
1425
- errorCounter++
1426
- }
1427
- }
1428
- else if ( exYearMap.has(`[${from} - ${to}]`)){
1429
- const exYear = exYearMap.get(`[${from} - ${to}]`)
1430
- const errorMsg = `Existing Data Found:[${exYear.from} - ${exYear.to}]`
1431
- if(!uniqueErrors.has(errorMsg)){
1432
- logger.error(`${errorCounter + 1}/${errorCounter + 1}: ${errorMsg}`)
1433
- uniqueErrors.add(errorMsg)
1434
- errorCounter++
1473
+
1474
+ if(uCode.has(code) && uName.has(name) && uMajor.has(major) && uCampus.has(campusId) && uDept.has(departmentId)){
1475
+ const errorMsg = `Duplicate Payload Found: [${code}] - ${name}, ${major} [campusId: ${campusId}, academicDepartmentId: ${departmentId}]`
1476
+ if(!uniqueErrors.has(errorMsg)){
1477
+ logger.error(`${errorCounter + 1}/${errorCounter + 1}: ${errorMsg}`)
1478
+ uniqueErrors.add(errorMsg)
1479
+ errorCounter++
1480
+ }
1481
+ }
1482
+ else if ( exCourseMap.has(`[${code}] - ${name}, ${major} [${campusId}, ${departmentId}]`)){
1483
+ const exCourse = exCourseMap.get(`[${code}] - ${name}, ${major} [${campusId}, ${departmentId}]`)
1484
+ const errorMsg = `Existing Data Found: [${exCourse.code}] - ${exCourse.name}, ${exCourse.major} [campusId: ${exCourse.campusId}, academicDepartmentId: ${exCourse.departmentId}]`
1485
+ if(!uniqueErrors.has(errorMsg)){
1486
+ logger.error(`${errorCounter + 1}/${errorCounter + 1}: ${errorMsg}`)
1487
+ uniqueErrors.add(errorMsg)
1488
+ errorCounter++
1489
+ }
1490
+ }
1491
+ else{
1492
+ uCode.add(code)
1493
+ uName.add(name)
1494
+ uMajor.add(major)
1495
+ uCampus.add(campusId)
1496
+ uDept.add(departmentId)
1497
+ newCourse.push({
1498
+ name: course?.course,
1499
+ code: courseCode?.code,
1500
+ major: course?.major,
1501
+ campusId: campus?._id??campusDefault?._id,
1502
+ departmentId: _department?._id??departmentDefault?._id,
1503
+ modifiedById,
1504
+ createdById,
1505
+ migratedAt,
1506
+ migratedTable,
1507
+ referenceId,
1508
+ isMigrated
1509
+ })
1435
1510
  }
1436
- }
1437
- else{
1438
- uFrom.add(from)
1439
- uTo.add(to)
1440
- newYears.push({
1441
- from,
1442
- to,
1443
- modifiedById,
1444
- createdById,
1445
- default: isDefault,
1446
- migratedAt,
1447
- migratedTable,
1448
- referenceId,
1449
- isMigrated
1450
- })
1451
- }
1452
1511
 
1453
1512
  } catch (error) {
1454
1513
  ;
@@ -1456,120 +1515,132 @@ const server = {
1456
1515
  }
1457
1516
  }
1458
1517
 
1459
- if (newYears.length > 0) {
1460
- await AcademicYears.bulkCreate(newYears)
1461
- createdCounter += newYears.length
1518
+ if (newCourse.length > 0) {
1519
+ await Courses.bulkCreate(newCourse)
1520
+ createdCounter += newCourse.length
1462
1521
 
1463
- newYears.forEach((year, index) => {
1464
- logger.info(`${index + 1}/${index + 1}: New Academic Years Record Created: [${year.from} - ${year.to}]`)
1522
+ newCourse.forEach((course, index) => {
1523
+ logger.info(`${index + 1}/${index + 1}: New Courses Record Created: [${course.code}] - ${course.name}, ${course.major} [courseId: ${course.campusId}, academicDepartmentId: ${course.departmentId}]`)
1465
1524
  });
1466
1525
  }
1467
1526
 
1527
+
1468
1528
  console.log("");
1469
1529
  console.log("########################################################")
1470
1530
  console.log("")
1471
- logger.info('Academic Years Data Migration Completed');
1472
- logger.info(`Total Successful Academic Years Records Created: ${createdCounter}/${createdCounter}`);
1473
- logger.info(`Total Existing Academic Years Records: ${errorCounter}/${errorCounter}`);
1474
- logger.info(`Total Records: ${createdCounter + errorCounter}`);
1531
+ logger.info('Course Data Migration Completed');
1532
+ logger.info(`Total Successful Course Records Created: ${createdCounter}/${createdCounter}`);
1533
+ logger.info(`Total Existing Course Records: ${errorCounter}/${errorCounter}`);
1475
1534
  console.log("")
1476
1535
  console.log("########################################################")
1477
1536
  console.log("")
1478
1537
 
1479
1538
  let totalSummary = {
1480
- itemLength: createdCounter + errorCounter,
1539
+ itemLength: courseApi.length,
1481
1540
  error: errorCounter,
1482
1541
  success: createdCounter
1483
1542
  }
1484
- return totalSummary
1485
1543
 
1544
+ uniqueErrors.clear();
1545
+
1546
+ return totalSummary
1547
+
1486
1548
  } catch (error) {
1487
1549
  ;
1488
1550
  logger.error(`Error occurred: ${error.stack} ${error}`);
1489
-
1490
1551
  }
1491
1552
  },
1492
1553
 
1493
- async Semester(){
1554
+ async Room(){
1494
1555
  try {
1495
1556
  await db.sequelize.query('DROP FUNCTION IF EXISTS pg_temp.testfunc()');
1496
1557
 
1497
1558
  console.log("");
1498
1559
  console.log("########################################################")
1499
- console.log(" Semesters Migration ")
1560
+ console.log(" Rooms Migration ")
1500
1561
  console.log("########################################################")
1501
1562
  console.log("");
1502
1563
 
1503
1564
  const db_schema = schema
1504
- let maxIds = await AcademicYears.max('_id'); // Fetch maximum _id directly from the AcademicYears model
1565
+ let maxIds = await Rooms.max('_id'); // Fetch maximum _id directly from the Rooms model
1505
1566
  let maxId = maxIds|| 0;
1506
- await db.sequelize.query(`CREATE SEQUENCE IF NOT EXISTS ${db_schema}."Semesters__id_seq"`);
1507
- await db.sequelize.query(`ALTER SEQUENCE ${db_schema}."Semesters__id_seq" RESTART WITH ${maxId + 1}`);
1567
+ await db.sequelize.query(`CREATE SEQUENCE IF NOT EXISTS ${db_schema}."Rooms__id_seq"`);
1568
+ await db.sequelize.query(`ALTER SEQUENCE ${db_schema}."Rooms__id_seq" RESTART WITH ${maxId + 1}`);
1508
1569
  await db.sequelize.query(`DROP FUNCTION IF EXISTS ${db_schema}."pg_temp.testfunc()"`);
1509
1570
 
1571
+ const subjectRoom = await api.Subject()
1572
+ const roomApi = await api.Room()
1510
1573
 
1511
- let userDefPayload = {
1512
- email: 'ccci_integrator@gmail.com',
1513
- password: '$2a$12$Q.h3Q9IN6vsIxGBa/EgfOOABeXTcwxt4t9cu4nqAK.nczGRRtZJUS',
1514
- temporaryPassword: 'P@ssw0rd123',
1515
- firstName: 'Androi',
1516
- lastName: 'Pamisaran',
1517
- adminScopes: [],
1518
- createdAt: new Date(),
1519
- updatedAt: new Date()
1574
+ const subjectSeq = await Subjects.findAll()
1575
+ const campusSeq = await Campuses.findAll()
1576
+ const departmentSeq = await AcademicDepartments.findAll()
1577
+
1578
+ const userMail = await Users.findOne({ where: { email: 'ccci_integrator@gmail.com' } });
1579
+ const campusesDefault = await Campuses.findOne({ where: { name: 'Campus Default' } });
1580
+
1581
+ let defaultPayload = {
1582
+ name: 'Rooms Default',
1583
+ campusId: campusesDefault._id,
1584
+ capacity: 40,
1585
+ modifiedById: userMail?._id,
1586
+ createdById: userMail?._id
1520
1587
  };
1521
1588
 
1522
- let [userDefault, createdUser] = await Users.findOrCreate({
1523
- where: { email: userDefPayload.email },
1524
- defaults: userDefPayload
1525
- });
1526
-
1527
- const acadYearApi = await api.AcademicYear()
1528
- const userMail = await Users.findOne({ where: { email: 'ccci_integrator@gmail.com' } });
1589
+ let [defaults, createddef] = await Rooms.findOrCreate({
1590
+ where: { name: defaultPayload.name},
1591
+ defaults: defaultPayload
1592
+ });
1529
1593
 
1530
1594
  let createdCounter = 0
1531
1595
  let errorCounter = 0
1532
1596
  let uniqueErrors = new Set()
1533
1597
 
1534
- const { acadYearResult, currentSchoolYear } = acadYearApi;
1535
-
1536
-
1537
- let uCode = new Set()
1538
- let uDesc = new Set()
1598
+ let uName = new Set()
1599
+ let uCampus = new Set()
1539
1600
 
1540
- let newYears = []
1601
+ let newRoom = []
1541
1602
 
1542
- const exYear = await Semesters.findAll()
1543
- const exYearMap = new Map(exYear.map(sem => [`[${sem.code}] ${sem.description}`, sem]))
1603
+ const exRoom = await Rooms.findAll()
1604
+ const exRoomMap = new Map(exRoom.map(room => [`[${room.name}] - ${room.campusId}`, room]))
1544
1605
 
1545
1606
 
1546
- for (let i = 0; i < acadYearResult.length; i++){
1607
+ for (let i = 0; i < roomApi.length; i++){
1547
1608
  try {
1548
- let _acadyear = acadYearResult[i]
1609
+ let _room = roomApi[i]
1610
+
1611
+ let _subject = subjectRoom.find(r => r.room_id === _room?.id)
1612
+ let _subjects = subjectSeq.find(s => s.name === _subject?.name)
1613
+ let _department = departmentSeq.find(dep => dep._id === _subjects?.departmentId)
1614
+ let _campus = campusSeq.find (cam => cam._id === _department?.campusId)
1615
+
1616
+ let capacity = 50
1617
+ let campusDefault = "MSC - Boac Campus"
1618
+ let _campusDefault = campusSeq.find(ccc => ccc.name === campusDefault)
1619
+
1620
+ // return console.log('campusDefault :>> ', campusDefault);
1549
1621
 
1550
1622
  let modifiedById = userMail?._id
1551
1623
  let createdById = userMail?._id
1552
1624
 
1553
1625
  let migratedAt = new Date() //present date of the migration
1554
- let migratedTable = 'AcademicYears' // sql counterpart main table
1555
- let referenceId = _acadyear?.id // id of the data
1626
+ let migratedTable = 'Rooms' // sql counterpart main table
1627
+ let referenceId = _room?.id // id of the data
1556
1628
  let isMigrated = true
1557
1629
 
1558
- let code = _acadyear?.term
1559
- let description = _acadyear?.term
1560
-
1630
+ let name = _room?.name
1631
+ let campusId = _campus?._id??_campusDefault?._id??null
1561
1632
 
1562
- if(uCode.has(code) && uDesc.has(description)){
1563
- const errorMsg = `Duplicate Payload Found: [${code}] ${description}]`
1633
+ if(uName.has(name) && uCampus.has(campusId)){
1634
+ const errorMsg = `Duplicate Payload Found: [${name}] - campusId: ${campusId}`
1564
1635
  if(!uniqueErrors.has(errorMsg)){
1565
1636
  logger.error(`${errorCounter + 1}/${errorCounter + 1}: ${errorMsg}`)
1566
1637
  uniqueErrors.add(errorMsg)
1567
1638
  errorCounter++
1568
1639
  }
1569
1640
  }
1570
- else if ( exYearMap.has(`[${code}] ${description}`)){
1571
- const exYear = exYearMap.get(`[${code}] ${description}`)
1572
- const errorMsg = `Existing Data Found:[${exYear.code}] ${exYear.description}]`
1641
+ else if ( exRoomMap.has(`[${name}] - ${campusId}`)){
1642
+ const exRoom = exRoomMap.get(`[${name}] - ${campusId}`)
1643
+ const errorMsg = `Existing Data Found:[${exRoom.name}] - campusId: ${exRoom.campusId}`
1573
1644
  if(!uniqueErrors.has(errorMsg)){
1574
1645
  logger.error(`${errorCounter + 1}/${errorCounter + 1}: ${errorMsg}`)
1575
1646
  uniqueErrors.add(errorMsg)
@@ -1577,11 +1648,12 @@ const server = {
1577
1648
  }
1578
1649
  }
1579
1650
  else{
1580
- uCode.add(code)
1581
- uDesc.add(description)
1582
- newYears.push({
1583
- code,
1584
- description,
1651
+ uName.add(name)
1652
+ uCampus.add(campusId)
1653
+ newRoom.push({
1654
+ name: _room?.name,
1655
+ campusId: _campus?._id??_campusDefault?._id??campusesDefault._id,
1656
+ capacity,
1585
1657
  modifiedById,
1586
1658
  createdById,
1587
1659
  migratedAt,
@@ -1597,21 +1669,21 @@ const server = {
1597
1669
  }
1598
1670
  }
1599
1671
 
1600
- if (newYears.length > 0) {
1601
- await Semesters.bulkCreate(newYears)
1602
- createdCounter += newYears.length
1672
+ if (newRoom.length > 0) {
1673
+ await Rooms.bulkCreate(newRoom)
1674
+ createdCounter += newRoom.length
1603
1675
 
1604
- newYears.forEach((year, index) => {
1605
- logger.info(`${index + 1}/${index + 1}: New Semesters Years Record Created: [${year.code} - ${year.description}]`)
1676
+ newRoom.forEach((room, index) => {
1677
+ logger.info(`${index + 1}/${index + 1}: New Rooms Record Created: [${room.name}], campusId: ${room.campusId}`)
1606
1678
  });
1607
1679
  }
1608
1680
 
1609
1681
  console.log("");
1610
1682
  console.log("########################################################")
1611
1683
  console.log("")
1612
- logger.info('Semesters Data Migration Completed');
1613
- logger.info(`Total Successful Semesters Records Created: ${createdCounter}/${createdCounter}`);
1614
- logger.info(`Total Existing Semesters Records: ${errorCounter}/${errorCounter}`);
1684
+ logger.info('Room Data Migration Completed');
1685
+ logger.info(`Total Successful Room Records Created: ${createdCounter}/${createdCounter}`);
1686
+ logger.info(`Total Existing Room Records: ${errorCounter}/${errorCounter}`);
1615
1687
  logger.info(`Total Records: ${createdCounter + errorCounter}`);
1616
1688
  console.log("")
1617
1689
  console.log("########################################################")
@@ -1625,7 +1697,6 @@ const server = {
1625
1697
  return totalSummary
1626
1698
 
1627
1699
  } catch (error) {
1628
- ;
1629
1700
  logger.error(`Error occurred: ${error.stack} ${error}`);
1630
1701
 
1631
1702
  }
@@ -1994,6 +2065,8 @@ const server = {
1994
2065
  const collegeSeq = await Colleges.findAll()
1995
2066
  const semesterSeq = await Semesters.findAll()
1996
2067
  const acadYearSeq = await AcademicYears.findAll()
2068
+ const userSeq = await Users.findAll()
2069
+
1997
2070
 
1998
2071
  const userMail = await Users.findOne({ where: { email: 'ccci_integrator@gmail.com' } });
1999
2072
 
@@ -2036,6 +2109,15 @@ const server = {
2036
2109
  const exUser = await Users.findAll()
2037
2110
  const exUserMap = new Map(exUser.map(usr => [`[${usr.email} - ${usr.password} ${usr.temporaryPassword}] - ${usr.lastName}, ${usr.firstName} ${usr.middleName} ${usr.adminScopes}`, usr]))
2038
2111
 
2112
+ let uApplication = new Set()
2113
+ let uRole = new Set ()
2114
+ let uUser = new Set ()
2115
+
2116
+ let newUserRole = []
2117
+
2118
+ const exURole = await UserRoles.findAll()
2119
+ const exURoleMap = new Map (exURole.map( role => [`${role.applicationId} ${role.roleId} ${role.userId}`, role]))
2120
+
2039
2121
  let uNum = new Set()
2040
2122
  let uLname = new Set()
2041
2123
  let uMname = new Set()
@@ -2100,9 +2182,15 @@ const server = {
2100
2182
  let password = `${studentNumber}${getfNameU}${getlName}`
2101
2183
 
2102
2184
  const hashedPassword = await bcrypt.hash(password, saltRounds);
2103
- let temporaryPassword = getUserName
2185
+ let temporaryPassword = `${studentNumber}${getfNameU}${getlName}`
2104
2186
  let adminScopes = []
2105
2187
 
2188
+ const roleSeq = await Roles.findOne({ where: { name: "Student" }})
2189
+ const userApp = await Applications.findOne({ where: { name: "Learning Management System - Student/Parent" }})
2190
+
2191
+ let roleId = roleSeq?._id
2192
+ let applicationId = userApp?._id
2193
+
2106
2194
  if(uEmail.has(email) && uPass.has(password) && uTPass.has(temporaryPassword) && uULname.has(lastName) && uUFname.has(firstName) && uUMname.has(middleName) && uScopes.has(adminScopes)){
2107
2195
  const errorMsg = `Duplicate Payload Found: [${email} - ${password} ${temporaryPassword}] - ${lastName}, ${firstName} ${middleName} ${adminScopes}`
2108
2196
  if(!uniqueErrors.has(errorMsg)){
@@ -2133,7 +2221,7 @@ const server = {
2133
2221
  lastName: _student?.last_name,
2134
2222
  middleName: _student?.middle_name,
2135
2223
  password: hashedPassword,
2136
- temporaryPassword: getUserName,
2224
+ temporaryPassword: password,
2137
2225
  email,
2138
2226
  modifiedById,
2139
2227
  createdById,
@@ -2145,6 +2233,21 @@ const server = {
2145
2233
  })
2146
2234
  }
2147
2235
 
2236
+
2237
+ if(
2238
+ uApplication.add(applicationId),
2239
+ uRole.add(roleId)
2240
+ ){
2241
+ newUserRole.push({
2242
+ applicationId,
2243
+ roleId,
2244
+ migratedAt,
2245
+ migratedTable,
2246
+ isMigrated,
2247
+ })
2248
+ }
2249
+
2250
+
2148
2251
  if(uNum.has(studentNumber) && uLname.has(lastName) && uFname.has(firstName) && uMname.has(middleName) && uCourse.has(courseId) && uCampus.has(campusId)){
2149
2252
  const errorMsg = `Duplicate Payload Found: [${studentNumber}] - ${lastName}, ${firstName} ${middleName} [courseId: ${courseId}, campusId:${campusId}]`
2150
2253
  if(!uniqueErrors.has(errorMsg)){
@@ -2202,6 +2305,23 @@ const server = {
2202
2305
  // logger.info(`${index + 1}/${index + 1}: New Student User Record Created: [${user.email} - ${user.password} ${user.temporaryPassword}] - ${user.lastName}, ${user.firstName} ${user.middleName} ${user.adminScopes}`)
2203
2306
  });
2204
2307
  }
2308
+
2309
+ if (newUserRole.length > 0) {
2310
+ // Associate userIds with new students
2311
+ newUserRole = newUserRole.map((exStudent, index) => ({
2312
+ ...exStudent,
2313
+ userId: userIds[index]
2314
+ }));
2315
+
2316
+ await UserRoles.bulkCreate(newUserRole);
2317
+ createdCounter += newUserRole.length;
2318
+
2319
+ newUserRole.forEach((exStudent, index) => {
2320
+ logger.info(`${index + 1}/${index + 1}: ${exStudent.userId} ${exStudent.applicationId} ${exStudent.roleId} `)
2321
+ });
2322
+ }
2323
+
2324
+
2205
2325
 
2206
2326
  if (newStudent.length > 0) {
2207
2327
  // Associate userIds with new students
@@ -2777,6 +2897,8 @@ async function runServerFunctions() {
2777
2897
 
2778
2898
  module.exports = {
2779
2899
  serverTable: server,
2900
+ AcademicYear: server.AcademicYear,
2901
+ Semester: server.Semester,
2780
2902
  Campus: server.Campus,
2781
2903
  College: server.College,
2782
2904
  AcademicDepartments: server.AcademicDepartment,
@@ -2784,8 +2906,6 @@ module.exports = {
2784
2906
  Room: server.Room,
2785
2907
  Instructor: server.Instructor,
2786
2908
  AcadDeptInstructor: server.AcadDeptInstructor,
2787
- AcademicYear: server.AcademicYear,
2788
- Semester: server.Semester,
2789
2909
  Subject: server.Subject,
2790
2910
  Schedule: server.Schedule,
2791
2911
  Student: server.Student,