lms-sync 1.0.92 → 1.0.94

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