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

34 lines
1 KiB
C++

#include "AssignCommand.h"
#include "Error.h"
#include "Manager.h"
using util::Util;
using util::Manager;
using err::Error;
namespace commands
{
AssignCommand::AssignCommand() : SubCommand("assign", true)
{
}
void AssignCommand::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(402, "Eine solche Aufgabe existiert nicht.");
if (mgr.assignment_exists(user_id, task_id))
throw Error(302, "Eine solche Zuordnung existiert bereits.");
Assignment* a = new Assignment(user_id, task_id);
mgr.add_assignment(a);
mgr.save();
}
} // commands