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