lms-sync 1.0.43 → 1.0.46
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/apiConnections/mapping.js +663 -46
- package/apiConnections/tablePick.js +2 -0
- package/models/academic.departments.model.js +16 -0
- package/models/academicYears.model.js +16 -0
- package/models/campuses.model.js +16 -16
- package/models/colleges.model.js +16 -0
- package/models/courses.model.js +16 -0
- package/models/enrolledStudents.model.js +16 -0
- package/models/instructors.model.js +16 -0
- package/models/rooms.model.js +16 -0
- package/models/schedules.model.js +16 -0
- package/models/sections.model.js +16 -0
- package/models/students.model.js +16 -0
- package/models/subjects.model.js +16 -0
- package/models/users.model.js +45 -29
- package/package.json +1 -1
- package/utils/Mixins.js +5 -0
@@ -3,6 +3,7 @@ const logger = require('../utils/logger')
|
|
3
3
|
const api = require('../apiConnections/apiConnects')
|
4
4
|
const moment = require('moment')
|
5
5
|
const { Picked } = require('./semesterPick')
|
6
|
+
const Mixins = require('../utils/Mixins')
|
6
7
|
|
7
8
|
const {
|
8
9
|
AcademicDepartments,
|
@@ -38,9 +39,8 @@ const server = {
|
|
38
39
|
let maxIdsUser = await Users.max('_id'); //Fetch maximum _id directly from the campuses model
|
39
40
|
|
40
41
|
let maxId = maxIds|| 0;
|
41
|
-
let maxIdSems = maxIdsSem|| 0;
|
42
|
-
let maxIdUsers = maxIdsUser|| 0;
|
43
|
-
|
42
|
+
let maxIdSems = maxIdsSem || 0;
|
43
|
+
let maxIdUsers = maxIdsUser || 0;
|
44
44
|
|
45
45
|
await db.sequelize.query(`CREATE SEQUENCE IF NOT EXISTS ${db_schema}."Users__id_seq"`);
|
46
46
|
await db.sequelize.query(`ALTER SEQUENCE ${db_schema}."Users__id_seq" RESTART WITH ${maxIdUsers + 1}`);
|
@@ -64,11 +64,13 @@ const server = {
|
|
64
64
|
let [userDefault, createdUser] = await Users.findOrCreate({
|
65
65
|
where: { email: userDefPayload.email },
|
66
66
|
defaults: userDefPayload
|
67
|
-
});
|
67
|
+
});
|
68
|
+
|
69
|
+
if (createdUser){
|
70
|
+
logger.info(`Created Migration User :>> ${userDefault.email}`);
|
71
|
+
}
|
68
72
|
|
69
|
-
const userMail = await Users.findOne({ where: { email: 'ccci_integrator@gmail.com' } });
|
70
|
-
|
71
|
-
|
73
|
+
const userMail = await Users.findOne({ where: { email: 'ccci_integrator@gmail.com' } });
|
72
74
|
|
73
75
|
let semesterData = [
|
74
76
|
{
|
@@ -133,8 +135,6 @@ const server = {
|
|
133
135
|
let errorCounter = 0
|
134
136
|
let uniqueErrors = new Set()
|
135
137
|
|
136
|
-
|
137
|
-
|
138
138
|
let uCode = new Set()
|
139
139
|
let uName = new Set()
|
140
140
|
|
@@ -154,6 +154,11 @@ const server = {
|
|
154
154
|
let name = _campus?.name
|
155
155
|
let code = _campus?.code
|
156
156
|
|
157
|
+
let migratedAt = new Date() //present date of the migration
|
158
|
+
let migratedTable = 'Campuses' // sql counterpart main table
|
159
|
+
let referenceId = _campus?.id // id of the data
|
160
|
+
let isMigrated = true
|
161
|
+
|
157
162
|
if(uCode.has(code) && uName.has(name)){
|
158
163
|
const errorMsg = `Duplicate Payload Found: [${code}] - ${name}`
|
159
164
|
if(!uniqueErrors.has(errorMsg)){
|
@@ -181,10 +186,10 @@ const server = {
|
|
181
186
|
address: _campus?.address,
|
182
187
|
modifiedById,
|
183
188
|
createdById,
|
184
|
-
|
185
|
-
|
186
|
-
|
187
|
-
|
189
|
+
migratedAt,
|
190
|
+
migratedTable,
|
191
|
+
referenceId,
|
192
|
+
isMigrated
|
188
193
|
})
|
189
194
|
}
|
190
195
|
|
@@ -265,12 +270,7 @@ const server = {
|
|
265
270
|
|
266
271
|
let createdCounter = 0
|
267
272
|
let errorCounter = 0
|
268
|
-
let uniqueErrors = new Set()
|
269
|
-
|
270
|
-
// let migratedAt = new Date() //present date of the migration
|
271
|
-
// let migratedTable = 'colleges' // sql counterpart main table
|
272
|
-
// let referenceId = collegeApi.id // id of the data
|
273
|
-
// let isMigrated = true
|
273
|
+
let uniqueErrors = new Set()
|
274
274
|
|
275
275
|
let uCode = new Set()
|
276
276
|
let uName = new Set()
|
@@ -294,6 +294,11 @@ const server = {
|
|
294
294
|
let name = _college?.name
|
295
295
|
let code = _college?.code
|
296
296
|
|
297
|
+
let migratedAt = new Date() //present date of the migration
|
298
|
+
let migratedTable = 'Colleges' // sql counterpart main table
|
299
|
+
let referenceId = _college.id // id of the data
|
300
|
+
let isMigrated = true
|
301
|
+
|
297
302
|
if(uCode.has(code) && uName.has(name)){
|
298
303
|
const errorMsg = `Duplicate Payload Found: [${code}] - ${name}`
|
299
304
|
if(!uniqueErrors.has(errorMsg)){
|
@@ -319,7 +324,15 @@ const server = {
|
|
319
324
|
code: _college?.code,
|
320
325
|
campusId: _campus?._id??campusDefault?._id,
|
321
326
|
modifiedById,
|
322
|
-
createdById
|
327
|
+
createdById,
|
328
|
+
migratedAt,
|
329
|
+
migratedTable,
|
330
|
+
referenceId,
|
331
|
+
isMigrated,
|
332
|
+
migratedAt,
|
333
|
+
migratedTable,
|
334
|
+
referenceId,
|
335
|
+
isMigrated
|
323
336
|
})
|
324
337
|
}
|
325
338
|
|
@@ -370,7 +383,7 @@ const server = {
|
|
370
383
|
try {
|
371
384
|
console.log("");
|
372
385
|
console.log("########################################################")
|
373
|
-
console.log("
|
386
|
+
console.log(" Academic Departments Migration ")
|
374
387
|
console.log("########################################################")
|
375
388
|
console.log("");
|
376
389
|
|
@@ -422,6 +435,7 @@ const server = {
|
|
422
435
|
let newAcadDeptTwo = []
|
423
436
|
const exAcadDeptTwo = await AcademicDepartments.findAll()
|
424
437
|
const exAcadDeptMapTwo = new Map(exAcadDeptTwo.map(dept => [`[${dept.code}] - ${dept.name}`, dept]))
|
438
|
+
|
425
439
|
|
426
440
|
for (let i = 0; i < departmentApi.length; i++){
|
427
441
|
try {
|
@@ -436,6 +450,11 @@ const server = {
|
|
436
450
|
let name = _acadDept?.name
|
437
451
|
let code = _acadDept?.code
|
438
452
|
|
453
|
+
let migratedAt = new Date() //present date of the migration
|
454
|
+
let migratedTable = 'Departments' // sql counterpart main table
|
455
|
+
let referenceId = _acadDept.id // id of the data
|
456
|
+
let isMigrated = true
|
457
|
+
|
439
458
|
if(uCode.has(code) && uName.has(name)){
|
440
459
|
const errorMsg = `Duplicate Payload Found: [${code}] - ${name}`
|
441
460
|
if(!uniqueErrors.has(errorMsg)){
|
@@ -462,7 +481,11 @@ const server = {
|
|
462
481
|
collegeId: _college?._id??collegeDefault?._id,
|
463
482
|
campusId: campus?._id??campusDefault?._id,
|
464
483
|
modifiedById,
|
465
|
-
createdById
|
484
|
+
createdById,
|
485
|
+
migratedAt,
|
486
|
+
migratedTable,
|
487
|
+
referenceId,
|
488
|
+
isMigrated
|
466
489
|
})
|
467
490
|
}
|
468
491
|
} catch (error) {
|
@@ -570,6 +593,279 @@ const server = {
|
|
570
593
|
},
|
571
594
|
|
572
595
|
async Instructor(){
|
596
|
+
let userIds = []
|
597
|
+
try {
|
598
|
+
console.log("");
|
599
|
+
console.log("########################################################")
|
600
|
+
console.log(" Instructors Migrations ")
|
601
|
+
console.log("########################################################")
|
602
|
+
console.log("");
|
603
|
+
|
604
|
+
|
605
|
+
const db_schema = schema
|
606
|
+
let maxIds = await Users.max('_id'); //Fetch maximum _id directly from the Users model
|
607
|
+
let maxIdsIns = await Instructors.max('_id'); //Fetch maximum _id directly from the Users model
|
608
|
+
|
609
|
+
let maxId = maxIds|| 0;
|
610
|
+
let maxIdIns = maxIdsIns|| 0;
|
611
|
+
|
612
|
+
await db.sequelize.query(`CREATE SEQUENCE IF NOT EXISTS ${db_schema}."Users__id_seq"`);
|
613
|
+
await db.sequelize.query(`ALTER SEQUENCE ${db_schema}."Users__id_seq" RESTART WITH ${maxId + 1}`);
|
614
|
+
|
615
|
+
await db.sequelize.query(`CREATE SEQUENCE IF NOT EXISTS ${db_schema}."Instructors__id_seq"`);
|
616
|
+
await db.sequelize.query(`ALTER SEQUENCE ${db_schema}."Instructors__id_seq" RESTART WITH ${maxIdIns + 1}`);
|
617
|
+
|
618
|
+
const instructorApi = await api.Instructor()
|
619
|
+
const departmentApi = await api.Department()
|
620
|
+
|
621
|
+
const departmentSeq = await AcademicDepartments.findAll()
|
622
|
+
const campusSeq = await Campuses.findAll()
|
623
|
+
|
624
|
+
const userMail = await Users.findOne({ where: { email: 'ccci_integrator@gmail.com' } });
|
625
|
+
if (!userMail){}
|
626
|
+
|
627
|
+
const campusDefault = await Campuses.findOne({ where: { name: 'Campus Default' } });
|
628
|
+
const departmentDefault = await AcademicDepartments.findOne({ where: { name: 'AcademicDepartments Default' } });
|
629
|
+
|
630
|
+
let defaultPayload = {
|
631
|
+
firstName: 'Instructor',
|
632
|
+
lastName: 'Default',
|
633
|
+
middleName: 'Migration',
|
634
|
+
employeeNumber: '_Instructor',
|
635
|
+
departmentId: departmentDefault?._id,
|
636
|
+
campusId: campusDefault?._id,
|
637
|
+
modifiedById: userMail?._id,
|
638
|
+
createdById: userMail?._id
|
639
|
+
};
|
640
|
+
|
641
|
+
let [defaults, createddef] = await Instructors.findOrCreate({
|
642
|
+
where: { employeeNumber: defaultPayload.employeeNumber, lastName: defaultPayload.lastName},
|
643
|
+
defaults: defaultPayload
|
644
|
+
});
|
645
|
+
|
646
|
+
let createdCounter = 0
|
647
|
+
let errorCounter = 0
|
648
|
+
let uniqueErrors = new Set()
|
649
|
+
|
650
|
+
let uEmail = new Set()
|
651
|
+
let uPass = new Set()
|
652
|
+
let uTPass = new Set()
|
653
|
+
let uULname = new Set()
|
654
|
+
let uUFname = new Set()
|
655
|
+
let uUMname = new Set()
|
656
|
+
let uScopes = new Set()
|
657
|
+
|
658
|
+
let newUser = []
|
659
|
+
|
660
|
+
const exUser = await Users.findAll()
|
661
|
+
const exUserMap = new Map(exUser.map(usr => [`[${usr.email} - ${usr.password} ${usr.temporaryPassword}] - ${usr.lastName}, ${usr.firstName} ${usr.middleName} ${usr.adminScopes}`, usr]))
|
662
|
+
|
663
|
+
let uDept = new Set()
|
664
|
+
let uCamp = new Set()
|
665
|
+
let uLname = new Set()
|
666
|
+
let uMname = new Set()
|
667
|
+
let uFname = new Set()
|
668
|
+
let uNum = new Set()
|
669
|
+
|
670
|
+
let newInstructor = []
|
671
|
+
|
672
|
+
const exInst = await Instructors.findAll()
|
673
|
+
const exInstMap = new Map(exInst.map(inst => [`[${inst.employeeNumber}] - ${inst.lastName}, ${inst.firstName} ${inst.middleName} [${inst.departmentId}, ${inst.campusId}]` , inst]))
|
674
|
+
|
675
|
+
for (let i = 0; i < instructorApi.length; i++){
|
676
|
+
try {
|
677
|
+
let _instructor = instructorApi[i]
|
678
|
+
|
679
|
+
let acadDepartmentMap = departmentApi.find(a => a.name === _instructor?.department_name)
|
680
|
+
let _acadDepartment = departmentSeq.find(b => b.name === acadDepartmentMap?.name)
|
681
|
+
let campusMap = campusSeq.find(c => c._id === _acadDepartment?.campusId)
|
682
|
+
|
683
|
+
let modifiedById = userMail?._id
|
684
|
+
let createdById = userMail?._id
|
685
|
+
|
686
|
+
let campusDefault = "MSC - Boac Campus"
|
687
|
+
let _campusDefault = campusSeq.find(ccc => ccc.name === campusDefault)
|
688
|
+
|
689
|
+
let role = _instructor?.role
|
690
|
+
let isChairPerson = false
|
691
|
+
let isDean = false
|
692
|
+
|
693
|
+
if(role === "Program Chair"){
|
694
|
+
isChairPerson = true
|
695
|
+
}
|
696
|
+
if(role === "Dean"){
|
697
|
+
isDean = true
|
698
|
+
}
|
699
|
+
|
700
|
+
let migratedAt = new Date() //present date of the migration
|
701
|
+
let migratedTable = 'Instructors' // sql counterpart main table
|
702
|
+
let referenceId = _instructor?.id // id of the data
|
703
|
+
let isMigrated = true
|
704
|
+
|
705
|
+
let firstName = _instructor?.first_name
|
706
|
+
let lastName = _instructor?.last_name
|
707
|
+
let middleName = _instructor?.middle_name
|
708
|
+
let getUserName = Mixins.generateUsername(firstName, lastName)
|
709
|
+
let email = `${getUserName}@msumarinduque.edu.ph`
|
710
|
+
let password = `${getUserName}`
|
711
|
+
let temporaryPassword = password
|
712
|
+
let adminScopes = []
|
713
|
+
|
714
|
+
let employeeNumber = _instructor?.faculty_id
|
715
|
+
let departmentId = _acadDepartment?._id??departmentDefault?._id
|
716
|
+
let campusId = campusMap?._id??_campusDefault?._id
|
717
|
+
|
718
|
+
if(uEmail.has(email) && uPass.has(password) && uTPass.has(temporaryPassword) && uULname.has(lastName) && uUFname.has(firstName) && uUMname.has(middleName) && uScopes.has(adminScopes)){
|
719
|
+
const errorMsg = `Duplicate Payload Found: [${email} - ${password} ${temporaryPassword}] - ${lastName}, ${firstName} ${middleName} ${adminScopes}`
|
720
|
+
if(!uniqueErrors.has(errorMsg)){
|
721
|
+
// logger.error(`${errorCounter + 1}/${errorCounter + 1}: ${errorMsg}`)
|
722
|
+
uniqueErrors.add(errorMsg)
|
723
|
+
// errorCounter++
|
724
|
+
}
|
725
|
+
}
|
726
|
+
else if (exUserMap.has(`[${email} - ${password} ${temporaryPassword}] - ${lastName}, ${firstName} ${middleName} ${adminScopes}`)){
|
727
|
+
const exUser = exUserMap.get(`[${email} - ${password} ${temporaryPassword}] - ${lastName}, ${firstName} ${middleName} ${adminScopes}`)
|
728
|
+
const errorMsg = `Existing Data Found: [${exUser.email} - ${exUser.password} ${exUser.temporaryPassword}] - ${exUser.lastName}, ${exUser.firstName} ${exUser.middleName} ${exUser.adminScopes}`
|
729
|
+
if(!uniqueErrors.has(errorMsg)){
|
730
|
+
// logger.error(`${errorCounter + 1}/${errorCounter + 1}: ${errorMsg}`)
|
731
|
+
uniqueErrors.add(errorMsg)
|
732
|
+
// errorCounter++
|
733
|
+
}
|
734
|
+
}
|
735
|
+
else{
|
736
|
+
uEmail.add(email)
|
737
|
+
uPass.add(password)
|
738
|
+
uTPass.add(temporaryPassword)
|
739
|
+
uULname.add(lastName)
|
740
|
+
uUFname.add(firstName)
|
741
|
+
uUMname.add(middleName)
|
742
|
+
uScopes.add(adminScopes)
|
743
|
+
newUser.push({
|
744
|
+
firstName: _instructor?.first_name,
|
745
|
+
lastName: _instructor?.last_name,
|
746
|
+
middleName: _instructor?.middle_name,
|
747
|
+
password: password,
|
748
|
+
temporaryPassword: password,
|
749
|
+
email,
|
750
|
+
modifiedById,
|
751
|
+
createdById,
|
752
|
+
adminScopes,
|
753
|
+
})
|
754
|
+
}
|
755
|
+
|
756
|
+
if(uNum.has(employeeNumber) && uLname.has(lastName) && uFname.has(firstName) && uMname.has(middleName) && uDept.has(departmentId) && uCamp.has(campusId)){
|
757
|
+
const errorMsg = `Duplicate Payload Found: [${employeeNumber}] - ${lastName}, ${firstName} ${middleName} [departmentId: ${departmentId}, campusId:${campusId}]`
|
758
|
+
if(!uniqueErrors.has(errorMsg)){
|
759
|
+
logger.error(`${errorCounter + 1}/${errorCounter + 1}: ${errorMsg}`)
|
760
|
+
uniqueErrors.add(errorMsg)
|
761
|
+
errorCounter++
|
762
|
+
}
|
763
|
+
}
|
764
|
+
else if ( exInstMap.has(`[${employeeNumber}] - ${lastName}, ${firstName} ${middleName} [${departmentId}, ${campusId}]`)){
|
765
|
+
const exInst = exInstMap.get(`[${employeeNumber}] - ${lastName}, ${firstName} ${middleName} [${departmentId}, ${campusId}]`)
|
766
|
+
const errorMsg = `Existing Data Found:[${exInst.employeeNumber}] - ${exInst.lastName}, ${exInst.firstName} ${exInst.middleName} [departmentId: ${exInst.departmentId}, campusId: ${exInst.campusId}]`
|
767
|
+
if(!uniqueErrors.has(errorMsg)){
|
768
|
+
logger.error(`${errorCounter + 1}/${errorCounter + 1}: ${errorMsg}`)
|
769
|
+
uniqueErrors.add(errorMsg)
|
770
|
+
errorCounter++
|
771
|
+
}
|
772
|
+
}
|
773
|
+
else{
|
774
|
+
uNum.add(employeeNumber)
|
775
|
+
uLname.add(lastName)
|
776
|
+
uFname.add(firstName)
|
777
|
+
uMname.add(middleName)
|
778
|
+
uDept.add(departmentId)
|
779
|
+
uCamp.add(campusId)
|
780
|
+
newInstructor.push({
|
781
|
+
firstName: _instructor?.first_name,
|
782
|
+
lastName: _instructor?.last_name,
|
783
|
+
middleName: _instructor?.middle_name,
|
784
|
+
employeeNumber: _instructor?.faculty_id,
|
785
|
+
departmentId: _acadDepartment?._id??departmentDefault?._id,
|
786
|
+
academicDepartmentId: _acadDepartment?._id??departmentDefault?._id,
|
787
|
+
campusId: campusMap?._id??_campusDefault?._id??campusDefault?._id,
|
788
|
+
isDean,
|
789
|
+
isChairPerson,
|
790
|
+
modifiedById,
|
791
|
+
createdById,
|
792
|
+
migratedAt,
|
793
|
+
migratedTable,
|
794
|
+
// referenceId,
|
795
|
+
isMigrated
|
796
|
+
})
|
797
|
+
}
|
798
|
+
|
799
|
+
} catch (error) {
|
800
|
+
logger.error(`Error occurred: ${error} ${error.stack}`);
|
801
|
+
}
|
802
|
+
}
|
803
|
+
|
804
|
+
if (newUser.length > 0) {
|
805
|
+
const createdUser = await Users.bulkCreate(newUser, {returning: true})
|
806
|
+
userIds = createdUser.map(_user => _user._id) // Remove const or let
|
807
|
+
createdCounter += newUser.length
|
808
|
+
newUser.forEach((user, index) => {
|
809
|
+
// 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}`)
|
810
|
+
});
|
811
|
+
}
|
812
|
+
|
813
|
+
|
814
|
+
if (newInstructor.length > 0) {
|
815
|
+
// Associate userIds with new instructors
|
816
|
+
newInstructor = newInstructor.map((inst, index) => ({
|
817
|
+
...inst,
|
818
|
+
userId: userIds[index]
|
819
|
+
}));
|
820
|
+
|
821
|
+
await Instructors.bulkCreate(newInstructor);
|
822
|
+
createdCounter += newInstructor.length;
|
823
|
+
|
824
|
+
newInstructor.forEach((inst, index) => {
|
825
|
+
logger.info(`${index + 1}/${index + 1}: New Instructor Record Created: [${inst.employeeNumber}] - ${inst.lastName}, ${inst.firstName} ${inst.middleName} [ departmentId: ${inst.departmentId}, campusId: ${inst.campusId}]`);
|
826
|
+
});
|
827
|
+
}
|
828
|
+
|
829
|
+
|
830
|
+
// if (newInstructor.length > 0) {
|
831
|
+
|
832
|
+
// await Instructors.bulkCreate(newInstructor)
|
833
|
+
// createdCounter += newInstructor.length
|
834
|
+
|
835
|
+
// newInstructor.forEach((inst, index) => {
|
836
|
+
// logger.info(`${index + 1}/${index + 1}: New Instructor Record Created: [${inst.employeeNumber}] - ${inst.lastName}, ${inst.firstName} ${inst.middleName} [ departmentId: ${inst.departmentId}, campusId: ${inst.campusId}]`)
|
837
|
+
// });
|
838
|
+
|
839
|
+
// }
|
840
|
+
|
841
|
+
|
842
|
+
console.log("");
|
843
|
+
console.log("########################################################")
|
844
|
+
console.log("")
|
845
|
+
logger.info('User Instructors Data Creation Completed');
|
846
|
+
logger.info(`Total successful User Instructors records created: ${createdCounter}/${createdCounter}`);
|
847
|
+
logger.info(`Total User Instructors Error Records: ${errorCounter}/${errorCounter}`);
|
848
|
+
logger.info(`Total records: ${createdCounter + errorCounter}`);
|
849
|
+
|
850
|
+
console.log("")
|
851
|
+
console.log("########################################################")
|
852
|
+
console.log("")
|
853
|
+
|
854
|
+
let totalSummary = {
|
855
|
+
itemLength: createdCounter + errorCounter,
|
856
|
+
error: errorCounter,
|
857
|
+
success: createdCounter
|
858
|
+
}
|
859
|
+
return totalSummary
|
860
|
+
|
861
|
+
} catch (error) {
|
862
|
+
;
|
863
|
+
logger.error(`Error occurred: ${error} ${error.stack} `);
|
864
|
+
|
865
|
+
}
|
866
|
+
},
|
867
|
+
|
868
|
+
async Instructorsss(){
|
573
869
|
try {
|
574
870
|
console.log("");
|
575
871
|
console.log("########################################################")
|
@@ -588,8 +884,10 @@ const server = {
|
|
588
884
|
|
589
885
|
const departmentSeq = await AcademicDepartments.findAll()
|
590
886
|
const campusSeq = await Campuses.findAll()
|
591
|
-
const
|
592
|
-
|
887
|
+
const userSeq = await Users.findAll()
|
888
|
+
|
889
|
+
const userMail = await Users.findOne({ where: { email: 'ccci_integrator@gmail.com' } });
|
890
|
+
if (!userMail){}
|
593
891
|
const campusDefault = await Campuses.findOne({ where: { name: 'Campus Default' } });
|
594
892
|
const departmentDefault = await AcademicDepartments.findOne({ where: { name: 'AcademicDepartments Default' } });
|
595
893
|
|
@@ -625,16 +923,18 @@ const server = {
|
|
625
923
|
const exInst = await Instructors.findAll()
|
626
924
|
const exInstMap = new Map(exInst.map(inst => [`[${inst.employeeNumber}] - ${inst.lastName}, ${inst.firstName} ${inst.middleName} [${inst.departmentId}, ${inst.campusId}]` , inst]))
|
627
925
|
|
926
|
+
|
628
927
|
for (let i = 0; i < instructorApi.length; i++){
|
629
928
|
try {
|
929
|
+
|
630
930
|
let _instructor = instructorApi[i]
|
931
|
+
|
932
|
+
let findUser = await userSeq.find( f => f.lastName === _instructor?.last_name && f.firstName === _instructor?.first_name && f.middleName === _instructor?.middle_name)
|
631
933
|
|
632
934
|
let acadDepartmentMap = departmentApi.find(a => a.name === _instructor?.department_name)
|
633
|
-
|
634
935
|
let _acadDepartment = departmentSeq.find(b => b.name === acadDepartmentMap?.name)
|
635
|
-
|
636
936
|
let campusMap = campusSeq.find(c => c._id === _acadDepartment?.campusId)
|
637
|
-
|
937
|
+
|
638
938
|
let modifiedById = userMail?._id
|
639
939
|
let createdById = userMail?._id
|
640
940
|
|
@@ -642,7 +942,6 @@ const server = {
|
|
642
942
|
let _campusDefault = campusSeq.find(ccc => ccc.name === campusDefault)
|
643
943
|
|
644
944
|
let role = _instructor?.role
|
645
|
-
|
646
945
|
let isChairPerson = false
|
647
946
|
let isDean = false
|
648
947
|
|
@@ -659,6 +958,7 @@ const server = {
|
|
659
958
|
let employeeNumber = _instructor?.faculty_id
|
660
959
|
let departmentId = _acadDepartment?._id??departmentDefault?._id
|
661
960
|
let campusId = campusMap?._id??_campusDefault?._id
|
961
|
+
let userId = findUser?._id
|
662
962
|
|
663
963
|
if(uNum.has(employeeNumber) && uLname.has(lastName) && uFname.has(firstName) && uMname.has(middleName) && uDept.has(departmentId) && uCamp.has(campusId)){
|
664
964
|
const errorMsg = `Duplicate Payload Found: [${employeeNumber}] - ${lastName}, ${firstName} ${middleName} [departmentId: ${departmentId}, campusId:${campusId}]`
|
@@ -696,11 +996,12 @@ const server = {
|
|
696
996
|
isChairPerson,
|
697
997
|
modifiedById,
|
698
998
|
createdById,
|
999
|
+
userId
|
699
1000
|
})
|
700
1001
|
}
|
701
1002
|
|
702
1003
|
} catch (error) {
|
703
|
-
|
1004
|
+
logger.error(`Error occurred: ${error} ${error.stack}`);
|
704
1005
|
}
|
705
1006
|
}
|
706
1007
|
|
@@ -715,7 +1016,6 @@ const server = {
|
|
715
1016
|
|
716
1017
|
}
|
717
1018
|
|
718
|
-
|
719
1019
|
console.log("");
|
720
1020
|
console.log("########################################################")
|
721
1021
|
console.log("")
|
@@ -821,6 +1121,10 @@ const server = {
|
|
821
1121
|
let campusId = campus?._id??null
|
822
1122
|
let departmentId = _department?._id??null
|
823
1123
|
|
1124
|
+
let migratedAt = new Date() //present date of the migration
|
1125
|
+
let migratedTable = 'Courses' // sql counterpart main table
|
1126
|
+
let referenceId = courseCode?.id // id of the data
|
1127
|
+
let isMigrated = true
|
824
1128
|
|
825
1129
|
|
826
1130
|
if(uCode.has(code) && uName.has(name) && uMajor.has(major) && uCampus.has(campusId) && uDept.has(departmentId)){
|
@@ -853,7 +1157,11 @@ const server = {
|
|
853
1157
|
campusId: campus?._id??campusDefault?._id,
|
854
1158
|
departmentId: _department?._id??departmentDefault?._id,
|
855
1159
|
modifiedById,
|
856
|
-
createdById
|
1160
|
+
createdById,
|
1161
|
+
migratedAt,
|
1162
|
+
migratedTable,
|
1163
|
+
referenceId,
|
1164
|
+
isMigrated
|
857
1165
|
})
|
858
1166
|
}
|
859
1167
|
|
@@ -967,6 +1275,11 @@ const server = {
|
|
967
1275
|
let modifiedById = userMail?._id
|
968
1276
|
let createdById = userMail?._id
|
969
1277
|
|
1278
|
+
let migratedAt = new Date() //present date of the migration
|
1279
|
+
let migratedTable = 'Rooms' // sql counterpart main table
|
1280
|
+
let referenceId = _room?.id // id of the data
|
1281
|
+
let isMigrated = true
|
1282
|
+
|
970
1283
|
let name = _room?.name
|
971
1284
|
let campusId = _campus?._id??_campusDefault?._id??null
|
972
1285
|
|
@@ -995,7 +1308,11 @@ const server = {
|
|
995
1308
|
campusId: _campus?._id??_campusDefault?._id??campusesDefault._id,
|
996
1309
|
capacity,
|
997
1310
|
modifiedById,
|
998
|
-
createdById
|
1311
|
+
createdById,
|
1312
|
+
migratedAt,
|
1313
|
+
migratedTable,
|
1314
|
+
referenceId,
|
1315
|
+
isMigrated
|
999
1316
|
})
|
1000
1317
|
}
|
1001
1318
|
|
@@ -1091,6 +1408,11 @@ const server = {
|
|
1091
1408
|
let modifiedById = userMail?._id
|
1092
1409
|
let createdById = userMail?._id
|
1093
1410
|
|
1411
|
+
let migratedAt = new Date() //present date of the migration
|
1412
|
+
let migratedTable = 'AcademicYears' // sql counterpart main table
|
1413
|
+
let referenceId = _acadyear?.id // id of the data
|
1414
|
+
let isMigrated = true
|
1415
|
+
|
1094
1416
|
|
1095
1417
|
if(uFrom.has(from) && uTo.has(to)){
|
1096
1418
|
const errorMsg = `Duplicate Payload Found: [${from} - ${to}]`
|
@@ -1117,7 +1439,11 @@ const server = {
|
|
1117
1439
|
to,
|
1118
1440
|
modifiedById,
|
1119
1441
|
createdById,
|
1120
|
-
default: isDefault
|
1442
|
+
default: isDefault,
|
1443
|
+
migratedAt,
|
1444
|
+
migratedTable,
|
1445
|
+
referenceId,
|
1446
|
+
isMigrated
|
1121
1447
|
})
|
1122
1448
|
}
|
1123
1449
|
|
@@ -1245,6 +1571,11 @@ const server = {
|
|
1245
1571
|
let departmentId = _department?._id??departmentDefault?._id
|
1246
1572
|
let description = _description
|
1247
1573
|
|
1574
|
+
let migratedAt = new Date() //present date of the migration
|
1575
|
+
let migratedTable = 'Subjects' // sql counterpart main table
|
1576
|
+
let referenceId = _subjects?.subject_id // id of the data
|
1577
|
+
let isMigrated = true
|
1578
|
+
|
1248
1579
|
if(uCode.has(code) && uName.has(name) && uDescription.has(description) && uUnits.has(units) && uDept.has(departmentId)){
|
1249
1580
|
const errorMsg = `Duplicate Payload Found: [${code}] - ${name} [units: ${units}, departmentId: ${departmentId}]`
|
1250
1581
|
if(!uniqueErrors.has(errorMsg)){
|
@@ -1277,10 +1608,10 @@ const server = {
|
|
1277
1608
|
description,
|
1278
1609
|
modifiedById,
|
1279
1610
|
createdById,
|
1280
|
-
|
1281
|
-
|
1282
|
-
|
1283
|
-
|
1611
|
+
migratedAt,
|
1612
|
+
migratedTable,
|
1613
|
+
referenceId,
|
1614
|
+
isMigrated
|
1284
1615
|
})
|
1285
1616
|
}
|
1286
1617
|
|
@@ -1393,6 +1724,11 @@ const server = {
|
|
1393
1724
|
|
1394
1725
|
let days = null
|
1395
1726
|
|
1727
|
+
let migratedAt = new Date() //present date of the migration
|
1728
|
+
let migratedTable = 'Schedules' // sql counterpart main table
|
1729
|
+
let referenceId = _schedule?.schedule_id // id of the data
|
1730
|
+
let isMigrated = true
|
1731
|
+
|
1396
1732
|
if (dayHandler.length > 1) {
|
1397
1733
|
days = dayHandler[0].split('').map(day => dayMappings[day]).join(', ');
|
1398
1734
|
} else {
|
@@ -1431,12 +1767,11 @@ const server = {
|
|
1431
1767
|
to : etFormat??to,
|
1432
1768
|
days,
|
1433
1769
|
modifiedById,
|
1434
|
-
createdById
|
1435
|
-
|
1436
|
-
|
1437
|
-
|
1438
|
-
|
1439
|
-
// isMigrated
|
1770
|
+
createdById,
|
1771
|
+
migratedAt,
|
1772
|
+
migratedTable,
|
1773
|
+
referenceId,
|
1774
|
+
isMigrated
|
1440
1775
|
})
|
1441
1776
|
}
|
1442
1777
|
} catch (error) {
|
@@ -1479,6 +1814,7 @@ const server = {
|
|
1479
1814
|
},
|
1480
1815
|
|
1481
1816
|
async Student(){
|
1817
|
+
let userIds = []
|
1482
1818
|
try {
|
1483
1819
|
console.log("");
|
1484
1820
|
console.log("########################################################")
|
@@ -1487,8 +1823,15 @@ const server = {
|
|
1487
1823
|
console.log("");
|
1488
1824
|
|
1489
1825
|
const db_schema = schema
|
1826
|
+
let maxIdsU = await Users.max('_id'); //Fetch maximum _id directly from the Users model
|
1490
1827
|
let maxIds = await Students.max('_id'); // Fetch maximum _id directly from the Students model
|
1828
|
+
|
1491
1829
|
let maxId = maxIds|| 0;
|
1830
|
+
let maxIdU = maxIdsU|| 0;
|
1831
|
+
|
1832
|
+
await db.sequelize.query(`CREATE SEQUENCE IF NOT EXISTS ${db_schema}."Users__id_seq"`);
|
1833
|
+
await db.sequelize.query(`ALTER SEQUENCE ${db_schema}."Users__id_seq" RESTART WITH ${maxIdU + 1}`);
|
1834
|
+
|
1492
1835
|
await db.sequelize.query(`CREATE SEQUENCE IF NOT EXISTS ${db_schema}."Students__id_seq"`);
|
1493
1836
|
await db.sequelize.query(`ALTER SEQUENCE ${db_schema}."Students__id_seq" RESTART WITH ${maxId + 1}`);
|
1494
1837
|
|
@@ -1509,7 +1852,18 @@ const server = {
|
|
1509
1852
|
let errorCounter = 0
|
1510
1853
|
let uniqueErrors = new Set()
|
1511
1854
|
|
1512
|
-
|
1855
|
+
let uEmail = new Set()
|
1856
|
+
let uPass = new Set()
|
1857
|
+
let uTPass = new Set()
|
1858
|
+
let uULname = new Set()
|
1859
|
+
let uUFname = new Set()
|
1860
|
+
let uUMname = new Set()
|
1861
|
+
let uScopes = new Set()
|
1862
|
+
|
1863
|
+
let newUser = []
|
1864
|
+
|
1865
|
+
const exUser = await Users.findAll()
|
1866
|
+
const exUserMap = new Map(exUser.map(usr => [`[${usr.email} - ${usr.password} ${usr.temporaryPassword}] - ${usr.lastName}, ${usr.firstName} ${usr.middleName} ${usr.adminScopes}`, usr]))
|
1513
1867
|
|
1514
1868
|
let uNum = new Set()
|
1515
1869
|
let uLname = new Set()
|
@@ -1532,10 +1886,237 @@ const server = {
|
|
1532
1886
|
let _campus = campusSeq.find(a => a.name === _student?.campus)
|
1533
1887
|
let _course = courseSeq.find(b => b.name === _student?.course)
|
1534
1888
|
let _college = collegeSeq.find(c => c.name === _student?.college)
|
1889
|
+
|
1890
|
+
let modifiedById = userMail?._id
|
1891
|
+
let createdById = userMail?._id
|
1892
|
+
|
1893
|
+
let fromPrompts = await Picked()
|
1894
|
+
|
1895
|
+
// let semester = "2nd Semester"
|
1896
|
+
let semester = fromPrompts.semester
|
1897
|
+
let yearsFrom = fromPrompts.yearFrom
|
1898
|
+
let yearsTo = fromPrompts.yearTo
|
1899
|
+
|
1900
|
+
let _semester = semesterSeq.find(sem => sem.code === semester)
|
1901
|
+
let _acadYear = acadYearSeq.find(yr => yr.from === parseInt(yearsFrom) && yr.to === parseInt(yearsTo))
|
1902
|
+
|
1903
|
+
let studentNumber = _student?.student_number
|
1904
|
+
let firstName = _student?.first_name
|
1905
|
+
let lastName = _student?.last_name
|
1906
|
+
let middleName = _student?.middle_name
|
1907
|
+
let courseId = _course?._id??courseDefault?._id
|
1908
|
+
let campusId = _campus?._id??campusDefault?._id
|
1909
|
+
|
1910
|
+
let getUserName = Mixins.generateUsername(firstName, lastName)
|
1911
|
+
let email = `${getUserName}@msumarinduque.edu.ph`
|
1912
|
+
let password = `${getUserName}`
|
1913
|
+
let temporaryPassword = password
|
1914
|
+
let adminScopes = []
|
1915
|
+
|
1916
|
+
let migratedAt = new Date() //present date of the migration
|
1917
|
+
let migratedTable = 'Students' // sql counterpart main table
|
1918
|
+
let referenceId = _student?.id // id of the data
|
1919
|
+
let isMigrated = true
|
1920
|
+
|
1921
|
+
if(uEmail.has(email) && uPass.has(password) && uTPass.has(temporaryPassword) && uULname.has(lastName) && uUFname.has(firstName) && uUMname.has(middleName) && uScopes.has(adminScopes)){
|
1922
|
+
const errorMsg = `Duplicate Payload Found: [${email} - ${password} ${temporaryPassword}] - ${lastName}, ${firstName} ${middleName} ${adminScopes}`
|
1923
|
+
if(!uniqueErrors.has(errorMsg)){
|
1924
|
+
// logger.error(`${errorCounter + 1}/${errorCounter + 1}: ${errorMsg}`)
|
1925
|
+
uniqueErrors.add(errorMsg)
|
1926
|
+
// errorCounter++
|
1927
|
+
}
|
1928
|
+
}
|
1929
|
+
else if (exUserMap.has(`[${email} - ${password} ${temporaryPassword}] - ${lastName}, ${firstName} ${middleName} ${adminScopes}`)){
|
1930
|
+
const exUser = exUserMap.get(`[${email} - ${password} ${temporaryPassword}] - ${lastName}, ${firstName} ${middleName} ${adminScopes}`)
|
1931
|
+
const errorMsg = `Existing Data Found: [${exUser.email} - ${exUser.password} ${exUser.temporaryPassword}] - ${exUser.lastName}, ${exUser.firstName} ${exUser.middleName} ${exUser.adminScopes}`
|
1932
|
+
if(!uniqueErrors.has(errorMsg)){
|
1933
|
+
// logger.error(`${errorCounter + 1}/${errorCounter + 1}: ${errorMsg}`)
|
1934
|
+
uniqueErrors.add(errorMsg)
|
1935
|
+
// errorCounter++
|
1936
|
+
}
|
1937
|
+
}
|
1938
|
+
else{
|
1939
|
+
uEmail.add(email)
|
1940
|
+
uPass.add(password)
|
1941
|
+
uTPass.add(temporaryPassword)
|
1942
|
+
uULname.add(lastName)
|
1943
|
+
uUFname.add(firstName)
|
1944
|
+
uUMname.add(middleName)
|
1945
|
+
uScopes.add(adminScopes)
|
1946
|
+
newUser.push({
|
1947
|
+
firstName: _student?.first_name,
|
1948
|
+
lastName: _student?.last_name,
|
1949
|
+
middleName: _student?.middle_name,
|
1950
|
+
password: password,
|
1951
|
+
temporaryPassword: password,
|
1952
|
+
email,
|
1953
|
+
modifiedById,
|
1954
|
+
createdById,
|
1955
|
+
adminScopes,
|
1956
|
+
})
|
1957
|
+
}
|
1958
|
+
|
1959
|
+
if(uNum.has(studentNumber) && uLname.has(lastName) && uFname.has(firstName) && uMname.has(middleName) && uCourse.has(courseId) && uCampus.has(campusId)){
|
1960
|
+
const errorMsg = `Duplicate Payload Found: [${studentNumber}] - ${lastName}, ${firstName} ${middleName} [courseId: ${courseId}, campusId:${campusId}]`
|
1961
|
+
if(!uniqueErrors.has(errorMsg)){
|
1962
|
+
logger.error(`${errorCounter + 1}/${errorCounter + 1}: ${errorMsg}`)
|
1963
|
+
uniqueErrors.add(errorMsg)
|
1964
|
+
errorCounter++
|
1965
|
+
}
|
1966
|
+
}
|
1967
|
+
else if ( exStudentMap.has(`[${studentNumber}] - ${lastName}, ${firstName} ${middleName} [${courseId}, ${campusId}]`)){
|
1968
|
+
const exStudent = exStudentMap.get(`[${studentNumber}] - ${lastName}, ${firstName} ${middleName} [${courseId}, ${campusId}]`)
|
1969
|
+
const errorMsg = `Existing Data Found:[${exStudent.studentNumber}] - ${exStudent.lastName}, ${exStudent.firstName} ${exStudent.middleName} [courseId: ${exStudent.courseId}, campusId: ${exStudent.campusId}]`
|
1970
|
+
if(!uniqueErrors.has(errorMsg)){
|
1971
|
+
logger.error(`${errorCounter + 1}/${errorCounter + 1}: ${errorMsg}`)
|
1972
|
+
uniqueErrors.add(errorMsg)
|
1973
|
+
errorCounter++
|
1974
|
+
}
|
1975
|
+
}
|
1976
|
+
else{
|
1977
|
+
uNum.add(studentNumber)
|
1978
|
+
uLname.add(lastName)
|
1979
|
+
uMname.add(middleName)
|
1980
|
+
uFname.add(firstName)
|
1981
|
+
uCourse.add(courseId)
|
1982
|
+
uCampus.add(campusId)
|
1983
|
+
newStudent.push({
|
1984
|
+
studentNumber: _student?.student_number,
|
1985
|
+
firstName: _student?.first_name,
|
1986
|
+
lastName: _student?.last_name,
|
1987
|
+
middleName: _student?.middle_name,
|
1988
|
+
email: email,
|
1989
|
+
courseId: _course?._id??courseDefault?._id,
|
1990
|
+
campusId: _campus?._id??campusDefault?._id,
|
1991
|
+
collegeId: _college?._id??collegeDefault?._id,
|
1992
|
+
admittedYearId: _acadYear?._id ?? null,
|
1993
|
+
admittedSemId: _semester?._id ?? null,
|
1994
|
+
modifiedById,
|
1995
|
+
createdById,
|
1996
|
+
migratedAt,
|
1997
|
+
migratedTable,
|
1998
|
+
// referenceId,
|
1999
|
+
isMigrated
|
2000
|
+
})
|
2001
|
+
}
|
1535
2002
|
|
1536
|
-
|
2003
|
+
} catch (error) {
|
2004
|
+
logger.error(`Error occurred: ${error.stack} ${error}`);
|
2005
|
+
}
|
2006
|
+
}
|
2007
|
+
|
2008
|
+
if (newUser.length > 0) {
|
2009
|
+
const createdUser = await Users.bulkCreate(newUser, {returning: true})
|
2010
|
+
userIds = createdUser.map(_user => _user._id) // Remove const or let
|
2011
|
+
createdCounter += newUser.length
|
2012
|
+
newUser.forEach((user, index) => {
|
2013
|
+
// 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}`)
|
2014
|
+
});
|
2015
|
+
}
|
2016
|
+
|
2017
|
+
if (newStudent.length > 0) {
|
2018
|
+
// Associate userIds with new students
|
2019
|
+
newStudent = newStudent.map((exStudent, index) => ({
|
2020
|
+
...exStudent,
|
2021
|
+
userId: userIds[index]
|
2022
|
+
}));
|
2023
|
+
|
2024
|
+
await Students.bulkCreate(newStudent);
|
2025
|
+
createdCounter += newStudent.length;
|
2026
|
+
|
2027
|
+
newStudent.forEach((exStudent, index) => {
|
2028
|
+
logger.info(`${index + 1}/${index + 1}: New Student Record Created: [${exStudent.studentNumber}] - ${exStudent.lastName}, ${exStudent.firstName} ${exStudent.middleName} [courseId: ${exStudent.courseId}, campusId: ${exStudent.campusId}]`)
|
2029
|
+
});
|
2030
|
+
}
|
2031
|
+
|
2032
|
+
// if (newStudent.length > 0) {
|
2033
|
+
// await Students.bulkCreate(newStudent)
|
2034
|
+
// createdCounter += newStudent.length
|
2035
|
+
|
2036
|
+
// newStudent.forEach((exStudent, index) => {
|
2037
|
+
// logger.info(`${index + 1}/${index + 1}: New Student Record Created: [${exStudent.studentNumber}] - ${exStudent.lastName}, ${exStudent.firstName} ${exStudent.middleName} [courseId: ${exStudent.courseId}, campusId: ${exStudent.campusId}]`)
|
2038
|
+
// });
|
2039
|
+
// }
|
2040
|
+
|
2041
|
+
console.log("");
|
2042
|
+
console.log("########################################################")
|
2043
|
+
console.log("")
|
2044
|
+
logger.info('Student Data Migration Completed');
|
2045
|
+
logger.info(`Total successful Student records created: ${createdCounter}/${createdCounter}`);
|
2046
|
+
logger.info(`Total Student Error Records: ${errorCounter}/${errorCounter}`);
|
2047
|
+
logger.info(`Total records: ${createdCounter + errorCounter}`);
|
2048
|
+
console.log("")
|
2049
|
+
console.log("########################################################")
|
2050
|
+
console.log("")
|
2051
|
+
|
2052
|
+
let totalSummary = {
|
2053
|
+
itemLength: createdCounter + errorCounter,
|
2054
|
+
error: errorCounter,
|
2055
|
+
success: createdCounter
|
2056
|
+
}
|
2057
|
+
return totalSummary
|
2058
|
+
|
2059
|
+
} catch (error) {
|
2060
|
+
logger.error(`Error occurred: ${error.stack} ${error}`);
|
2061
|
+
|
2062
|
+
}
|
2063
|
+
},
|
2064
|
+
|
2065
|
+
async Studentsss(){
|
2066
|
+
try {
|
2067
|
+
console.log("");
|
2068
|
+
console.log("########################################################")
|
2069
|
+
console.log(" Students Migration ")
|
2070
|
+
console.log("########################################################")
|
2071
|
+
console.log("");
|
2072
|
+
|
2073
|
+
const db_schema = schema
|
2074
|
+
let maxIds = await Students.max('_id'); // Fetch maximum _id directly from the Students model
|
2075
|
+
let maxId = maxIds|| 0;
|
2076
|
+
await db.sequelize.query(`CREATE SEQUENCE IF NOT EXISTS ${db_schema}."Students__id_seq"`);
|
2077
|
+
await db.sequelize.query(`ALTER SEQUENCE ${db_schema}."Students__id_seq" RESTART WITH ${maxId + 1}`);
|
2078
|
+
|
2079
|
+
const studentApi = await api.Student()
|
2080
|
+
|
2081
|
+
const campusSeq = await Campuses.findAll()
|
2082
|
+
const courseSeq = await Courses.findAll()
|
2083
|
+
const collegeSeq = await Colleges.findAll()
|
2084
|
+
const semesterSeq = await Semesters.findAll()
|
2085
|
+
const acadYearSeq = await AcademicYears.findAll()
|
2086
|
+
const userSeq = await Users.findAll()
|
2087
|
+
|
2088
|
+
const userMail = await Users.findOne({ where: { email: 'ccci_integrator@gmail.com' } });
|
2089
|
+
const campusDefault = await Campuses.findOne({ where: { name: 'Campus Default' } });
|
2090
|
+
const courseDefault = await Courses.findOne({ where: { name: 'Course Default' } });
|
2091
|
+
const collegeDefault = await Colleges.findOne({ where: { name: 'Colleges Default' } });
|
2092
|
+
|
2093
|
+
let createdCounter = 0
|
2094
|
+
let errorCounter = 0
|
2095
|
+
let uniqueErrors = new Set()
|
2096
|
+
|
2097
|
+
let uNum = new Set()
|
2098
|
+
let uLname = new Set()
|
2099
|
+
let uMname = new Set()
|
2100
|
+
let uFname = new Set()
|
2101
|
+
let uCourse = new Set()
|
2102
|
+
let uCampus = new Set()
|
2103
|
+
|
2104
|
+
let newStudent = []
|
2105
|
+
|
2106
|
+
const exStudent = await Students.findAll()
|
2107
|
+
const exStudentMap = new Map(exStudent.map(student => [`[${student.studentNumber}] - ${student.lastName}, ${student.firstName} ${student.middleName} [${student.courseId}, ${student.campusId}]`, student]))
|
2108
|
+
|
2109
|
+
const {data} = studentApi
|
2110
|
+
|
2111
|
+
for (let i = 0; i < data.length; i++){
|
2112
|
+
try {
|
2113
|
+
let _student = data[i]
|
1537
2114
|
|
1538
|
-
let
|
2115
|
+
let _campus = campusSeq.find(a => a.name === _student?.campus)
|
2116
|
+
let _course = courseSeq.find(b => b.name === _student?.course)
|
2117
|
+
let _college = collegeSeq.find(c => c.name === _student?.college)
|
2118
|
+
|
2119
|
+
let findUser = await userSeq.find( f => f.lastName === _student?.last_name && f.firstName === _student?.first_name && f.middleName === _student?.middle_name)
|
1539
2120
|
|
1540
2121
|
let modifiedById = userMail?._id
|
1541
2122
|
let createdById = userMail?._id
|
@@ -1557,6 +2138,12 @@ const server = {
|
|
1557
2138
|
let courseId = _course?._id??courseDefault?._id
|
1558
2139
|
let campusId = _campus?._id??campusDefault?._id
|
1559
2140
|
|
2141
|
+
let getUserName = Mixins.generateUsername(firstName, lastName)
|
2142
|
+
let email = `${getUserName}@msumarinduque.edu.ph`
|
2143
|
+
|
2144
|
+
let userId = findUser?._id
|
2145
|
+
|
2146
|
+
|
1560
2147
|
if(uNum.has(studentNumber) && uLname.has(lastName) && uFname.has(firstName) && uMname.has(middleName) && uCourse.has(courseId) && uCampus.has(campusId)){
|
1561
2148
|
const errorMsg = `Duplicate Payload Found: [${studentNumber}] - ${lastName}, ${firstName} ${middleName} [courseId: ${courseId}, campusId:${campusId}]`
|
1562
2149
|
if(!uniqueErrors.has(errorMsg)){
|
@@ -1594,6 +2181,7 @@ const server = {
|
|
1594
2181
|
admittedSemId: _semester?._id ?? null,
|
1595
2182
|
modifiedById,
|
1596
2183
|
createdById,
|
2184
|
+
userId
|
1597
2185
|
})
|
1598
2186
|
}
|
1599
2187
|
|
@@ -1653,6 +2241,7 @@ const server = {
|
|
1653
2241
|
|
1654
2242
|
const subjectApi = await api.Subject();
|
1655
2243
|
const instructorApi = await api.Instructor()
|
2244
|
+
const sectionApi = await api.Section()
|
1656
2245
|
|
1657
2246
|
const subjectSeq = await Subjects.findAll();
|
1658
2247
|
const instructorSeq = await Instructors.findAll()
|
@@ -1709,6 +2298,8 @@ const server = {
|
|
1709
2298
|
let _insdepartment = acadDeptSeq.find(idep => idep.name === _instructor?.department_name)
|
1710
2299
|
|
1711
2300
|
|
2301
|
+
let _sections = sectionApi.find(sect => sect.name === sections)
|
2302
|
+
|
1712
2303
|
if (!_subject) {
|
1713
2304
|
// console.error(`Subject with code ${subjects} not found.`);
|
1714
2305
|
continue;
|
@@ -1743,6 +2334,11 @@ const server = {
|
|
1743
2334
|
let departmentId = _insdepartment?._id??null
|
1744
2335
|
let campusId = _campus?._id??null
|
1745
2336
|
|
2337
|
+
let migratedAt = new Date() //present date of the migration
|
2338
|
+
let migratedTable = 'Sections' // sql counterpart main table
|
2339
|
+
let referenceId = _sections?.id // id of the data
|
2340
|
+
let isMigrated = true
|
2341
|
+
|
1746
2342
|
|
1747
2343
|
if(uCode.has(code) && uName.has(name) && uSub.has(subjectId) && uIns.has(instructorId) && uSem.has(semesterId) && uYear.has(academicYearId)&& uCrs.has(courseId)&& uDept.has(departmentId) && uCam.has(campusId)){
|
1748
2344
|
const errorMsg = `Duplicate Payload Found: [${code}] - ${name} [subjectId: ${subjectId}, instructorId: ${instructorId}]`
|
@@ -1784,6 +2380,10 @@ const server = {
|
|
1784
2380
|
departmentId: _insdepartment?._id??null,
|
1785
2381
|
modifiedById,
|
1786
2382
|
createdById,
|
2383
|
+
migratedAt,
|
2384
|
+
migratedTable,
|
2385
|
+
referenceId,
|
2386
|
+
isMigrated
|
1787
2387
|
})
|
1788
2388
|
}
|
1789
2389
|
|
@@ -1906,6 +2506,11 @@ const server = {
|
|
1906
2506
|
let modifiedById = userMail?._id;
|
1907
2507
|
let createdById = userMail?._id;
|
1908
2508
|
|
2509
|
+
let migratedAt = new Date() //present date of the migration
|
2510
|
+
let migratedTable = 'campuses' // sql counterpart main table
|
2511
|
+
let referenceId = _campus?.id // id of the data
|
2512
|
+
let isMigrated = true
|
2513
|
+
|
1909
2514
|
for (let j = 0; j < _students.length; j++){
|
1910
2515
|
let instrcutor = _students[j].faculty_id
|
1911
2516
|
let sections = _students[j].section_name
|
@@ -1975,6 +2580,7 @@ const server = {
|
|
1975
2580
|
remarks = "FAILED"
|
1976
2581
|
overAllStatus = "FAILED"
|
1977
2582
|
}
|
2583
|
+
|
1978
2584
|
|
1979
2585
|
let studentId = student?._id
|
1980
2586
|
let courseId = course?._id
|
@@ -2124,6 +2730,11 @@ const server = {
|
|
2124
2730
|
let modifiedById = userMail?._id;
|
2125
2731
|
let createdById = userMail?._id;
|
2126
2732
|
|
2733
|
+
let migratedAt = new Date() //present date of the migration
|
2734
|
+
let migratedTable = 'Students' // sql counterpart main table
|
2735
|
+
let referenceId = _student?.id // id of the data
|
2736
|
+
let isMigrated = true
|
2737
|
+
|
2127
2738
|
for (let j = 0; j < _students.length; j++){
|
2128
2739
|
|
2129
2740
|
let instrcutor = _students[j].faculty_id
|
@@ -2218,6 +2829,10 @@ const server = {
|
|
2218
2829
|
overAllStatus,
|
2219
2830
|
createdById,
|
2220
2831
|
modifiedById,
|
2832
|
+
migratedAt,
|
2833
|
+
migratedTable,
|
2834
|
+
// referenceId,
|
2835
|
+
isMigrated
|
2221
2836
|
},
|
2222
2837
|
default:{
|
2223
2838
|
|
@@ -2310,10 +2925,12 @@ module.exports = {
|
|
2310
2925
|
AcademicDepartments: server.AcademicDepartment,
|
2311
2926
|
Course: server.Course,
|
2312
2927
|
Room: server.Room,
|
2928
|
+
UserInstructor: server.UserInstructor,
|
2313
2929
|
Instructor: server.Instructor,
|
2314
2930
|
AcademicYear: server.AcademicYear,
|
2315
2931
|
Subject: server.Subject,
|
2316
2932
|
Schedule: server.Schedule,
|
2933
|
+
UserStudents: server.UserStudents,
|
2317
2934
|
Student: server.Student,
|
2318
2935
|
Section: server.Section,
|
2319
2936
|
EnrolledStudent: server.EnrolledStudent,
|