diff --git a/server/scripts/automatedAddToDb.js b/server/scripts/automatedAddToDb.js index df329dd..e044d4e 100644 --- a/server/scripts/automatedAddToDb.js +++ b/server/scripts/automatedAddToDb.js @@ -3,8 +3,11 @@ const { sendSentryMessage } = require('@utils/sentry') const db = require('../models/index') const { processEntries } = require('./processEntries') const attainmentsToSisu = require('../utils/sendToSisu') +const { filterDuplicateMatches } = require('../utils/earlierCompletions') + +const automatedAddToDb = async (allMatches, course, batchId, sendToSisu = false) => { + const matches = filterDuplicateMatches(allMatches) -const automatedAddToDb = async (matches, course, batchId, sendToSisu = false) => { const transaction = await db.sequelize.transaction() if (!matches.length) { diff --git a/server/utils/earlierCompletions.js b/server/utils/earlierCompletions.js index dc211ec..4e02243 100644 --- a/server/utils/earlierCompletions.js +++ b/server/utils/earlierCompletions.js @@ -174,4 +174,15 @@ const advancedFound = (advancedAttainments, oldBaiAttainments, studentNumber, co return false } -module.exports = { isImprovedGrade, identicalCompletionFound, earlierBaiCompletionFound, advancedFound } +const filterDuplicateMatches = (matches) => { + const uniqueMatches = [] + matches.forEach((match) => { + if (!uniqueMatches.some((m) => m.studentNumber === match.studentNumber && m.courseId === match.courseId)) { + uniqueMatches.push(match) + } + }) + + return uniqueMatches +} + +module.exports = { isImprovedGrade, identicalCompletionFound, earlierBaiCompletionFound, advancedFound, filterDuplicateMatches }