diff --git a/backend/controllers/memberActivityController.js b/backend/controllers/memberActivityController.js index b2c5c49..9e5a81e 100644 --- a/backend/controllers/memberActivityController.js +++ b/backend/controllers/memberActivityController.js @@ -113,7 +113,7 @@ export const getMemberActivities = async (req, res) => { { model: PredefinedActivity, as: 'predefinedActivity', - required: true + required: false // Kann null sein für Gruppen-Aktivitäten }, { model: GroupActivity, @@ -123,7 +123,14 @@ export const getMemberActivities = async (req, res) => { [Op.in]: Array.from(memberGroupIds) } }, - required: true + required: true, + include: [ + { + model: PredefinedActivity, + as: 'groupPredefinedActivity', + required: false // Kann null sein + } + ] } ] }); @@ -138,12 +145,28 @@ export const getMemberActivities = async (req, res) => { // Prüfe, ob die Aktivität für die Gruppe des Participants ist const activityGroupIds = activity.groupActivities?.map(ga => ga.groupId) || []; if (participant.groupId !== null && activityGroupIds.includes(participant.groupId)) { - // Erstelle ein virtuelles DiaryMemberActivity-Objekt - groupActivities.push({ - activity: activity, - participant: participant, - id: null // Virtuell, nicht in DB - }); + // Für Gruppen-Aktivitäten: Verwende die PredefinedActivity aus GroupActivity + // Falls vorhanden, sonst die aus DiaryDateActivity + const groupActivity = activity.groupActivities?.find(ga => ga.groupId === participant.groupId); + if (groupActivity && groupActivity.groupPredefinedActivity) { + // Erstelle ein modifiziertes Activity-Objekt mit der PredefinedActivity aus GroupActivity + const modifiedActivity = { + ...activity.toJSON(), + predefinedActivity: groupActivity.groupPredefinedActivity + }; + groupActivities.push({ + activity: modifiedActivity, + participant: participant, + id: null // Virtuell, nicht in DB + }); + } else if (activity.predefinedActivity) { + // Fallback: Verwende die PredefinedActivity aus DiaryDateActivity + groupActivities.push({ + activity: activity, + participant: participant, + id: null // Virtuell, nicht in DB + }); + } } } } @@ -285,7 +308,7 @@ export const getMemberLastParticipations = async (req, res) => { { model: PredefinedActivity, as: 'predefinedActivity', - required: true + required: false // Kann null sein für Gruppen-Aktivitäten }, { model: GroupActivity, @@ -295,7 +318,14 @@ export const getMemberLastParticipations = async (req, res) => { [Op.in]: Array.from(memberGroupIds) } }, - required: true + required: true, + include: [ + { + model: PredefinedActivity, + as: 'groupPredefinedActivity', + required: false // Kann null sein + } + ] } ], order: [[{ model: DiaryDates, as: 'diaryDate' }, 'date', 'DESC']], @@ -312,12 +342,28 @@ export const getMemberLastParticipations = async (req, res) => { // Prüfe, ob die Aktivität für die Gruppe des Participants ist const activityGroupIds = activity.groupActivities?.map(ga => ga.groupId) || []; if (participant.groupId !== null && activityGroupIds.includes(participant.groupId)) { - // Erstelle ein virtuelles DiaryMemberActivity-Objekt - groupActivities.push({ - activity: activity, - participant: participant, - id: null // Virtuell, nicht in DB - }); + // Für Gruppen-Aktivitäten: Verwende die PredefinedActivity aus GroupActivity + // Falls vorhanden, sonst die aus DiaryDateActivity + const groupActivity = activity.groupActivities?.find(ga => ga.groupId === participant.groupId); + if (groupActivity && groupActivity.groupPredefinedActivity) { + // Erstelle ein modifiziertes Activity-Objekt mit der PredefinedActivity aus GroupActivity + const modifiedActivity = { + ...activity.toJSON(), + predefinedActivity: groupActivity.groupPredefinedActivity + }; + groupActivities.push({ + activity: modifiedActivity, + participant: participant, + id: null // Virtuell, nicht in DB + }); + } else if (activity.predefinedActivity) { + // Fallback: Verwende die PredefinedActivity aus DiaryDateActivity + groupActivities.push({ + activity: activity, + participant: participant, + id: null // Virtuell, nicht in DB + }); + } } } }