/// <summary> /// maaş tipine göre kullanılacak arayüzü bulur /// </summary> /// <param name="salaryType"></param> /// <returns></returns> public ICalculatorService GetCalculatorService(SalaryType salaryType) { switch (salaryType) { case SalaryType.Fixed: _calculatorService = new FixedCalculator(); break; case SalaryType.Daily: _calculatorService = new DailyCalculator(); break; case SalaryType.FixedPlusOvertime: _overtimeCalculator = new OvertimeCalculator(); _calculatorServiceForPlus = new FixedCalculator(); _calculatorService = new SalaryPlusOvertimeCalculator(_overtimeCalculator, _calculatorServiceForPlus); break; case SalaryType.DailyPlusOvertime: _overtimeCalculator = new OvertimeCalculator(); _calculatorServiceForPlus = new DailyCalculator(); _calculatorService = new SalaryPlusOvertimeCalculator(_overtimeCalculator, _calculatorServiceForPlus); break; default: throw new NotImplementedException(); } return(_calculatorService); }
public static IOvertimeCalculator GetOvertimeCalculator(UserResultVM user, UserResult initialUserResult, int rateTypeId) { IOvertimeCalculator calculator = null; switch ((RateType)rateTypeId) { case RateType.PerHour: { calculator = new HourlyOvertimeCalculator(); break; } case RateType.Fixed: { calculator = new FixedOvertimeCalculator(); break; } } calculator.Configure(user, initialUserResult); return(calculator); }
public SalaryPlusOvertimeCalculator(IOvertimeCalculator overtimeCalculator, ICalculatorService calculatorService) { _overtimeCalculator = overtimeCalculator; _calculatorService = calculatorService; }