Skip to content

Commit 201219a

Browse files
Merge pull request #1990 from OneCommunityGlobal/Amalesh-togglebio
Amalesh - Toggle Request Bio permission on Weekly Summaries Report
2 parents 7daa769 + 3c78f80 commit 201219a

11 files changed

Lines changed: 185 additions & 75 deletions

package-lock.json

Lines changed: 25 additions & 18 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,7 @@
9191
"cors": "^2.8.4",
9292
"cron": "^1.8.2",
9393
"date-fns": "^2.30.0",
94+
"date-fns-tz": "^2.0.1",
9495
"dotenv": "^5.0.1",
9596
"dropbox": "^10.34.0",
9697
"express": "^4.22.1",
@@ -132,7 +133,8 @@
132133
"twilio": "^5.5.2",
133134
"uuid": "^3.4.0",
134135
"ws": "^8.17.1",
135-
"xmlrpc": "^1.3.2"
136+
"xmlrpc": "^1.3.2",
137+
"zod": "^4.3.6"
136138
},
137139
"nodemonConfig": {
138140
"watch": [

src/controllers/educationPortal/downloadReportController.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
/* istanbul ignore file */
2+
// eslint-disable-next-line import/no-unresolved
23
const PDFDocument = require('pdfkit');
4+
// eslint-disable-next-line import/no-unresolved
35
const { Parser } = require('json2csv');
46
const mongoose = require('mongoose');
57
const EducationTask = require('../../models/educationTask');

src/controllers/liveJournalPostController.js

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,11 @@
11
/* eslint-disable no-console */
22
const crypto = require('crypto');
3+
// eslint-disable-next-line import/no-unresolved
34
const xmlrpc = require('xmlrpc');
45
const mongoose = require('mongoose');
5-
// eslint-disable-next-line import/no-extraneous-dependencies
6+
// eslint-disable-next-line import/no-extraneous-dependencies, import/no-unresolved
67
const cloudinary = require('cloudinary').v2;
7-
// eslint-disable-next-line import/no-extraneous-dependencies
8+
// eslint-disable-next-line import/no-extraneous-dependencies, import/no-unresolved
89
const streamifier = require('streamifier');
910
const LiveJournalPost = require('../models/liveJournalPost');
1011

src/controllers/timeEntryController.js

Lines changed: 23 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1558,13 +1558,26 @@ const timeEntrycontroller = function (TimeEntry) {
15581558
* recalculate the hoursByCategory for all users and update the field
15591559
*/
15601560
const recalculateHoursByCategoryAllUsers = async function (taskId) {
1561-
if (mongoose.connection.readyState === 0) {
1561+
// Check if MongoDB connection is ready before attempting to start a session
1562+
// readyState: 0 = disconnected, 1 = connected, 2 = connecting, 3 = disconnecting
1563+
if (mongoose.connection.readyState !== 1) {
1564+
const recalculationTask = recalculationTaskQueue.find((task) => task.taskId === taskId);
1565+
if (recalculationTask) {
1566+
recalculationTask.status = 'Failed';
1567+
recalculationTask.completionTime = new Date().toISOString();
1568+
}
1569+
1570+
logger.logInfo(
1571+
`Recalculation task ${taskId} skipped: MongoDB connection not ready (state: ${mongoose.connection.readyState})`,
1572+
);
15621573
return;
15631574
}
1564-
const session = await mongoose.startSession();
1565-
session.startTransaction();
15661575

1576+
let sesh;
15671577
try {
1578+
sesh = await mongoose.startSession();
1579+
sesh.startTransaction();
1580+
15681581
const userprofiles = await UserProfile.find({}, '_id').lean();
15691582

15701583
const recalculationPromises = userprofiles.map(async (userprofile) => {
@@ -1574,15 +1587,17 @@ const timeEntrycontroller = function (TimeEntry) {
15741587
});
15751588
await Promise.all(recalculationPromises);
15761589

1577-
await session.commitTransaction();
1590+
await sesh.commitTransaction();
15781591

15791592
const recalculationTask = recalculationTaskQueue.find((task) => task.taskId === taskId);
15801593
if (recalculationTask) {
15811594
recalculationTask.status = 'Completed';
15821595
recalculationTask.completionTime = new Date().toISOString();
15831596
}
15841597
} catch (err) {
1585-
await session.abortTransaction();
1598+
if (sesh) {
1599+
await sesh.abortTransaction();
1600+
}
15861601
const recalculationTask = recalculationTaskQueue.find((task) => task.taskId === taskId);
15871602
if (recalculationTask) {
15881603
recalculationTask.status = 'Failed';
@@ -1591,7 +1606,9 @@ const timeEntrycontroller = function (TimeEntry) {
15911606

15921607
logger.logException(err);
15931608
} finally {
1594-
session.endSession();
1609+
if (sesh) {
1610+
sesh.endSession();
1611+
}
15951612
}
15961613
};
15971614

src/controllers/timeEntryController.test.js

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
const mongoose = require('mongoose');
2-
32
const { mockRes, assertResMock } = require('../test');
43

54
const oid = () => new mongoose.Types.ObjectId().toString();

src/models/userProfile.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -224,7 +224,7 @@ const userProfileSchema = new Schema({
224224
// differentiate between paused and separated accounts for better reporting and handling in the future
225225
inactiveReason: {
226226
type: String,
227-
enum: ['Paused', 'Separated', 'ScheduledSeparation'],
227+
enum: ['Paused', 'Separated', 'ScheduledSeparation', null],
228228
default: undefined,
229229
},
230230
resetPwd: { type: String },

0 commit comments

Comments
 (0)