Implement deleteGroupActivity endpoint and enhance addGroupActivity functionality

Added a new endpoint to delete group activities in the diaryDateActivityController and corresponding route in diaryDateActivityRoutes. Enhanced the addGroupActivity function to accept an optional timeblockId parameter, allowing for more precise activity management. Updated the DiaryView component to support the removal of group activities, improving user experience and functionality in activity management.
This commit is contained in:
Torsten Schulz (local)
2025-11-03 08:43:24 +01:00
parent a8318c74cf
commit e32871a005
4 changed files with 179 additions and 23 deletions

View File

@@ -79,11 +79,23 @@ export const getDiaryDateActivities = async (req, res) => {
export const addGroupActivity = async(req, res) => {
try {
const { authcode: userToken } = req.headers;
const { clubId, diaryDateId, groupId, activity } = req.body;
const activityItem = await diaryDateActivityService.addGroupActivity(userToken, clubId, diaryDateId, groupId, activity);
const { clubId, diaryDateId, groupId, activity, timeblockId } = req.body;
const activityItem = await diaryDateActivityService.addGroupActivity(userToken, clubId, diaryDateId, groupId, activity, timeblockId);
res.status(201).json(activityItem);
} catch (error) {
devLog(error);
res.status(500).json({ error: 'Error adding group activity' });
}
}
export const deleteGroupActivity = async(req, res) => {
try {
const { authcode: userToken } = req.headers;
const { clubId, groupActivityId } = req.params;
await diaryDateActivityService.deleteGroupActivity(userToken, clubId, groupActivityId);
res.status(200).json({ message: 'Group activity deleted' });
} catch (error) {
devLog(error);
res.status(500).json({ error: 'Error deleting group activity' });
}
}

View File

@@ -6,6 +6,7 @@ import {
updateDiaryDateActivityOrder,
getDiaryDateActivities,
addGroupActivity,
deleteGroupActivity,
} from '../controllers/diaryDateActivityController.js';
import { authenticate } from '../middleware/authMiddleware.js';
@@ -14,6 +15,7 @@ const router = express.Router();
router.use(authenticate);
router.post('/group', addGroupActivity);
router.delete('/group/:clubId/:groupActivityId', deleteGroupActivity);
router.post('/:clubId/', createDiaryDateActivity);
router.put('/:clubId/:id/order', updateDiaryDateActivityOrder);
router.put('/:clubId/:id', updateDiaryDateActivity);

View File

@@ -231,16 +231,31 @@ class DiaryDateActivityService {
return activitiesWithImages;
}
async addGroupActivity(userToken, clubId, diaryDateId, groupId, activity) {
async addGroupActivity(userToken, clubId, diaryDateId, groupId, activity, timeblockId = null) {
await checkAccess(userToken, clubId);
const diaryDateActivity = await DiaryDateActivity.findOne({
where: {
diaryDateId,
isTimeblock: true,
},
order: [['order_id', 'DESC']],
limit: 1
});
let diaryDateActivity;
if (timeblockId) {
// Verwende die spezifische Zeitblock-ID, falls angegeben
diaryDateActivity = await DiaryDateActivity.findOne({
where: {
id: timeblockId,
diaryDateId,
isTimeblock: true,
}
});
} else {
// Fallback: Verwende den letzten Zeitblock
diaryDateActivity = await DiaryDateActivity.findOne({
where: {
diaryDateId,
isTimeblock: true,
},
order: [['order_id', 'DESC']],
limit: 1
});
}
if (!diaryDateActivity) {
console.error('[DiaryDateActivityService::addGroupActivity] Activity not found');
throw new Error('Activity not found');
@@ -276,6 +291,15 @@ class DiaryDateActivityService {
devLog(activityData);
return await GroupActivity.create(activityData);
}
async deleteGroupActivity(userToken, clubId, groupActivityId) {
await checkAccess(userToken, clubId);
const groupActivity = await GroupActivity.findByPk(groupActivityId);
if (!groupActivity) {
throw new Error('Group activity not found');
}
return await groupActivity.destroy();
}
}
export default new DiaryDateActivityService();