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.
@@ -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 = `${getUserName}`
755
- let temporaryPassword = password
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: password,
796
- temporaryPassword: password,
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
- let temporaryPassword = password
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: password,
2089
- temporaryPassword: password,
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
@@ -0,0 +1,5 @@
1
+ {
2
+ "email": "ictsc@mscmarinduque.edu.ph",
3
+ "password": "MjU8qweXLaFpDnEyfRrbY9",
4
+ "baseURL": "https://lms.api.msc.priisms.online/api"
5
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lms-sync",
3
- "version": "1.0.83",
3
+ "version": "1.0.85",
4
4
  "description": "Migration App for MSC LMS",
5
5
  "main": "index.js",
6
6
  "scripts": {
package/target.json ADDED
@@ -0,0 +1,9 @@
1
+ {
2
+ "host": "188.166.212.92",
3
+ "username": "migration",
4
+ "database": "migration",
5
+ "password": "Admin123",
6
+ "dialect": "postgres",
7
+ "schema": "public_migrations",
8
+ "logging": false
9
+ }