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