lms-sync 1.0.92 → 1.0.94

Sign up to get free protection for your applications and to get access to all the features.
@@ -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,