#pragma once // STUB-HEADER: Diese Datei wird normalerweise von ddsdtc generiert // Für die Migration erstellen wir minimale Typ-Definitionen #include "exm_exercise.h" #include "ParticipantManagement/ppm_enums.hpp" #include "FileManagement/flm_db.h" #include #include #include #include #include namespace ExerciseManagement { // ExercisePhase struct struct ExercisePhase { [[nodiscard]] int id() const { return m_id; } [[nodiscard]] std::string name() const { return m_name; } int m_id = 0; std::string m_name; }; namespace Interface { // Dtc - Data Transfer Component für Exercise Management class Dtc : public QObject { Q_OBJECT public: Dtc() = default; ~Dtc() override = default; // Initialization methods void enableExercise() {} void waitForHistoricalDataExercise() {} void enableExercisePhase() {} void waitForHistoricalDataExercisePhase() {} // Exercise-Liste abrufen (Callback-basiert) void exercises(const std::function& callback) const { for (const auto& ex : m_exercises) { callback(ex); } } // Einzelnes Exercise nach ID abrufen Exercise exercise(int id) const { for (const auto& ex : m_exercises) { if (ex.id == id) { return ex; } } return Exercise{}; // Return empty exercise if not found } // Exercise-Phase nach ID abrufen ExercisePhase exercisePhase(int phaseId) const { for (const auto& phase : m_phases) { if (phase.m_id == phaseId) { return phase; } } return ExercisePhase{}; // Return empty phase if not found } // Folders abrufen (Callback-basiert) - benötigt von LtsFileDialog void folders(const std::function&)>& callback) const { callback(m_folders); } // Exercise-Liste als QList QList exercisesList() const { return m_exercises; } // Exercise hinzufügen/entfernen/ändern void addExercise(const Exercise& ex) { m_exercises.append(ex); emit exerciseChanged(ex, ParticipantManagement::DataModification::eAdded); } void updateExercise(const Exercise& ex) { for (auto& existing : m_exercises) { if (existing.id == ex.id) { existing = ex; emit exerciseChanged(ex, ParticipantManagement::DataModification::eModified); return; } } addExercise(ex); } void removeExercise(int id) { for (auto it = m_exercises.begin(); it != m_exercises.end(); ++it) { if (it->id == id) { Exercise removed = *it; m_exercises.erase(it); emit exerciseChanged(removed, ParticipantManagement::DataModification::eRemoved); return; } } } signals: void exerciseChanged(const Exercise& exercise, ParticipantManagement::DataModification modificationType); private: QList m_exercises; std::vector m_phases; std::vector m_folders; }; } // namespace Interface } // namespace ExerciseManagement