lms-sync 1.0.69 → 1.0.71

Sign up to get free protection for your applications and to get access to all the features.
@@ -91,48 +91,49 @@ const server = {
91
91
  defaults: yearDefPayload
92
92
  });
93
93
 
94
- let semesterData = [
95
- {
96
- code: '1st Semester',
97
- description: '1st Semester',
98
- modifiedById: userMail?._id,
99
- createdById: userMail?._id
100
- },
101
- {
102
- code: '2nd Semester',
103
- description: '2nd Semester',
104
- modifiedById: userMail?._id,
105
- createdById: userMail?._id
106
- },
107
- {
108
- code: 'Summer',
109
- description: 'Summer',
110
- modifiedById: userMail?._id,
111
- createdById: userMail?._id
112
- },
113
- {
114
- code: 'School Year',
115
- description: 'School Year',
116
- modifiedById: userMail?._id,
117
- createdById: userMail?._id
118
- }
119
- ]
120
-
121
- for (let sem = 0; sem < semesterData.length; sem++) {
122
- const semesters = semesterData[sem];
94
+ // let semesterData = [
95
+ // {
96
+ // code: '1st Semester',
97
+ // description: '1st Semester',
98
+ // modifiedById: userMail?._id,
99
+ // createdById: userMail?._id
100
+ // },
101
+ // {
102
+ // code: '2nd Semester',
103
+ // description: '2nd Semester',
104
+ // modifiedById: userMail?._id,
105
+ // createdById: userMail?._id
106
+ // },
107
+ // {
108
+ // code: 'Summer',
109
+ // description: 'Summer',
110
+ // modifiedById: userMail?._id,
111
+ // createdById: userMail?._id
112
+ // },
113
+ // {
114
+ // code: 'School Year',
115
+ // description: 'School Year',
116
+ // modifiedById: userMail?._id,
117
+ // createdById: userMail?._id
118
+ // }
123
119
 
124
- let semestersPayload = {
125
- code: semesters.code,
126
- description: semesters.description,
127
- modifiedById: userMail?._id,
128
- createdById: userMail?._id
129
- }
120
+ // ]
130
121
 
131
- let [semdefaults, semcreateddef] = await Semesters.findOrCreate({
132
- where: { code: semestersPayload.code},
133
- defaults: semestersPayload
134
- });
135
- }
122
+ // for (let sem = 0; sem < semesterData.length; sem++) {
123
+ // const semesters = semesterData[sem];
124
+
125
+ // let semestersPayload = {
126
+ // code: semesters.code,
127
+ // description: semesters.description,
128
+ // modifiedById: userMail?._id,
129
+ // createdById: userMail?._id
130
+ // }
131
+
132
+ // let [semdefaults, semcreateddef] = await Semesters.findOrCreate({
133
+ // where: { code: semestersPayload.code},
134
+ // defaults: semestersPayload
135
+ // });
136
+ // }
136
137
 
137
138
  const campusApi = await api.Campus()
138
139
 
