From c7325ac9820c66624215d9546b8d001643a1a713 Mon Sep 17 00:00:00 2001 From: "Torsten Schulz (local)" Date: Thu, 28 Aug 2025 13:14:06 +0200 Subject: [PATCH] =?UTF-8?q?Erweitert=20die=20updateActivity-Methode=20in?= =?UTF-8?q?=20DiaryDateActivityService,=20um=20benutzerdefinierte=20Aktivi?= =?UTF-8?q?t=C3=A4ten=20zu=20verarbeiten=20und=20neue=20vordefinierte=20Ak?= =?UTF-8?q?tivit=C3=A4ten=20zu=20erstellen.=20F=C3=BCgt=20eine=20Methode?= =?UTF-8?q?=20loadTrainingPlan=20in=20DiaryView.vue=20hinzu,=20um=20die=20?= =?UTF-8?q?Anzeige=20nach=20=C3=84nderungen=20zu=20aktualisieren.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend/services/diaryDateActivityService.js | 29 +++++++++++++++++++- frontend/src/views/DiaryView.vue | 13 +++++++++ 2 files changed, 41 insertions(+), 1 deletion(-) diff --git a/backend/services/diaryDateActivityService.js b/backend/services/diaryDateActivityService.js index 9719e5e..5e66b98 100644 --- a/backend/services/diaryDateActivityService.js +++ b/backend/services/diaryDateActivityService.js @@ -39,7 +39,34 @@ class DiaryDateActivityService { console.log('[DiaryDateActivityService::updateActivity] - activity not found'); throw new Error('Activity not found'); } - console.log('[DiaryDateActivityService::updateActivity] - update activity'); + + // Wenn customActivityName gesendet wird, müssen wir die PredefinedActivity behandeln + if (data.customActivityName) { + console.log('[DiaryDateActivityService::updateActivity] - handling customActivityName:', data.customActivityName); + + // Suche nach einer existierenden PredefinedActivity mit diesem Namen + let predefinedActivity = await PredefinedActivity.findOne({ + where: { name: data.customActivityName } + }); + + if (!predefinedActivity) { + // Erstelle eine neue PredefinedActivity + console.log('[DiaryDateActivityService::updateActivity] - creating new PredefinedActivity'); + predefinedActivity = await PredefinedActivity.create({ + name: data.customActivityName, + description: '', + duration: data.duration || activity.duration + }); + } + + // Setze die predefinedActivityId + data.predefinedActivityId = predefinedActivity.id; + + // Entferne customActivityName aus den zu aktualisierenden Daten + delete data.customActivityName; + } + + console.log('[DiaryDateActivityService::updateActivity] - update activity', clubId, id, data, JSON.stringify(data)); return await activity.update(data); } diff --git a/frontend/src/views/DiaryView.vue b/frontend/src/views/DiaryView.vue index 844ea8c..49908eb 100644 --- a/frontend/src/views/DiaryView.vue +++ b/frontend/src/views/DiaryView.vue @@ -1151,12 +1151,25 @@ export default { durationText: item.durationText, groupId: item.groupId, }); + + // Lade die Daten neu, um die Änderungen anzuzeigen + await this.loadTrainingPlan(); + this.editingActivityId = null; } catch (error) { alert('Ein Fehler ist aufgetreten. Bitte versuchen Sie es erneut.'); } }, + async loadTrainingPlan() { + try { + this.trainingPlan = await apiClient.get(`/diary-date-activities/${this.currentClub}/${this.date.id}`).then(response => response.data); + this.calculateIntermediateTimes(); + } catch (error) { + console.error('Fehler beim Laden des Trainingsplans:', error); + } + }, + cancelActivityEdit() { this.editingActivityId = null; },