lms-sync 1.0.45 → 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 +657 -42
- 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}`);
|
@@ -135,8 +135,6 @@ const server = {
|
|
135
135
|
let errorCounter = 0
|
136
136
|
let uniqueErrors = new Set()
|
137
137
|
|
138
|
-
|
139
|
-
|
140
138
|
let uCode = new Set()
|
141
139
|
let uName = new Set()
|
142
140
|
|
@@ -156,6 +154,11 @@ const server = {
|
|
156
154
|
let name = _campus?.name
|
157
155
|
let code = _campus?.code
|
158
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
|
+
|
159
162
|
if(uCode.has(code) && uName.has(name)){
|
160
163
|
const errorMsg = `Duplicate Payload Found: [${code}] - ${name}`
|
161
164
|
if(!uniqueErrors.has(errorMsg)){
|
@@ -183,10 +186,10 @@ const server = {
|
|
183
186
|
address: _campus?.address,
|
184
187
|
modifiedById,
|
185
188
|
createdById,
|
186
|
-
|
187
|
-
|
188
|
-
|
189
|
-
|
189
|
+
migratedAt,
|
190
|
+
migratedTable,
|
191
|
+
referenceId,
|
192
|
+
isMigrated
|
190
193
|
})
|
191
194
|
}
|
192
195
|
|
@@ -267,12 +270,7 @@ const server = {
|
|
267
270
|
|
268
271
|
let createdCounter = 0
|
269
272
|
let errorCounter = 0
|
270
|
-
let uniqueErrors = new Set()
|
271
|
-
|
272
|
-
// let migratedAt = new Date() //present date of the migration
|
273
|
-
// let migratedTable = 'colleges' // sql counterpart main table
|
274
|
-
// let referenceId = collegeApi.id // id of the data
|
275
|
-
// let isMigrated = true
|
273
|
+
let uniqueErrors = new Set()
|
276
274
|
|
277
275
|
let uCode = new Set()
|
278
276
|
let uName = new Set()
|
@@ -296,6 +294,11 @@ const server = {
|
|
296
294
|
let name = _college?.name
|
297
295
|
let code = _college?.code
|
298
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
|
+
|
299
302
|
if(uCode.has(code) && uName.has(name)){
|
300
303
|
const errorMsg = `Duplicate Payload Found: [${code}] - ${name}`
|
301
304
|
if(!uniqueErrors.has(errorMsg)){
|
@@ -321,7 +324,15 @@ const server = {
|
|
321
324
|
code: _college?.code,
|
322
325
|
campusId: _campus?._id??campusDefault?._id,
|
323
326
|
modifiedById,
|
324
|
-
createdById
|
327
|
+
createdById,
|
328
|
+
migratedAt,
|
329
|
+
migratedTable,
|
330
|
+
referenceId,
|
331
|
+
isMigrated,
|
332
|
+
migratedAt,
|
333
|
+
migratedTable,
|
334
|
+
referenceId,
|
335
|
+
isMigrated
|
325
336
|
})
|
326
337
|
}
|
327
338
|
|
@@ -372,7 +383,7 @@ const server = {
|
|
372
383
|
try {
|
373
384
|
console.log("");
|
374
385
|
console.log("########################################################")
|
375
|
-
console.log("
|
386
|
+
console.log(" Academic Departments Migration ")
|
376
387
|
console.log("########################################################")
|
377
388
|
console.log("");
|
378
389
|
|
@@ -424,6 +435,7 @@ const server = {
|
|
424
435
|
let newAcadDeptTwo = []
|
425
436
|
const exAcadDeptTwo = await AcademicDepartments.findAll()
|
426
437
|
const exAcadDeptMapTwo = new Map(exAcadDeptTwo.map(dept => [`[${dept.code}] - ${dept.name}`, dept]))
|
438
|
+
|
427
439
|
|
428
440
|
for (let i = 0; i < departmentApi.length; i++){
|
429
441
|
try {
|
@@ -438,6 +450,11 @@ const server = {
|
|
438
450
|
let name = _acadDept?.name
|
439
451
|
let code = _acadDept?.code
|
440
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
|
+
|
441
458
|
if(uCode.has(code) && uName.has(name)){
|
442
459
|
const errorMsg = `Duplicate Payload Found: [${code}] - ${name}`
|
443
460
|
if(!uniqueErrors.has(errorMsg)){
|
@@ -464,7 +481,11 @@ const server = {
|
|
464
481
|
collegeId: _college?._id??collegeDefault?._id,
|
465
482
|
campusId: campus?._id??campusDefault?._id,
|
466
483
|
modifiedById,
|
467
|
-
createdById
|
484
|
+
createdById,
|
485
|
+
migratedAt,
|
486
|
+
migratedTable,
|
487
|
+
referenceId,
|
488
|
+
isMigrated
|
468
489
|
})
|
469
490
|
}
|
470
491
|
} catch (error) {
|
@@ -572,6 +593,279 @@ const server = {
|
|
572
593
|
},
|
573
594
|
|
574
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(){
|
575
869
|
try {
|
576
870
|
console.log("");
|
577
871
|
console.log("########################################################")
|
@@ -590,8 +884,10 @@ const server = {
|
|
590
884
|
|
591
885
|
const departmentSeq = await AcademicDepartments.findAll()
|
592
886
|
const campusSeq = await Campuses.findAll()
|
593
|
-
const
|
594
|
-
|
887
|
+
const userSeq = await Users.findAll()
|
888
|
+
|
889
|
+
const userMail = await Users.findOne({ where: { email: 'ccci_integrator@gmail.com' } });
|
890
|
+
if (!userMail){}
|
595
891
|
const campusDefault = await Campuses.findOne({ where: { name: 'Campus Default' } });
|
596
892
|
const departmentDefault = await AcademicDepartments.findOne({ where: { name: 'AcademicDepartments Default' } });
|
597
893
|
|
@@ -627,16 +923,18 @@ const server = {
|
|
627
923
|
const exInst = await Instructors.findAll()
|
628
924
|
const exInstMap = new Map(exInst.map(inst => [`[${inst.employeeNumber}] - ${inst.lastName}, ${inst.firstName} ${inst.middleName} [${inst.departmentId}, ${inst.campusId}]` , inst]))
|
629
925
|
|
926
|
+
|
630
927
|
for (let i = 0; i < instructorApi.length; i++){
|
631
928
|
try {
|
929
|
+
|
632
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)
|
633
933
|
|
634
934
|
let acadDepartmentMap = departmentApi.find(a => a.name === _instructor?.department_name)
|
635
|
-
|
636
935
|
let _acadDepartment = departmentSeq.find(b => b.name === acadDepartmentMap?.name)
|
637
|
-
|
638
936
|
let campusMap = campusSeq.find(c => c._id === _acadDepartment?.campusId)
|
639
|
-
|
937
|
+
|
640
938
|
let modifiedById = userMail?._id
|
641
939
|
let createdById = userMail?._id
|
642
940
|
|
@@ -644,7 +942,6 @@ const server = {
|
|
644
942
|
let _campusDefault = campusSeq.find(ccc => ccc.name === campusDefault)
|
645
943
|
|
646
944
|
let role = _instructor?.role
|
647
|
-
|
648
945
|
let isChairPerson = false
|
649
946
|
let isDean = false
|
650
947
|
|
@@ -661,6 +958,7 @@ const server = {
|
|
661
958
|
let employeeNumber = _instructor?.faculty_id
|
662
959
|
let departmentId = _acadDepartment?._id??departmentDefault?._id
|
663
960
|
let campusId = campusMap?._id??_campusDefault?._id
|
961
|
+
let userId = findUser?._id
|
664
962
|
|
665
963
|
if(uNum.has(employeeNumber) && uLname.has(lastName) && uFname.has(firstName) && uMname.has(middleName) && uDept.has(departmentId) && uCamp.has(campusId)){
|
666
964
|
const errorMsg = `Duplicate Payload Found: [${employeeNumber}] - ${lastName}, ${firstName} ${middleName} [departmentId: ${departmentId}, campusId:${campusId}]`
|
@@ -698,11 +996,12 @@ const server = {
|
|
698
996
|
isChairPerson,
|
699
997
|
modifiedById,
|
700
998
|
createdById,
|
999
|
+
userId
|
701
1000
|
})
|
702
1001
|
}
|
703
1002
|
|
704
1003
|
} catch (error) {
|
705
|
-
|
1004
|
+
logger.error(`Error occurred: ${error} ${error.stack}`);
|
706
1005
|
}
|
707
1006
|
}
|
708
1007
|
|
@@ -717,7 +1016,6 @@ const server = {
|
|
717
1016
|
|
718
1017
|
}
|
719
1018
|
|
720
|
-
|
721
1019
|
console.log("");
|
722
1020
|
console.log("########################################################")
|
723
1021
|
console.log("")
|
@@ -823,6 +1121,10 @@ const server = {
|
|
823
1121
|
let campusId = campus?._id??null
|
824
1122
|
let departmentId = _department?._id??null
|
825
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
|
826
1128
|
|
827
1129
|
|
828
1130
|
if(uCode.has(code) && uName.has(name) && uMajor.has(major) && uCampus.has(campusId) && uDept.has(departmentId)){
|
@@ -855,7 +1157,11 @@ const server = {
|
|
855
1157
|
campusId: campus?._id??campusDefault?._id,
|
856
1158
|
departmentId: _department?._id??departmentDefault?._id,
|
857
1159
|
modifiedById,
|
858
|
-
createdById
|
1160
|
+
createdById,
|
1161
|
+
migratedAt,
|
1162
|
+
migratedTable,
|
1163
|
+
referenceId,
|
1164
|
+
isMigrated
|
859
1165
|
})
|
860
1166
|
}
|
861
1167
|
|
@@ -969,6 +1275,11 @@ const server = {
|
|
969
1275
|
let modifiedById = userMail?._id
|
970
1276
|
let createdById = userMail?._id
|
971
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
|
+
|
972
1283
|
let name = _room?.name
|
973
1284
|
let campusId = _campus?._id??_campusDefault?._id??null
|
974
1285
|
|
@@ -997,7 +1308,11 @@ const server = {
|
|
997
1308
|
campusId: _campus?._id??_campusDefault?._id??campusesDefault._id,
|
998
1309
|
capacity,
|
999
1310
|
modifiedById,
|
1000
|
-
createdById
|
1311
|
+
createdById,
|
1312
|
+
migratedAt,
|
1313
|
+
migratedTable,
|
1314
|
+
referenceId,
|
1315
|
+
isMigrated
|
1001
1316
|
})
|
1002
1317
|
}
|
1003
1318
|
|
@@ -1093,6 +1408,11 @@ const server = {
|
|
1093
1408
|
let modifiedById = userMail?._id
|
1094
1409
|
let createdById = userMail?._id
|
1095
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
|
+
|
1096
1416
|
|
1097
1417
|
if(uFrom.has(from) && uTo.has(to)){
|
1098
1418
|
const errorMsg = `Duplicate Payload Found: [${from} - ${to}]`
|
@@ -1119,7 +1439,11 @@ const server = {
|
|
1119
1439
|
to,
|
1120
1440
|
modifiedById,
|
1121
1441
|
createdById,
|
1122
|
-
default: isDefault
|
1442
|
+
default: isDefault,
|
1443
|
+
migratedAt,
|
1444
|
+
migratedTable,
|
1445
|
+
referenceId,
|
1446
|
+
isMigrated
|
1123
1447
|
})
|
1124
1448
|
}
|
1125
1449
|
|
@@ -1247,6 +1571,11 @@ const server = {
|
|
1247
1571
|
let departmentId = _department?._id??departmentDefault?._id
|
1248
1572
|
let description = _description
|
1249
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
|
+
|
1250
1579
|
if(uCode.has(code) && uName.has(name) && uDescription.has(description) && uUnits.has(units) && uDept.has(departmentId)){
|
1251
1580
|
const errorMsg = `Duplicate Payload Found: [${code}] - ${name} [units: ${units}, departmentId: ${departmentId}]`
|
1252
1581
|
if(!uniqueErrors.has(errorMsg)){
|
@@ -1279,10 +1608,10 @@ const server = {
|
|
1279
1608
|
description,
|
1280
1609
|
modifiedById,
|
1281
1610
|
createdById,
|
1282
|
-
|
1283
|
-
|
1284
|
-
|
1285
|
-
|
1611
|
+
migratedAt,
|
1612
|
+
migratedTable,
|
1613
|
+
referenceId,
|
1614
|
+
isMigrated
|
1286
1615
|
})
|
1287
1616
|
}
|
1288
1617
|
|
@@ -1395,6 +1724,11 @@ const server = {
|
|
1395
1724
|
|
1396
1725
|
let days = null
|
1397
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
|
+
|
1398
1732
|
if (dayHandler.length > 1) {
|
1399
1733
|
days = dayHandler[0].split('').map(day => dayMappings[day]).join(', ');
|
1400
1734
|
} else {
|
@@ -1433,12 +1767,11 @@ const server = {
|
|
1433
1767
|
to : etFormat??to,
|
1434
1768
|
days,
|
1435
1769
|
modifiedById,
|
1436
|
-
createdById
|
1437
|
-
|
1438
|
-
|
1439
|
-
|
1440
|
-
|
1441
|
-
// isMigrated
|
1770
|
+
createdById,
|
1771
|
+
migratedAt,
|
1772
|
+
migratedTable,
|
1773
|
+
referenceId,
|
1774
|
+
isMigrated
|
1442
1775
|
})
|
1443
1776
|
}
|
1444
1777
|
} catch (error) {
|
@@ -1481,6 +1814,7 @@ const server = {
|
|
1481
1814
|
},
|
1482
1815
|
|
1483
1816
|
async Student(){
|
1817
|
+
let userIds = []
|
1484
1818
|
try {
|
1485
1819
|
console.log("");
|
1486
1820
|
console.log("########################################################")
|
@@ -1489,8 +1823,15 @@ const server = {
|
|
1489
1823
|
console.log("");
|
1490
1824
|
|
1491
1825
|
const db_schema = schema
|
1826
|
+
let maxIdsU = await Users.max('_id'); //Fetch maximum _id directly from the Users model
|
1492
1827
|
let maxIds = await Students.max('_id'); // Fetch maximum _id directly from the Students model
|
1828
|
+
|
1493
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
|
+
|
1494
1835
|
await db.sequelize.query(`CREATE SEQUENCE IF NOT EXISTS ${db_schema}."Students__id_seq"`);
|
1495
1836
|
await db.sequelize.query(`ALTER SEQUENCE ${db_schema}."Students__id_seq" RESTART WITH ${maxId + 1}`);
|
1496
1837
|
|
@@ -1511,7 +1852,18 @@ const server = {
|
|
1511
1852
|
let errorCounter = 0
|
1512
1853
|
let uniqueErrors = new Set()
|
1513
1854
|
|
1514
|
-
|
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]))
|
1515
1867
|
|
1516
1868
|
let uNum = new Set()
|
1517
1869
|
let uLname = new Set()
|
@@ -1534,10 +1886,237 @@ const server = {
|
|
1534
1886
|
let _campus = campusSeq.find(a => a.name === _student?.campus)
|
1535
1887
|
let _course = courseSeq.find(b => b.name === _student?.course)
|
1536
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
|
+
}
|
1537
2002
|
|
1538
|
-
|
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
|
+
},
|
1539
2064
|
|
1540
|
-
|
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]
|
2114
|
+
|
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)
|
1541
2120
|
|
1542
2121
|
let modifiedById = userMail?._id
|
1543
2122
|
let createdById = userMail?._id
|
@@ -1559,6 +2138,12 @@ const server = {
|
|
1559
2138
|
let courseId = _course?._id??courseDefault?._id
|
1560
2139
|
let campusId = _campus?._id??campusDefault?._id
|
1561
2140
|
|
2141
|
+
let getUserName = Mixins.generateUsername(firstName, lastName)
|
2142
|
+
let email = `${getUserName}@msumarinduque.edu.ph`
|
2143
|
+
|
2144
|
+
let userId = findUser?._id
|
2145
|
+
|
2146
|
+
|
1562
2147
|
if(uNum.has(studentNumber) && uLname.has(lastName) && uFname.has(firstName) && uMname.has(middleName) && uCourse.has(courseId) && uCampus.has(campusId)){
|
1563
2148
|
const errorMsg = `Duplicate Payload Found: [${studentNumber}] - ${lastName}, ${firstName} ${middleName} [courseId: ${courseId}, campusId:${campusId}]`
|
1564
2149
|
if(!uniqueErrors.has(errorMsg)){
|
@@ -1596,6 +2181,7 @@ const server = {
|
|
1596
2181
|
admittedSemId: _semester?._id ?? null,
|
1597
2182
|
modifiedById,
|
1598
2183
|
createdById,
|
2184
|
+
userId
|
1599
2185
|
})
|
1600
2186
|
}
|
1601
2187
|
|
@@ -1655,6 +2241,7 @@ const server = {
|
|
1655
2241
|
|
1656
2242
|
const subjectApi = await api.Subject();
|
1657
2243
|
const instructorApi = await api.Instructor()
|
2244
|
+
const sectionApi = await api.Section()
|
1658
2245
|
|
1659
2246
|
const subjectSeq = await Subjects.findAll();
|
1660
2247
|
const instructorSeq = await Instructors.findAll()
|
@@ -1711,6 +2298,8 @@ const server = {
|
|
1711
2298
|
let _insdepartment = acadDeptSeq.find(idep => idep.name === _instructor?.department_name)
|
1712
2299
|
|
1713
2300
|
|
2301
|
+
let _sections = sectionApi.find(sect => sect.name === sections)
|
2302
|
+
|
1714
2303
|
if (!_subject) {
|
1715
2304
|
// console.error(`Subject with code ${subjects} not found.`);
|
1716
2305
|
continue;
|
@@ -1745,6 +2334,11 @@ const server = {
|
|
1745
2334
|
let departmentId = _insdepartment?._id??null
|
1746
2335
|
let campusId = _campus?._id??null
|
1747
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
|
+
|
1748
2342
|
|
1749
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)){
|
1750
2344
|
const errorMsg = `Duplicate Payload Found: [${code}] - ${name} [subjectId: ${subjectId}, instructorId: ${instructorId}]`
|
@@ -1786,6 +2380,10 @@ const server = {
|
|
1786
2380
|
departmentId: _insdepartment?._id??null,
|
1787
2381
|
modifiedById,
|
1788
2382
|
createdById,
|
2383
|
+
migratedAt,
|
2384
|
+
migratedTable,
|
2385
|
+
referenceId,
|
2386
|
+
isMigrated
|
1789
2387
|
})
|
1790
2388
|
}
|
1791
2389
|
|
@@ -1908,6 +2506,11 @@ const server = {
|
|
1908
2506
|
let modifiedById = userMail?._id;
|
1909
2507
|
let createdById = userMail?._id;
|
1910
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
|
+
|
1911
2514
|
for (let j = 0; j < _students.length; j++){
|
1912
2515
|
let instrcutor = _students[j].faculty_id
|
1913
2516
|
let sections = _students[j].section_name
|
@@ -1977,6 +2580,7 @@ const server = {
|
|
1977
2580
|
remarks = "FAILED"
|
1978
2581
|
overAllStatus = "FAILED"
|
1979
2582
|
}
|
2583
|
+
|
1980
2584
|
|
1981
2585
|
let studentId = student?._id
|
1982
2586
|
let courseId = course?._id
|
@@ -2126,6 +2730,11 @@ const server = {
|
|
2126
2730
|
let modifiedById = userMail?._id;
|
2127
2731
|
let createdById = userMail?._id;
|
2128
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
|
+
|
2129
2738
|
for (let j = 0; j < _students.length; j++){
|
2130
2739
|
|
2131
2740
|
let instrcutor = _students[j].faculty_id
|
@@ -2220,6 +2829,10 @@ const server = {
|
|
2220
2829
|
overAllStatus,
|
2221
2830
|
createdById,
|
2222
2831
|
modifiedById,
|
2832
|
+
migratedAt,
|
2833
|
+
migratedTable,
|
2834
|
+
// referenceId,
|
2835
|
+
isMigrated
|
2223
2836
|
},
|
2224
2837
|
default:{
|
2225
2838
|
|
@@ -2312,10 +2925,12 @@ module.exports = {
|
|
2312
2925
|
AcademicDepartments: server.AcademicDepartment,
|
2313
2926
|
Course: server.Course,
|
2314
2927
|
Room: server.Room,
|
2928
|
+
UserInstructor: server.UserInstructor,
|
2315
2929
|
Instructor: server.Instructor,
|
2316
2930
|
AcademicYear: server.AcademicYear,
|
2317
2931
|
Subject: server.Subject,
|
2318
2932
|
Schedule: server.Schedule,
|
2933
|
+
UserStudents: server.UserStudents,
|
2319
2934
|
Student: server.Student,
|
2320
2935
|
Section: server.Section,
|
2321
2936
|
EnrolledStudent: server.EnrolledStudent,
|