71 lines
1.3 KiB
C++
71 lines
1.3 KiB
C++
#ifndef MANAGER_H
|
|
#define MANAGER_H
|
|
|
|
#include "Company.hpp"
|
|
|
|
class Manager : Employee {
|
|
/* fix fizetés
|
|
*/
|
|
int pay_m;
|
|
Company * company_m;
|
|
|
|
public:
|
|
Manager(std::string name, Company * company)
|
|
: Employee(name), pay_m(0), company_m(company) {
|
|
}
|
|
|
|
Manager(std::string name, int year_of_birth, int pay, Company * company)
|
|
: Employee(name, year_of_birth), pay_m(pay), company_m(company) {
|
|
}
|
|
|
|
// ### ###
|
|
|
|
int get_cost() override {
|
|
return pay_m;
|
|
}
|
|
|
|
/* "ennek megfelelő levonást (egészen 0-ig)" kitűzés teljesítése
|
|
*/
|
|
int get_pay() {
|
|
int r = (signed long long)(company_m->profit() * 0.01);
|
|
return std::max(get_cost() + r, 0);
|
|
}
|
|
|
|
virtual void details() {
|
|
common_details();
|
|
printf(
|
|
"\tBase pay: %7d\n"
|
|
"\tCalculated pay: %7d\n",
|
|
get_cost(),
|
|
get_pay()
|
|
);
|
|
}
|
|
|
|
bool modify(const std::string &modification) override {
|
|
if (Employee::modify(modification)) { return true; }
|
|
|
|
auto eq_pos = modification.find("=");
|
|
try {
|
|
if (modification.substr(0, eq_pos) == "pay") {
|
|
pay_m = std::stoi(modification.substr(eq_pos+1));
|
|
return true;
|
|
}
|
|
} catch (...) { // lehetséges `invalid_argument` vagy `out_of_range`
|
|
return false;
|
|
}
|
|
|
|
return false;
|
|
}
|
|
|
|
std::string serialize() {
|
|
return std::string()
|
|
+ "m;"
|
|
+ Employee::serialize() + ";"
|
|
+ std::to_string(pay_m) + ";"
|
|
+ company_m->name_m
|
|
;
|
|
}
|
|
};
|
|
|
|
#endif
|