#include "employee_factory.h"
#include "employee.h"
QSharedPointer<AbstractEmployee> EmployeeFactory::makeEmployee(EmployeeRecord const& rec)
{
switch (rec.position)
{
case POSITION::EMPLOYEE:
return QSharedPointer<AbstractEmployee>(new Employee(rec));
break;
case POSITION::MANAGER:
return QSharedPointer<AbstractEmployee>(new Manager(rec));
break;
case POSITION::SALES:
return QSharedPointer<AbstractEmployee>(new Sales(rec));
break;
default: break;
}
return QSharedPointer<AbstractEmployee>(nullptr);
}
I2luY2x1ZGUgImVtcGxveWVlX2ZhY3RvcnkuaCIKCiNpbmNsdWRlICJlbXBsb3llZS5oIgoKClFTaGFyZWRQb2ludGVyPEFic3RyYWN0RW1wbG95ZWU+IEVtcGxveWVlRmFjdG9yeTo6bWFrZUVtcGxveWVlKEVtcGxveWVlUmVjb3JkIGNvbnN0JiByZWMpCnsKCXN3aXRjaCAocmVjLnBvc2l0aW9uKQoJewoJY2FzZSBQT1NJVElPTjo6RU1QTE9ZRUU6CgkJcmV0dXJuIFFTaGFyZWRQb2ludGVyPEFic3RyYWN0RW1wbG95ZWU+KG5ldyBFbXBsb3llZShyZWMpKTsKCQlicmVhazsKCWNhc2UgUE9TSVRJT046Ok1BTkFHRVI6CgkJcmV0dXJuIFFTaGFyZWRQb2ludGVyPEFic3RyYWN0RW1wbG95ZWU+KG5ldyBNYW5hZ2VyKHJlYykpOwoJCWJyZWFrOwoJY2FzZSBQT1NJVElPTjo6U0FMRVM6CgkJcmV0dXJuIFFTaGFyZWRQb2ludGVyPEFic3RyYWN0RW1wbG95ZWU+KG5ldyBTYWxlcyhyZWMpKTsKCQlicmVhazsKCWRlZmF1bHQ6IGJyZWFrOwoJfQoKCXJldHVybiBRU2hhcmVkUG9pbnRlcjxBYnN0cmFjdEVtcGxveWVlPihudWxscHRyKTsKfQ==