Implement batch transmission of unanswered questions and automated session cleanup
This commit is contained in:
+29
-1
@@ -739,7 +739,19 @@ function WettkampfSelectPage({ navigate }) {
|
||||
setProgressDialog(null);
|
||||
};
|
||||
|
||||
const startFresh = () => {
|
||||
const startFresh = async () => {
|
||||
setChecking(true);
|
||||
try {
|
||||
await api.post('/api/results/abandon', {
|
||||
sessionId: progressDialog.sessionId,
|
||||
setId: selectedSet.id,
|
||||
nutzername: name.trim(),
|
||||
expectedCount: selectedSet.wettkampfCount
|
||||
});
|
||||
} catch (e) {
|
||||
console.error('Abandon error:', e);
|
||||
}
|
||||
setChecking(false);
|
||||
navigate('wettkampf-quiz', {
|
||||
setId: selectedSet.id, setName: selectedSet.name,
|
||||
name: name.trim(), questionCount: selectedSet.wettkampfCount,
|
||||
@@ -1078,6 +1090,22 @@ function WettkampfQuizPage({ params, navigate }) {
|
||||
if (rowsToUpdate.length > 0) {
|
||||
await api.put('/api/results/finalize', { results: rowsToUpdate });
|
||||
}
|
||||
|
||||
const rowsToCreate = finalResults.filter((r) => !r.rowId);
|
||||
if (rowsToCreate.length > 0) {
|
||||
const batched = rowsToCreate.map((r) => ({
|
||||
Nutzername: params.name,
|
||||
Frage_ID: r.questionId,
|
||||
Fragenset: params.setName,
|
||||
Antwort: '',
|
||||
Richtig: false,
|
||||
Punkte: 0,
|
||||
Session_ID: sessionId.current,
|
||||
Modus: 'Wettkampf',
|
||||
Zeitstempel: new Date().toISOString(),
|
||||
}));
|
||||
await api.post('/api/results', { answers: batched });
|
||||
}
|
||||
} catch (e) {
|
||||
console.error('Finalize error:', e);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user