Exemplo n.º 1
0
        private AbstractEmployee GetEmployeePerContractType(RawEmployee employee)
        {
            switch (employee.ContractTypeName)
            {
            case "HourlySalaryEmployee":
                return(new HourlySalaryEmployee());

            case "MonthlySalaryEmployee":
                return(new MonthlySalaryEmployee());

            default:
                throw new InvalidOperationException("Cannot create an object of this contract type");
            }
        }
Exemplo n.º 2
0
        public AbstractEmployee BuildEmployee(RawEmployee employee)
        {
            AbstractEmployee newEmployee = GetEmployeePerContractType(employee);

            newEmployee.Id              = employee.Id;
            newEmployee.Name            = employee.Name;
            newEmployee.RoleId          = employee.RoleId;
            newEmployee.RoleName        = employee.RoleName;
            newEmployee.RoleDescription = employee.RoleDescription;
            newEmployee.HourlySalary    = employee.HourlySalary;
            newEmployee.MonthlySalary   = employee.MonthlySalary;

            newEmployee.CalculateAnnualSalary();
            return(newEmployee);
        }