fix(payments): ensure ObjectId casting for duplicate check query
This commit is contained in:
@@ -582,19 +582,27 @@ const checkDuplicatePayment = async (query = {}) => {
|
|||||||
}
|
}
|
||||||
|
|
||||||
const filter = {
|
const filter = {
|
||||||
user: userId,
|
|
||||||
isDeleted: { $ne: true }
|
isDeleted: { $ne: true }
|
||||||
};
|
};
|
||||||
|
|
||||||
const targetClasses = [];
|
if (mongoose.isValidObjectId(userId)) {
|
||||||
if (classId) targetClasses.push(classId);
|
filter.user = new mongoose.Types.ObjectId(String(userId));
|
||||||
if (classes) {
|
} else {
|
||||||
if (Array.isArray(classes)) targetClasses.push(...classes);
|
filter.user = userId;
|
||||||
else targetClasses.push(...String(classes).split(',').map((s) => s.trim()).filter(Boolean));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (targetClasses.length) {
|
const rawClasses = [];
|
||||||
filter.classes = { $in: targetClasses };
|
if (classId) rawClasses.push(classId);
|
||||||
|
if (classes) {
|
||||||
|
if (Array.isArray(classes)) rawClasses.push(...classes);
|
||||||
|
else rawClasses.push(...String(classes).split(',').map((s) => s.trim()).filter(Boolean));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (rawClasses.length) {
|
||||||
|
const classObjectIds = rawClasses.map((id) => {
|
||||||
|
return mongoose.isValidObjectId(id) ? new mongoose.Types.ObjectId(String(id)) : id;
|
||||||
|
});
|
||||||
|
filter.classes = { $in: classObjectIds };
|
||||||
}
|
}
|
||||||
|
|
||||||
const payments = await Payment.find(filter)
|
const payments = await Payment.find(filter)
|
||||||
|
|||||||
Reference in New Issue
Block a user