lms-sync 1.0.70 → 1.0.72
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 +168 -40
- 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
|
|
|
@@ -1462,6 +1463,130 @@ const server = {
|
|
|
1462
1463
|
}
|
|
1463
1464
|
},
|
|
1464
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
|
+
|
|
1465
1590
|
async Subject(){
|
|
1466
1591
|
try {
|
|
1467
1592
|
await db.sequelize.query('DROP FUNCTION IF EXISTS pg_temp.testfunc()');
|
|
@@ -1888,6 +2013,8 @@ const server = {
|
|
|
1888
2013
|
let _course = courseSeq.find(b => b.name === _student?.course)
|
|
1889
2014
|
let _college = collegeSeq.find(c => c.name === _student?.college)
|
|
1890
2015
|
|
|
2016
|
+
let _year = acadYearSeq.find(y => y.from === (_student?.admitted_year_id? _student?.admitted_year_id : null) )
|
|
2017
|
+
|
|
1891
2018
|
let modifiedById = userMail?._id
|
|
1892
2019
|
let createdById = userMail?._id
|
|
1893
2020
|
|
|
@@ -2591,6 +2718,7 @@ module.exports = {
|
|
|
2591
2718
|
Instructor: server.Instructor,
|
|
2592
2719
|
AcadDeptInstructor: server.AcadDeptInstructor,
|
|
2593
2720
|
AcademicYear: server.AcademicYear,
|
|
2721
|
+
Semester: server.Semester,
|
|
2594
2722
|
Subject: server.Subject,
|
|
2595
2723
|
Schedule: server.Schedule,
|
|
2596
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,
|