lms-sync 1.0.69 → 1.0.71

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.
@@ -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": {