Compare commits

..

2 commits

Author SHA1 Message Date
jbrass
ca572b6fb5 Show Active Command. is_active Method for Taks 2025-02-10 14:41:13 +01:00
jbrass
ca9bd3d2e9 Fix Loop Range 2025-02-10 01:17:50 +01:00
4 changed files with 33 additions and 7 deletions

View file

@ -22,7 +22,11 @@ namespace commands
const User* u = mgr->get_user(user_id);
if (!u)
throw Error(401, "Eine solche BenutzerIn existiert nicht.");
for (const Assignment* a : mgr->get_assignments_for_user(user_id))
cout << a->get_task_id() << "\n";
for (const Assignment* a : mgr->get_assignments_for_user(user_id)) {
//Ist der Related Task ein Aktiver Task?
if (mgr->get_task(a->get_task_id())->is_active()) {
cout << a->get_task_id() << "\n";
}
}
}
} // commands

View file

@ -250,12 +250,16 @@ namespace util
throw Error(202, "Aufgabe kann nicht gelöscht werden.");
}
//TODO: Zudem kann eine Aufgabe nur gelöscht werden, wenn Sie nicht Nachfolgerin einer anderen Aufgabe ist -> Ensure its no Child
for (Task* task : this->get_tasks()) {
/*for (Task* task : this->get_tasks()) {
for (int child_id : task->get_children()) {
if (id == child_id) {
throw Error(202, "Aufgabe kann nicht gelöscht werden.");
}
}
}*/
if (! this->get_task(id)->is_active()) {
throw Error(202, "Aufgabe kann nicht gelöscht werden.");
}
this->tasks.erase(id);
}
@ -265,7 +269,7 @@ namespace util
if (!this->assignment_exists(as.get_user_id(), as.get_task_id()))
throw Error(301, "Eine solche Zuordnung existiert nicht.");
int assignment_nr = 0;
for (int i = 0; i < this->assignments.size() - 1; ++i) {
for (int i = 0; i < this->assignments.size(); ++i) {
if (this->assignments[i]->get_user_id() == as.get_user_id() && this->assignments[i]->get_task_id() == as.get_task_id()) {
assignment_nr = i;
break;

View file

@ -31,9 +31,26 @@ namespace models
return stream;
}
int Task::get_id() const
{
return this->id;
int Task::get_id() const { return this->id; }
/**
* Diese Methode überprüft ob der Task Aktiv ist ( Nicht Nachfolger einer anderen Klass ist)
* @return bool
*/
bool Task::is_active() const {
Manager* mgr = Manager::get_instance();
for (Task* task : mgr->get_tasks()) {
for (int child_id : task->get_children()) {
// Aktiver Task ist Child von Einem andern Task -> Nicht aktiv
if (this->id == child_id) {
// cout << this->id << " = " << child_id << endl;
return false;
}
}
}
//Kein Child-> Aktiv
return true;
}
string Task::get_name() const

1
Task.h
View file

@ -28,6 +28,7 @@ namespace models
istream& read(istream&);
int get_id() const;
bool is_active() const;
string get_name() const;
string get_description() const;
vector<int> get_children() const;