epr24pr5-ojanssen2/UnassignCommand.cpp
2025-02-09 22:30:03 +01:00

33 lines
1,007 B
C++

#include "UnassignCommand.h"
#include "Error.h"
#include "Manager.h"
using util::Manager;
using err::Error;
namespace commands
{
UnassignCommand::UnassignCommand() : SubCommand("unassign", true)
{
}
void UnassignCommand::run(stringstream& args)
{
Manager& mgr = Manager::get_instance();
int user_id, task_id;
args >> user_id >> task_id;
if (!args)
throw Error(102, "Ein Parameter eines Befehls konnte nicht gelesen werden");
const User* u = mgr.get_user(user_id);
if (!u)
throw Error(401, "Eine solche BenutzerIn existiert nicht.");
const Task* t = mgr.get_task(task_id);
if (!t)
throw Error(401, "Eine solche Zuordnung existiert nicht.");
if (!mgr.assignment_exists(user_id, task_id))
throw Error(302, "Eine solche Zuordnung existiert bereits.");
Assignment as = {user_id, task_id};
mgr.del_assignment(as);
mgr.save();
}
} // commands