Refactor member activity retrieval to support optional predefined activities for group activities
This commit updates the `getMemberActivities` and `getMemberLastParticipations` functions to allow for optional inclusion of predefined activities in group activities. The logic is enhanced to check for predefined activities associated with group activities, providing a fallback mechanism to ensure accurate activity representation. This change improves the clarity and efficiency of the activity retrieval process, ensuring that the correct data is returned to the frontend.
This commit is contained in:
@@ -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
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user