feat(DiaryDateActivity): enhance group activity management with duration and order features
All checks were successful
Deploy tt-tagebuch / deploy (push) Successful in 43s
All checks were successful
Deploy tt-tagebuch / deploy (push) Successful in 43s
- Added `duration`, `durationText`, and `orderId` fields to the GroupActivity model to support detailed activity tracking. - Updated `addGroupActivity` and `updateGroupActivity` methods in the DiaryDateActivityService to handle new fields, improving activity management capabilities. - Enhanced the DiaryView component to allow users to input and display duration and duration text for group activities, improving user experience and data clarity.
This commit is contained in:
@@ -156,8 +156,10 @@ class DiaryDateActivityService {
|
||||
]
|
||||
},
|
||||
{
|
||||
model: GroupActivity,
|
||||
model: GroupActivity,
|
||||
as: 'groupActivities',
|
||||
separate: true,
|
||||
order: [['orderId', 'ASC'], ['id', 'ASC']],
|
||||
include: [
|
||||
{
|
||||
model: Group,
|
||||
@@ -310,7 +312,7 @@ class DiaryDateActivityService {
|
||||
return activitiesWithImages;
|
||||
}
|
||||
|
||||
async addGroupActivity(userToken, clubId, diaryDateId, groupId, activity, predefinedActivityId = null, timeblockId = null) {
|
||||
async addGroupActivity(userToken, clubId, diaryDateId, groupId, activity, predefinedActivityId = null, timeblockId = null, duration = null, durationText = null) {
|
||||
await checkAccess(userToken, clubId);
|
||||
let diaryDateActivity;
|
||||
|
||||
@@ -382,16 +384,33 @@ class DiaryDateActivityService {
|
||||
}
|
||||
|
||||
devLog(predefinedActivity);
|
||||
const maxOrderId = await GroupActivity.max('orderId', {
|
||||
where: {
|
||||
diaryDateActivity: diaryDateActivity.id
|
||||
}
|
||||
});
|
||||
const nextOrderId = Number.isFinite(maxOrderId) ? (maxOrderId + 1) : 1;
|
||||
|
||||
const parsedDuration = duration === '' || duration === undefined || duration === null
|
||||
? null
|
||||
: parseInt(duration, 10);
|
||||
const normalizedDurationText = durationText === undefined || durationText === null
|
||||
? null
|
||||
: String(durationText).trim() || null;
|
||||
|
||||
const activityData = {
|
||||
diaryDateActivity: diaryDateActivity.id,
|
||||
groupId: groupId,
|
||||
customActivity: predefinedActivity.id
|
||||
customActivity: predefinedActivity.id,
|
||||
duration: Number.isFinite(parsedDuration) ? parsedDuration : null,
|
||||
durationText: normalizedDurationText,
|
||||
orderId: nextOrderId
|
||||
}
|
||||
devLog(activityData);
|
||||
return await GroupActivity.create(activityData);
|
||||
}
|
||||
|
||||
async updateGroupActivity(userToken, clubId, groupActivityId, predefinedActivityId) {
|
||||
async updateGroupActivity(userToken, clubId, groupActivityId, predefinedActivityId, duration, durationText, orderId) {
|
||||
await checkAccess(userToken, clubId);
|
||||
const groupActivity = await GroupActivity.findByPk(groupActivityId);
|
||||
if (!groupActivity) {
|
||||
@@ -404,8 +423,25 @@ class DiaryDateActivityService {
|
||||
throw new Error('Predefined activity not found');
|
||||
}
|
||||
|
||||
// Aktualisiere die customActivity (die auf die PredefinedActivity verweist)
|
||||
groupActivity.customActivity = predefinedActivityId;
|
||||
if (predefinedActivityId !== undefined && predefinedActivityId !== null) {
|
||||
// Aktualisiere die customActivity (die auf die PredefinedActivity verweist)
|
||||
groupActivity.customActivity = predefinedActivityId;
|
||||
}
|
||||
if (duration !== undefined) {
|
||||
const parsedDuration = duration === '' || duration === null
|
||||
? null
|
||||
: parseInt(duration, 10);
|
||||
groupActivity.duration = Number.isFinite(parsedDuration) ? parsedDuration : null;
|
||||
}
|
||||
if (durationText !== undefined) {
|
||||
groupActivity.durationText = durationText === null ? null : (String(durationText).trim() || null);
|
||||
}
|
||||
if (orderId !== undefined) {
|
||||
const parsedOrderId = parseInt(orderId, 10);
|
||||
if (Number.isFinite(parsedOrderId) && parsedOrderId > 0) {
|
||||
groupActivity.orderId = parsedOrderId;
|
||||
}
|
||||
}
|
||||
return await groupActivity.save();
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user