From eb37532de2110c3af382cf6237c80358777e1484 Mon Sep 17 00:00:00 2001 From: "Torsten Schulz (local)" Date: Sat, 8 Nov 2025 22:31:38 +0100 Subject: [PATCH] Refactor group ID handling in DiaryView and related services for consistency Updated the handling of group IDs in DiaryView.vue to ensure they are consistently treated as strings. Enhanced the DiaryDateActivityService to filter out duplicate group activities and ensure proper handling of group IDs during updates. This improves data integrity and consistency across the application. --- backend/models/index.js | 2 +- backend/services/diaryDateActivityService.js | 11 ++++ frontend/src/views/DiaryView.vue | 55 +++++++++----------- 3 files changed, 38 insertions(+), 30 deletions(-) diff --git a/backend/models/index.js b/backend/models/index.js index 9111d33..ca3337b 100644 --- a/backend/models/index.js +++ b/backend/models/index.js @@ -163,7 +163,7 @@ Club.hasMany(UserClub, { foreignKey: 'clubId' }); Group.belongsTo(DiaryDate, { foreignKey: 'diaryDateId', as: 'diaryDateGroup' }); DiaryDate.hasMany(Group, { foreignKey: 'diaryDateId', as: 'groupsDiaryDate' }); -GroupActivity.belongsTo(DiaryDateActivity, { foreignKey: 'id', as: 'activityGroupActivity' }); +GroupActivity.belongsTo(DiaryDateActivity, { foreignKey: 'diaryDateActivity', as: 'activityGroupActivity' }); DiaryDateActivity.hasMany(GroupActivity, { foreignKey: 'diaryDateActivity', as: 'groupActivities' }); Group.hasOne(GroupActivity, { foreignKey: 'groupId', as: 'groupGroupActivity' }); diff --git a/backend/services/diaryDateActivityService.js b/backend/services/diaryDateActivityService.js index f965c0f..6c2be9c 100644 --- a/backend/services/diaryDateActivityService.js +++ b/backend/services/diaryDateActivityService.js @@ -208,6 +208,17 @@ class DiaryDateActivityService { // Auch für GroupActivities if (activityData.groupActivities && activityData.groupActivities.length > 0) { + const seenGroupActivityIds = new Set(); + activityData.groupActivities = activityData.groupActivities.filter(groupActivity => { + if (!groupActivity || groupActivity.id === undefined || groupActivity.id === null) { + return false; + } + if (seenGroupActivityIds.has(groupActivity.id)) { + return false; + } + seenGroupActivityIds.add(groupActivity.id); + return true; + }); for (const groupActivity of activityData.groupActivities) { if (groupActivity.groupPredefinedActivity) { // Hole die erste verfügbare Image-ID direkt aus der Datenbank diff --git a/frontend/src/views/DiaryView.vue b/frontend/src/views/DiaryView.vue index 44db960..21c6bda 100644 --- a/frontend/src/views/DiaryView.vue +++ b/frontend/src/views/DiaryView.vue @@ -173,7 +173,7 @@ @change="assignGroupToActivity(item.id, $event.target.value)" style="font-size: 10px; width: 80px;"> - @@ -199,8 +199,8 @@
@@ -257,7 +257,7 @@ @change="assignGroupToGroupActivity(groupItem.id, $event.target.value)" style="font-size: 10px; width: 80px;"> - @@ -317,11 +317,9 @@
-