Ejemplo n.º 1
0
        public void Setup()
        {
            _employeeRepository = new Mock <IEmployeeRepository>();

            var hourlyEmp = new HourlyEmployee();

            hourlyEmp.Id               = 1;
            hourlyEmp.Name             = "Juan";
            hourlyEmp.ContractTypeName = "HourlySalaryEmployee";
            hourlyEmp.RoleId           = 1;
            hourlyEmp.RoleName         = "Administrator";
            hourlyEmp.RoleDescription  = "";
            hourlyEmp.HourlySalary     = 60000;
            hourlyEmp.MonthlySalary    = 80000;

            var monthlyEmp = new MonthlyEmployee();

            monthlyEmp.Id               = 2;
            monthlyEmp.Name             = "Sebastian";
            monthlyEmp.ContractTypeName = "MonthlySalaryEmployee";
            monthlyEmp.RoleId           = 2;
            monthlyEmp.RoleName         = "Contractor";
            monthlyEmp.RoleDescription  = "";
            monthlyEmp.HourlySalary     = 60000;
            monthlyEmp.MonthlySalary    = 80000;

            var employees = new List <IEmployee>();

            employees.Add(hourlyEmp);
            employees.Add(monthlyEmp);

            _employeeRepository.Setup(er => er.GetEmployees()).Returns(Task.FromResult(employees));
            _employeeService = new EmployeeService(_employeeRepository.Object);
        }
Ejemplo n.º 2
0
        public void AnnualSalaryCalculated_WhenTheEmployeeHasMonthlyContract()
        {
            //formula to calculate annual salary to MonthlyEmployee MonthlySalary * 12
            //Arrange
            const long annualSalaryExpected = 960000;
            var        monthlyEmployee      = new MonthlyEmployee
            {
                Id            = 1,
                Name          = "Juan",
                MonthlySalary = 80000,
                RoleId        = 1,
                RoleName      = "Administrator"
            };

            //Assert
            monthlyEmployee.AnnualSalary.Should().Be(annualSalaryExpected);
        }
        /// <summary>
        /// Creates a MonthlyEmployee calculating annual salary as:
        /// MonthtlySalary * 12
        /// </summary>
        /// <param name="data">Basic employee information</param>
        /// <returns>Converted user with annual salary</returns>
        public override HubEmployee Create(BasicEmployee data)
        {
            var role = new HubRole
            {
                Id          = data.RoleId,
                Name        = data.Name,
                Description = data.RoleDescription
            };

            var employee = new MonthlyEmployee
            {
                Id            = data.Id,
                Name          = data.Name,
                MonthlySalary = data.MonthlySalary,
                AnnualSalary  = data.MonthlySalary * MonthsInYear,
                Role          = role
            };

            return(employee);
        }
Ejemplo n.º 4
0
        public static Employee GetEmployee(EmployeeProfile input)
        {
            if (input == null)
            {
                throw new Exception("Null employee profile");
            }

            if (string.IsNullOrEmpty(input.ContractTypeName))
            {
                throw new Exception("Contract type isn't defined");
            }

            Employee output;

            switch (input.ContractTypeName.ToLower())
            {
            case "hourlysalaryemployee":
                output = new HourlyEmployee();
                break;

            case "monthlysalaryemployee":
                output = new MonthlyEmployee();
                break;

            default:
                throw new Exception("Invalid contract type");
            }

            output.ContractTypeName = input.ContractTypeName;
            output.HourlySalary     = input.HourlySalary;
            output.MonthlySalary    = input.MonthlySalary;
            output.Name             = input.Name;
            output.RoleDescription  = input.RoleDescription;
            output.RoleId           = input.RoleId;
            output.RoleName         = input.RoleName;
            output.Id = input.Id;

            return(output);
        }