lms-sync 1.0.83 → 1.0.85
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 +18 -11
- package/apiConnections/mappings-old.js +333 -0
- package/login.json +5 -0
- package/package.json +1 -1
- package/target.json +9 -0
@@ -4,6 +4,7 @@ const api = require('../apiConnections/apiConnects')
|
|
4
4
|
const moment = require('moment')
|
5
5
|
const { Picked } = require('./semesterPick')
|
6
6
|
const Mixins = require('../utils/Mixins')
|
7
|
+
const bcrypt = require('bcrypt');
|
7
8
|
|
8
9
|
const {
|
9
10
|
AcademicDepartments,
|
@@ -746,13 +747,17 @@ const server = {
|
|
746
747
|
let referenceId = _instructor?.id // id of the data
|
747
748
|
let isMigrated = true
|
748
749
|
|
750
|
+
const saltRounds = 10; // Number of salt rounds
|
751
|
+
|
749
752
|
let firstName = _instructor?.first_name
|
750
753
|
let lastName = _instructor?.last_name
|
751
754
|
let middleName = _instructor?.middle_name
|
752
755
|
let getUserName = Mixins.generateUsername(firstName, lastName)
|
753
756
|
let email = `${getUserName}@msumarinduque.edu.ph`
|
754
|
-
let password =
|
755
|
-
|
757
|
+
let password = getUserName
|
758
|
+
const hashedPassword = await bcrypt.hash(password, saltRounds);
|
759
|
+
|
760
|
+
let temporaryPassword = getUserName
|
756
761
|
let adminScopes = []
|
757
762
|
|
758
763
|
let employeeNumber = _instructor?.faculty_id
|
@@ -792,8 +797,8 @@ const server = {
|
|
792
797
|
firstName: _instructor?.first_name,
|
793
798
|
lastName: _instructor?.last_name,
|
794
799
|
middleName: _instructor?.middle_name,
|
795
|
-
password:
|
796
|
-
temporaryPassword:
|
800
|
+
password: hashedPassword,
|
801
|
+
temporaryPassword: getUserName,
|
797
802
|
email,
|
798
803
|
modifiedById,
|
799
804
|
createdById,
|
@@ -1975,10 +1980,6 @@ const server = {
|
|
1975
1980
|
const yearDefault = await AcademicYears.findOne({ where: { from: 1799, to: 1800 } });
|
1976
1981
|
const semeDefault = await Semesters.findOne({ where: { code: '1st Semester' }});
|
1977
1982
|
|
1978
|
-
|
1979
|
-
|
1980
|
-
|
1981
|
-
|
1982
1983
|
let createdCounter = 0
|
1983
1984
|
let errorCounter = 0
|
1984
1985
|
let uniqueErrors = new Set()
|
@@ -2038,6 +2039,8 @@ const server = {
|
|
2038
2039
|
let defSem = semeDefault?._id
|
2039
2040
|
let defYear = yearDefault?._id
|
2040
2041
|
|
2042
|
+
const saltRounds = 10; // Number of salt rounds
|
2043
|
+
|
2041
2044
|
let studentNumber = _student?.student_number
|
2042
2045
|
let firstName = _student?.first_name
|
2043
2046
|
let lastName = _student?.last_name
|
@@ -2048,7 +2051,9 @@ const server = {
|
|
2048
2051
|
let getUserName = Mixins.generateUsername(firstName, lastName)
|
2049
2052
|
let email = `${getUserName}@msumarinduque.edu.ph`
|
2050
2053
|
let password = `${getUserName}`
|
2051
|
-
|
2054
|
+
|
2055
|
+
const hashedPassword = await bcrypt.hash(password, saltRounds);
|
2056
|
+
let temporaryPassword = getUserName
|
2052
2057
|
let adminScopes = []
|
2053
2058
|
|
2054
2059
|
let migratedAt = new Date() //present date of the migration
|
@@ -2056,6 +2061,8 @@ const server = {
|
|
2056
2061
|
let referenceId = _student?.id // id of the data
|
2057
2062
|
let isMigrated = true
|
2058
2063
|
|
2064
|
+
|
2065
|
+
|
2059
2066
|
if(uEmail.has(email) && uPass.has(password) && uTPass.has(temporaryPassword) && uULname.has(lastName) && uUFname.has(firstName) && uUMname.has(middleName) && uScopes.has(adminScopes)){
|
2060
2067
|
const errorMsg = `Duplicate Payload Found: [${email} - ${password} ${temporaryPassword}] - ${lastName}, ${firstName} ${middleName} ${adminScopes}`
|
2061
2068
|
if(!uniqueErrors.has(errorMsg)){
|
@@ -2085,8 +2092,8 @@ const server = {
|
|
2085
2092
|
firstName: _student?.first_name,
|
2086
2093
|
lastName: _student?.last_name,
|
2087
2094
|
middleName: _student?.middle_name,
|
2088
|
-
password:
|
2089
|
-
temporaryPassword:
|
2095
|
+
password: hashedPassword,
|
2096
|
+
temporaryPassword: getUserName,
|
2090
2097
|
email,
|
2091
2098
|
modifiedById,
|
2092
2099
|
createdById,
|
@@ -656,6 +656,339 @@ const server = {
|
|
656
656
|
}
|
657
657
|
},
|
658
658
|
|
659
|
+
async Instructor(){
|
660
|
+
let userIds = []
|
661
|
+
await db.sequelize.query('DROP FUNCTION IF EXISTS pg_temp.testfunc()');
|
662
|
+
|
663
|
+
try {
|
664
|
+
console.log("");
|
665
|
+
console.log("########################################################")
|
666
|
+
console.log(" Instructors Migrations ")
|
667
|
+
console.log("########################################################")
|
668
|
+
console.log("");
|
669
|
+
|
670
|
+
const db_schema = schema
|
671
|
+
let maxIds = await Users.max('_id'); //Fetch maximum _id directly from the Users model
|
672
|
+
let maxIdsIns = await Instructors.max('_id'); //Fetch maximum _id directly from the Users model
|
673
|
+
|
674
|
+
// console.log('maxIdsIns :>> ', maxIdsIns);
|
675
|
+
|
676
|
+
let maxId = maxIds|| 0;
|
677
|
+
let maxIdIns = maxIdsIns|| 0;
|
678
|
+
|
679
|
+
// console.log('maxIdIns :>> ', maxIdIns);
|
680
|
+
|
681
|
+
await db.sequelize.query(`CREATE SEQUENCE IF NOT EXISTS ${db_schema}."Users__id_seq"`);
|
682
|
+
await db.sequelize.query(`ALTER SEQUENCE ${db_schema}."Users__id_seq" RESTART WITH ${maxId + 1}`);
|
683
|
+
|
684
|
+
await db.sequelize.query(`CREATE SEQUENCE IF NOT EXISTS ${db_schema}."Instructors__id_seq"`);
|
685
|
+
await db.sequelize.query(`ALTER SEQUENCE ${db_schema}."Instructors__id_seq" RESTART WITH ${maxIdIns + 1}`);
|
686
|
+
await db.sequelize.query(`DROP FUNCTION IF EXISTS ${db_schema}."pg_temp.testfunc()"`);
|
687
|
+
|
688
|
+
const instructorApi = await api.Instructor()
|
689
|
+
const departmentApi = await api.Department()
|
690
|
+
|
691
|
+
let userDefPayload = {
|
692
|
+
email: 'ccci_integrator@gmail.com',
|
693
|
+
password: '$2a$12$Q.h3Q9IN6vsIxGBa/EgfOOABeXTcwxt4t9cu4nqAK.nczGRRtZJUS',
|
694
|
+
temporaryPassword: 'P@ssw0rd123',
|
695
|
+
firstName: 'Androi',
|
696
|
+
lastName: 'Pamisaran',
|
697
|
+
adminScopes: [],
|
698
|
+
createdAt: new Date(),
|
699
|
+
updatedAt: new Date()
|
700
|
+
};
|
701
|
+
|
702
|
+
let [userDefault, createdUser] = await Users.findOrCreate({
|
703
|
+
where: { email: userDefPayload.email },
|
704
|
+
defaults: userDefPayload
|
705
|
+
});
|
706
|
+
|
707
|
+
const departmentSeq = await AcademicDepartments.findAll()
|
708
|
+
const campusSeq = await Campuses.findAll()
|
709
|
+
const employeeSeq = await Employees.findAll()
|
710
|
+
const userSeq = await Users.findAll()
|
711
|
+
|
712
|
+
const userMail = await Users.findOne({ where: { email: 'ccci_integrator@gmail.com' } });
|
713
|
+
if (!userMail){}
|
714
|
+
|
715
|
+
const campusDefault = await Campuses.findOne({ where: { name: 'Campus Default' } });
|
716
|
+
const departmentDefault = await AcademicDepartments.findOne({ where: { name: 'AcademicDepartments Default' } });
|
717
|
+
|
718
|
+
let defaultPayload = {
|
719
|
+
firstName: 'Instructor',
|
720
|
+
lastName: 'Default',
|
721
|
+
middleName: 'Migration',
|
722
|
+
employeeNumber: '_Instructor',
|
723
|
+
departmentId: departmentDefault?._id,
|
724
|
+
campusId: campusDefault?._id,
|
725
|
+
modifiedById: userMail?._id,
|
726
|
+
createdById: userMail?._id
|
727
|
+
};
|
728
|
+
|
729
|
+
let [defaults, createddef] = await Instructors.findOrCreate({
|
730
|
+
where: { employeeNumber: defaultPayload.employeeNumber, lastName: defaultPayload.lastName},
|
731
|
+
defaults: defaultPayload
|
732
|
+
});
|
733
|
+
|
734
|
+
let createdCounter = 0
|
735
|
+
let errorCounter = 0
|
736
|
+
let uniqueErrors = new Set()
|
737
|
+
|
738
|
+
let uEmail = new Set()
|
739
|
+
let uPass = new Set()
|
740
|
+
let uTPass = new Set()
|
741
|
+
let uULname = new Set()
|
742
|
+
let uUFname = new Set()
|
743
|
+
let uUMname = new Set()
|
744
|
+
let uScopes = new Set()
|
745
|
+
|
746
|
+
let newUser = []
|
747
|
+
|
748
|
+
const exUser = await Users.findAll()
|
749
|
+
const exUserMap = new Map(exUser.map(usr => [`[${usr.email} - ${usr.password} ${usr.temporaryPassword}] - ${usr.lastName}, ${usr.firstName} ${usr.middleName} ${usr.adminScopes}`, usr]))
|
750
|
+
|
751
|
+
let uDept = new Set()
|
752
|
+
let uCamp = new Set()
|
753
|
+
let uLname = new Set()
|
754
|
+
let uMname = new Set()
|
755
|
+
let uFname = new Set()
|
756
|
+
let uNum = new Set()
|
757
|
+
|
758
|
+
let newInstructor = []
|
759
|
+
|
760
|
+
const exInst = await Instructors.findAll()
|
761
|
+
const exInstMap = new Map(exInst.map(inst => [`[${inst.employeeNumber}] - ${inst.lastName}, ${inst.firstName} ${inst.middleName} [${inst.departmentId}, ${inst.campusId}]` , inst]))
|
762
|
+
|
763
|
+
for (let i = 0; i < instructorApi.length; i++){
|
764
|
+
try {
|
765
|
+
let _instructor = instructorApi[i]
|
766
|
+
|
767
|
+
let acadDepartmentMap = departmentApi.find(a => a.name === _instructor?.department_name)
|
768
|
+
let _acadDepartment = departmentSeq.find(b => b.name === acadDepartmentMap?.name)
|
769
|
+
let campusMap = campusSeq.find(c => c._id === _acadDepartment?.campusId)
|
770
|
+
|
771
|
+
let employeeFind = employeeSeq.find(emps => emps.employeeNumber === _instructor?.faculty_id)
|
772
|
+
let userFind = userSeq.find(eus => eus._id === employeeFind?.userId)
|
773
|
+
let _userFind = userSeq.find(e => e.firstName === _instructor?.first_name && e.middleName === _instructor?.middle_name && e.lastName === _instructor?.last_name)
|
774
|
+
|
775
|
+
// console.log('userFind :>> ', userFind);
|
776
|
+
|
777
|
+
if(!employeeFind){}
|
778
|
+
if(!userFind){}
|
779
|
+
|
780
|
+
let modifiedById = userMail?._id
|
781
|
+
let createdById = userMail?._id
|
782
|
+
|
783
|
+
let campusDefault = "MSC - Boac Campus"
|
784
|
+
let _campusDefault = campusSeq.find(ccc => ccc.name === campusDefault)
|
785
|
+
|
786
|
+
let role = _instructor?.role
|
787
|
+
let isChairPerson = false
|
788
|
+
let isDean = false
|
789
|
+
|
790
|
+
if(role === "Program Chair"){
|
791
|
+
isChairPerson = true
|
792
|
+
}
|
793
|
+
if(role === "Dean"){
|
794
|
+
isDean = true
|
795
|
+
}
|
796
|
+
|
797
|
+
let migratedAt = new Date() //present date of the migration
|
798
|
+
let migratedTable = 'Instructors' // sql counterpart main table
|
799
|
+
let referenceId = _instructor?.id // id of the data
|
800
|
+
let isMigrated = true
|
801
|
+
|
802
|
+
let firstName = _instructor?.first_name
|
803
|
+
let lastName = _instructor?.last_name
|
804
|
+
let middleName = _instructor?.middle_name
|
805
|
+
let getUserName = Mixins.generateUsername(firstName, lastName)
|
806
|
+
let email = `${getUserName}@msumarinduque.edu.ph`
|
807
|
+
let password = `${getUserName}`
|
808
|
+
let temporaryPassword = password
|
809
|
+
let adminScopes = []
|
810
|
+
|
811
|
+
let employeeNumber = _instructor?.faculty_id
|
812
|
+
let departmentId = _acadDepartment?._id??departmentDefault?._id
|
813
|
+
let campusId = campusMap?._id??_campusDefault?._id
|
814
|
+
let employeeId = employeeFind?._id??null
|
815
|
+
let userId = userFind?._id??_userFind?._id
|
816
|
+
|
817
|
+
// console.log('userId :>> ', userId);
|
818
|
+
|
819
|
+
let [record, created] = await Users.findOrCreate({
|
820
|
+
where: {
|
821
|
+
firstName: _instructor?.first_name,
|
822
|
+
lastName: _instructor?.last_name,
|
823
|
+
middleName: _instructor?.middle_name,
|
824
|
+
password: password,
|
825
|
+
temporaryPassword: password,
|
826
|
+
email,
|
827
|
+
modifiedById,
|
828
|
+
createdById,
|
829
|
+
adminScopes,
|
830
|
+
migratedAt,
|
831
|
+
migratedTable,
|
832
|
+
// referenceId,
|
833
|
+
isMigrated,
|
834
|
+
},
|
835
|
+
defaults:{
|
836
|
+
|
837
|
+
}
|
838
|
+
})
|
839
|
+
|
840
|
+
if(created){
|
841
|
+
console.log('record.password :>> ', record.password);
|
842
|
+
}
|
843
|
+
// if(uEmail.has(email) && uPass.has(password) && uTPass.has(temporaryPassword) && uULname.has(lastName) && uUFname.has(firstName) && uUMname.has(middleName) && uScopes.has(adminScopes)){
|
844
|
+
// const errorMsg = `Duplicate Payload Found: [${email} - ${password} ${temporaryPassword}] - ${lastName}, ${firstName} ${middleName} ${adminScopes}`
|
845
|
+
// if(!uniqueErrors.has(errorMsg)){
|
846
|
+
// // logger.error(`${errorCounter + 1}/${errorCounter + 1}: ${errorMsg}`)
|
847
|
+
// uniqueErrors.add(errorMsg)
|
848
|
+
// // errorCounter++
|
849
|
+
// }
|
850
|
+
// }
|
851
|
+
// else if (exUserMap.has(`[${email} - ${password} ${temporaryPassword}] - ${lastName}, ${firstName} ${middleName} ${adminScopes}`)){
|
852
|
+
// const exUser = exUserMap.get(`[${email} - ${password} ${temporaryPassword}] - ${lastName}, ${firstName} ${middleName} ${adminScopes}`)
|
853
|
+
// const errorMsg = `Existing Data Found: [${exUser.email} - ${exUser.password} ${exUser.temporaryPassword}] - ${exUser.lastName}, ${exUser.firstName} ${exUser.middleName} ${exUser.adminScopes}`
|
854
|
+
// if(!uniqueErrors.has(errorMsg)){
|
855
|
+
// // logger.error(`${errorCounter + 1}/${errorCounter + 1}: ${errorMsg}`)
|
856
|
+
// uniqueErrors.add(errorMsg)
|
857
|
+
// // errorCounter++
|
858
|
+
// }
|
859
|
+
// }
|
860
|
+
// else{
|
861
|
+
// uEmail.add(email)
|
862
|
+
// uPass.add(password)
|
863
|
+
// uTPass.add(temporaryPassword)
|
864
|
+
// uULname.add(lastName)
|
865
|
+
// uUFname.add(firstName)
|
866
|
+
// uUMname.add(middleName)
|
867
|
+
// uScopes.add(adminScopes)
|
868
|
+
// newUser.push({
|
869
|
+
// firstName: _instructor?.first_name,
|
870
|
+
// lastName: _instructor?.last_name,
|
871
|
+
// middleName: _instructor?.middle_name,
|
872
|
+
// password: password,
|
873
|
+
// temporaryPassword: password,
|
874
|
+
// email,
|
875
|
+
// modifiedById,
|
876
|
+
// createdById,
|
877
|
+
// adminScopes,
|
878
|
+
// migratedAt,
|
879
|
+
// migratedTable,
|
880
|
+
// // referenceId,
|
881
|
+
// isMigrated,
|
882
|
+
// })
|
883
|
+
// }
|
884
|
+
|
885
|
+
|
886
|
+
|
887
|
+
|
888
|
+
// if(uNum.has(employeeNumber) && uLname.has(lastName) && uFname.has(firstName) && uMname.has(middleName) && uDept.has(departmentId) && uCamp.has(campusId)){
|
889
|
+
// const errorMsg = `Duplicate Payload Found: [${employeeNumber}] - ${lastName}, ${firstName} ${middleName} [departmentId: ${departmentId}, campusId:${campusId}]`
|
890
|
+
// if(!uniqueErrors.has(errorMsg)){
|
891
|
+
// logger.error(`${errorCounter + 1}/${errorCounter + 1}: ${errorMsg}`)
|
892
|
+
// uniqueErrors.add(errorMsg)
|
893
|
+
// errorCounter++
|
894
|
+
// }
|
895
|
+
// }
|
896
|
+
// else if ( exInstMap.has(`[${employeeNumber}] - ${lastName}, ${firstName} ${middleName} [${departmentId}, ${campusId}]`)){
|
897
|
+
// const exInst = exInstMap.get(`[${employeeNumber}] - ${lastName}, ${firstName} ${middleName} [${departmentId}, ${campusId}]`)
|
898
|
+
// const errorMsg = `Existing Data Found:[${exInst.employeeNumber}] - ${exInst.lastName}, ${exInst.firstName} ${exInst.middleName} [departmentId: ${exInst.departmentId}, campusId: ${exInst.campusId}]`
|
899
|
+
// if(!uniqueErrors.has(errorMsg)){
|
900
|
+
// logger.error(`${errorCounter + 1}/${errorCounter + 1}: ${errorMsg}`)
|
901
|
+
// uniqueErrors.add(errorMsg)
|
902
|
+
// errorCounter++
|
903
|
+
// }
|
904
|
+
// }
|
905
|
+
// else{
|
906
|
+
// uNum.add(employeeNumber)
|
907
|
+
// uLname.add(lastName)
|
908
|
+
// uFname.add(firstName)
|
909
|
+
// uMname.add(middleName)
|
910
|
+
// uDept.add(departmentId)
|
911
|
+
// uCamp.add(campusId)
|
912
|
+
// newInstructor.push({
|
913
|
+
// firstName: _instructor?.first_name,
|
914
|
+
// lastName: _instructor?.last_name,
|
915
|
+
// middleName: _instructor?.middle_name,
|
916
|
+
// employeeNumber: _instructor?.faculty_id,
|
917
|
+
// departmentId: _acadDepartment?._id??departmentDefault?._id,
|
918
|
+
// academicDepartmentId: _acadDepartment?._id??departmentDefault?._id,
|
919
|
+
// campusId: campusMap?._id??_campusDefault?._id??campusDefault?._id,
|
920
|
+
// isDean,
|
921
|
+
// isChairPerson,
|
922
|
+
// modifiedById,
|
923
|
+
// createdById,
|
924
|
+
// migratedAt,
|
925
|
+
// migratedTable,
|
926
|
+
// // referenceId,
|
927
|
+
// isMigrated,
|
928
|
+
// userId: userId || null,
|
929
|
+
// employeeId,
|
930
|
+
// })
|
931
|
+
// }
|
932
|
+
|
933
|
+
} catch (error) {
|
934
|
+
logger.error(`Error occurred: ${error} ${error.stack}`);
|
935
|
+
}
|
936
|
+
}
|
937
|
+
|
938
|
+
// if (newUser.length > 0) {
|
939
|
+
// const createdUser = await Users.bulkCreate(newUser, {returning: true})
|
940
|
+
// userIds = createdUser.map(_user => _user._id) // Remove const or let
|
941
|
+
// // createdCounter += newUser.length
|
942
|
+
// newUser.forEach((user, index) => {
|
943
|
+
// // 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}`)
|
944
|
+
// });
|
945
|
+
// }
|
946
|
+
|
947
|
+
|
948
|
+
// if (newInstructor.length > 0) {
|
949
|
+
// // Associate userIds with new instructors
|
950
|
+
// // if(!newInstructor.userId){
|
951
|
+
// // newInstructor = newInstructor.map((inst, index) => ({
|
952
|
+
// // ...inst,
|
953
|
+
// // userId: userIds[index]
|
954
|
+
// // }));
|
955
|
+
// // }
|
956
|
+
// await Instructors.bulkCreate(newInstructor);
|
957
|
+
// createdCounter += newInstructor.length;
|
958
|
+
|
959
|
+
// newInstructor.forEach((inst, index) => {
|
960
|
+
// logger.info(`${index + 1}/${index + 1}: New Instructor Record Created: [${inst.employeeNumber}] - ${inst.lastName}, ${inst.firstName} ${inst.middleName} [ departmentId: ${inst.departmentId}, campusId: ${inst.campusId}]`);
|
961
|
+
// });
|
962
|
+
// }
|
963
|
+
|
964
|
+
|
965
|
+
|
966
|
+
console.log("");
|
967
|
+
console.log("########################################################")
|
968
|
+
console.log("")
|
969
|
+
logger.info('Instructors Data Migration Completed');
|
970
|
+
logger.info(`Total Successful Instructors Records Created: ${createdCounter}/${createdCounter}`);
|
971
|
+
logger.info(`Total Existing Instructors Records: ${errorCounter}/${errorCounter}`);
|
972
|
+
logger.info(`Total Records: ${createdCounter + errorCounter}`);
|
973
|
+
console.log("")
|
974
|
+
console.log("########################################################")
|
975
|
+
console.log("")
|
976
|
+
|
977
|
+
let totalSummary = {
|
978
|
+
itemLength: createdCounter + errorCounter,
|
979
|
+
error: errorCounter,
|
980
|
+
success: createdCounter
|
981
|
+
}
|
982
|
+
return totalSummary
|
983
|
+
|
984
|
+
} catch (error) {
|
985
|
+
;
|
986
|
+
logger.error(`Error occurred: ${error} ${error.stack} `);
|
987
|
+
|
988
|
+
}
|
989
|
+
},
|
990
|
+
|
991
|
+
|
659
992
|
async AcademicYear(){
|
660
993
|
try {
|
661
994
|
console.log("");
|
package/login.json
ADDED
package/package.json
CHANGED