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.
- package/apiConnections/mapping.js +169 -51
- package/apiConnections/tablePick.js +2 -1
- package/models/semesters.model.js +16 -0
- package/package.json +1 -1
|
@@ -91,48 +91,49 @@ const server = {
|
|
|
91
91
|
defaults: yearDefPayload
|
|
92
92
|
});
|
|
93
93
|
|
|
94
|
-
let semesterData = [
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
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
|
-
|
|
125
|
-
code: semesters.code,
|
|
126
|
-
description: semesters.description,
|
|
127
|
-
modifiedById: userMail?._id,
|
|
128
|
-
createdById: userMail?._id
|
|
129
|
-
}
|
|
120
|
+
// ]
|
|
130
121
|
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
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,
|