@@ -161,10 +162,7 @@ const server = {
161
162
 
162
163
  const existingCampus = await Campuses.findAll()
163
164
  const existingCampusMap = new Map(existingCampus.map(campus => [`[${campus.code}] - ${campus.name}`, campus]))
164
-
165
- const yearDefault = await AcademicYears.findOne({ where: { from: 1799, to: 1800 } });
166
- const semeDefault = await Semesters.findOne({ where: { code: '1st Semester' }});
167
-
165
+
168
166
  for (let i = 0; i < campusApi.length; i++){
169
167
  try {
170
168
 
@@ -176,13 +174,6 @@ const server = {
176
174
  let name = _campus?.name
177
175
  let code = _campus?.code
178
176
 
179
- let defSem = semeDefault?._id
180
- let defYear = yearDefault?._id
181
-
182
-
183
- console.log('defSem :>> ', defSem);
184
- console.log('defYear :>> ', defYear);
185
-
186
177
  let migratedAt = new Date() //present date of the migration
187
178
  let migratedTable = 'Campuses' // sql counterpart main table
188
179
  let referenceId = _campus?.id // id of the data
@@ -1472,6 +1463,130 @@ const server = {
1472
1463
  }
1473
1464
  },
1474
1465
 
1466
+ async Semester(){
1467
+ try {
1468
+ await db.sequelize.query('DROP FUNCTION IF EXISTS pg_temp.testfunc()');
1469
+
1470
+ console.log("");
1471
+ console.log("########################################################")
1472
+ console.log(" Semesters Migration ")
1473
+ console.log("########################################################")
1474
+ console.log("");
1475
+
1476
+ const db_schema = schema
1477
+ let maxIds = await AcademicYears.max('_id'); // Fetch maximum _id directly from the AcademicYears model
1478
+ let maxId = maxIds|| 0;
1479
+ await db.sequelize.query(`CREATE SEQUENCE IF NOT EXISTS ${db_schema}."Semesters__id_seq"`);
1480
+ await db.sequelize.query(`ALTER SEQUENCE ${db_schema}."Semesters__id_seq" RESTART WITH ${maxId + 1}`);
1481
+ await db.sequelize.query(`DROP FUNCTION IF EXISTS ${db_schema}."pg_temp.testfunc()"`);
1482
+
1483
+ const acadYearApi = await api.AcademicYear()
1484
+ const userMail = await Users.findOne({ where: { email: 'ccci_integrator@gmail.com' } });
1485
+
1486
+ let createdCounter = 0
1487
+ let errorCounter = 0
1488
+ let uniqueErrors = new Set()
1489
+
1490
+ const { acadYearResult, currentSchoolYear } = acadYearApi;
1491
+
1492
+
1493
+ let uCode = new Set()
1494
+ let uDesc = new Set()
1495
+
1496
+ let newYears = []
1497
+
1498
+ const exYear = await Semesters.findAll()
1499
+ const exYearMap = new Map(exYear.map(sem => [`[${sem.code}] ${sem.description}`, sem]))
1500
+
1501
+
1502
+ for (let i = 0; i < acadYearResult.length; i++){
1503
+ try {
1504
+ let _acadyear = acadYearResult[i]
1505
+
1506
+ let modifiedById = userMail?._id
1507
+ let createdById = userMail?._id
1508
+
1509
+ let migratedAt = new Date() //present date of the migration
1510
+ let migratedTable = 'AcademicYears' // sql counterpart main table
1511
+ let referenceId = _acadyear?.id // id of the data
1512
+ let isMigrated = true
1513
+
1514
+ let code = _acadyear?.term
1515
+ let description = _acadyear?.term
1516
+
1517
+
1518
+ if(uCode.has(code) && uDesc.has(description)){
1519
+ const errorMsg = `Duplicate Payload Found: [${code}] ${description}]`
1520
+ if(!uniqueErrors.has(errorMsg)){
1521
+ logger.error(`${errorCounter + 1}/${errorCounter + 1}: ${errorMsg}`)
1522
+ uniqueErrors.add(errorMsg)
1523
+ errorCounter++
1524
+ }
1525
+ }
1526
+ else if ( exYearMap.has(`[${code}] ${description}`)){
1527
+ const exYear = exYearMap.get(`[${code}] ${description}`)
1528
+ const errorMsg = `Existing Data Found:[${exYear.code}] ${exYear.description}]`
1529
+ if(!uniqueErrors.has(errorMsg)){
1530
+ logger.error(`${errorCounter + 1}/${errorCounter + 1}: ${errorMsg}`)
1531
+ uniqueErrors.add(errorMsg)
1532
+ errorCounter++
1533
+ }
1534
+ }
1535
+ else{
1536
+ uCode.add(code)
1537
+ uDesc.add(description)
1538
+ newYears.push({
1539
+ code,
1540
+ description,
1541
+ modifiedById,
1542
+ createdById,
1543
+ migratedAt,
1544
+ migratedTable,
1545
+ referenceId,
1546
+ isMigrated
1547
+ })
1548
+ }
1549
+
1550
+ } catch (error) {
1551
+ ;
1552
+ logger.error(`Error occurred: ${error.stack} ${error}`);
1553
+ }
1554
+ }
1555
+
1556
+ if (newYears.length > 0) {
1557
+ await Semesters.bulkCreate(newYears)
1558
+ createdCounter += newYears.length
1559
+
1560
+ newYears.forEach((year, index) => {
1561
+ logger.info(`${index + 1}/${index + 1}: New Semesters Years Record Created: [${year.code} - ${year.description}]`)
1562
+ });
1563
+ }
1564
+
1565
+ console.log("");
1566
+ console.log("########################################################")
1567
+ console.log("")
1568
+ logger.info('Semesters Data Migration Completed');
1569
+ logger.info(`Total Successful Semesters Records Created: ${createdCounter}/${createdCounter}`);
1570
+ logger.info(`Total Existing Semesters Records: ${errorCounter}/${errorCounter}`);
1571
+ logger.info(`Total Records: ${createdCounter + errorCounter}`);
1572
+ console.log("")
1573
+ console.log("########################################################")
1574
+ console.log("")
1575
+
1576
+ let totalSummary = {
1577
+ itemLength: createdCounter + errorCounter,
1578
+ error: errorCounter,
1579
+ success: createdCounter
1580
+ }
1581
+ return totalSummary
1582
+
1583
+ } catch (error) {
1584
+ ;
1585
+ logger.error(`Error occurred: ${error.stack} ${error}`);
1586
+
1587
+ }
1588
+ },
1589
+
1475
1590
  async Subject(){
1476
1591
  try {
1477
1592
  await db.sequelize.query('DROP FUNCTION IF EXISTS pg_temp.testfunc()');
@@ -1898,6 +2013,8 @@ const server = {
1898
2013
  let _course = courseSeq.find(b => b.name === _student?.course)
1899
2014
  let _college = collegeSeq.find(c => c.name === _student?.college)
1900
2015
 
2016
+ let _year = acadYearSeq.find(y => y.from === (_student?.admitted_year_id? _student?.admitted_year_id : null) )
2017
+
1901
2018
  let modifiedById = userMail?._id
1902
2019
  let createdById = userMail?._id
1903
2020
 
@@ -2601,6 +2718,7 @@ module.exports = {
2601
2718
  Instructor: server.Instructor,
2602
2719
  AcadDeptInstructor: server.AcadDeptInstructor,
2603
2720
  AcademicYear: server.AcademicYear,
2721
+ Semester: server.Semester,
2604
2722
  Subject: server.Subject,
2605
2723
  Schedule: server.Schedule,
2606
2724
  Student: server.Student,
@@ -11,6 +11,8 @@ async function promptYearSem() {
11
11
  message: 'Please Select Table:',
12
12
  choices: [
13
13
  { title: 'All Tables', value: 'AllTables' },
14
+ { title: 'AcademicYear', value: 'AcademicYear' },
15
+ { title: 'Semester', value: 'Semester' },
14
16
  { title: 'Campus', value: 'Campus' },
15
17
  { title: 'College', value: 'College' },
16
18
  { title: 'AcademicDepartments', value: 'AcademicDepartments' },
@@ -18,7 +20,6 @@ async function promptYearSem() {
18
20
  { title: 'Academic Department Instructors', value: 'AcadDeptInstructor' },
19
21
  { title: 'Course', value: 'Course' },
20
22
  { title: 'Room', value: 'Room' },
21
- { title: 'AcademicYear', value: 'AcademicYear' },
22
23
  { title: 'Subject', value: 'Subject' },
23
24
  { title: 'Schedule', value: 'Schedule' },
24
25
  { title: 'Student', value: 'Student' },
@@ -62,6 +62,22 @@ module.exports = (sequelize, DataTypes,schema) => {
62
62
  type: DataTypes.DATE,
63
63
  allowNull: true,
64
64
  },
65
+ migratedAt:{
66
+ type: DataTypes.DATE,
67
+ allowNull: true,
68
+ },
69
+ migratedTable:{
70
+ type: DataTypes.STRING,
71
+ allowNull: true,
72
+ },
73
+ referenceId:{
74
+ type: DataTypes.INTEGER,
75
+ allowNull: true,
76
+ },
77
+ isMigrated:{
78
+ type: DataTypes.BOOLEAN,
79
+ allowNull: true,
80
+ },
65
81
  },
66
82
  {
67
83
  sequelize,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lms-sync",
3
- "version": "1.0.69",
3
+ "version": "1.0.71",
4
4
  "description": "Migration App for MSC LMS",
5
5
  "main": "index.js",
6
6
  "scripts": {