/// <summary> /// Create EmployeePayrollManager object by passing all dependency injections and run GetDeductionChargeDetailInfo method to get all Deduction Charge on each item level. /// </summary> /// <param name="hours">Hours</param> /// <param name="rate">Rate</param> /// <param name="location">Location Name</param> private static void PrintEmployeePayroll(decimal hours, decimal rate, string location) { try { EmployeePayroll employeePayroll = new EmployeePayroll(hours, rate, location); ILocationItemRatesProvider_Get rateProvider = new LocationItemRatesProvider(); IDeductionChargeCalculator chargeCalculator = new DeductionChargeCalculator(); EmployeePayrollManager employeePayrollManager = new EmployeePayrollManager(employeePayroll, rateProvider, chargeCalculator); string payrollDetailInfo = employeePayrollManager.GetDeductionChargeDetailInfo(); Console.WriteLine("------------------------------------------"); Console.WriteLine(payrollDetailInfo); Console.WriteLine("------------------------------------------"); } catch (Exception ex) { Console.WriteLine("Error:" + ex.Message); } }
/// <summary> /// Construnctor: Dependency Injection. Can use 3rd party DI container like Unity. /// </summary> /// <param name="employeePayroll">EmployeePayroll object</param> /// <param name="rateProvider">ILocationItemRatesProvider type object</param> /// <param name="chargeCalculator">IDeductionChargeCalculator type object </param> public EmployeePayrollManager(EmployeePayroll employeePayroll, ILocationItemRatesProvider_Get rateProvider, IDeductionChargeCalculator chargeCalculator) { _employeePayroll = employeePayroll; _rateProvider = rateProvider; _chargeCalculator = chargeCalculator; }