diff --git a/backend/controllers/diaryDateActivityController.js b/backend/controllers/diaryDateActivityController.js index 3802a47..d617b5d 100644 --- a/backend/controllers/diaryDateActivityController.js +++ b/backend/controllers/diaryDateActivityController.js @@ -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' }); + } } \ No newline at end of file diff --git a/backend/routes/diaryDateActivityRoutes.js b/backend/routes/diaryDateActivityRoutes.js index 545e468..3f9ecc0 100644 --- a/backend/routes/diaryDateActivityRoutes.js +++ b/backend/routes/diaryDateActivityRoutes.js @@ -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); diff --git a/backend/services/diaryDateActivityService.js b/backend/services/diaryDateActivityService.js index d63aa9a..f965c0f 100644 --- a/backend/services/diaryDateActivityService.js +++ b/backend/services/diaryDateActivityService.js @@ -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(); diff --git a/frontend/src/views/DiaryView.vue b/frontend/src/views/DiaryView.vue index 91f94b5..67ed509 100644 --- a/frontend/src/views/DiaryView.vue +++ b/frontend/src/views/DiaryView.vue @@ -117,8 +117,7 @@ class="dropdown" style="max-height: 9.5em;">
- [{{ - s.name }}] + [{{ s.code }}] {{ s.name }}
@@ -139,13 +138,28 @@ {{ item.groupActivity ? item.groupActivity.name : '' }} - {{ item.duration }} ({{ - item.durationText }}) + +
+ + +
+
+ + {{ item.duration || '' }} ({{ + item.durationText }}) + + + + + + + +
+ + + +
+ + + + + + X + +