epr24pr5-ojanssen2/User.cpp

78 lines
1.7 KiB
C++
Raw Normal View History

#include "User.h"
#include "Error.h"
#include "Manager.h"
using util::Manager;
using err::Error;
namespace models {
User::User(const int& id, const string& name, const string& surname): id(id), name(name), surname(surname) {}
User::User(): id(0), name(""), surname("") {}
ostream& User::write(ostream& stream) {
stream << *this;
return stream;
}
int User::get_id() const {
return this->id;
}
string User::get_name() const {
return this->name;
}
string User::get_surname() const {
return this->surname;
}
AddUser::AddUser(): User() {}
AddUser::AddUser(User& u): User(u) {}
ostream& operator<<(ostream& os, const User& u)
{
os << u.get_id() << " " << u.get_name() << " " << u.get_surname() << "\n";
return os;
}
istream& operator>>(istream& is, User& u)
{
int id;
is >> id;
if (!is)
throw Error(602, "Datei hat ein unbekanntes Format.");
string name, surname;
is >> name >> surname;
if (!is)
throw Error(602, "Datei hat ein unbekanntes Format.");
u = {id, name, surname};
return is;
}
ostream& operator<<(ostream& os, const AddUser& u) {
os << u.get_name() << " " << u.get_surname() << "\n";
return os;
}
istream& operator>>(istream& is, AddUser& u) {
Manager* mgr = Manager::get_instance();
int id = mgr->get_user_id();
string name, surname;
is >> name >> surname;
if (!is)
throw Error(602, "Could not read user name and surname");
User ut = {id, name, surname};
u = {ut};
return is;
}
}