// DRY private CompensatedMissingHours CompensateHoursFromSelectedOvertimesType( CompensatedMissingHours compensatedMissingHours, Overtimes employeeOvertimes, Func <Overtimes, decimal> getOvertimesType, Action <Overtimes, decimal> setOvertimesType) { if (compensatedMissingHours.HasHoursToCompensate()) { if (getOvertimesType(employeeOvertimes) >= compensatedMissingHours.MissingHours) { compensatedMissingHours.CompensatedHours += compensatedMissingHours.MissingHours; var leftOvertimes = getOvertimesType(employeeOvertimes) - compensatedMissingHours.MissingHours; setOvertimesType(compensatedMissingHours.LeftOvertimes, leftOvertimes); compensatedMissingHours.MissingHours = 0; } else { compensatedMissingHours.CompensatedHours += getOvertimesType(employeeOvertimes); setOvertimesType(compensatedMissingHours.LeftOvertimes, 0); compensatedMissingHours.MissingHours -= getOvertimesType(employeeOvertimes); } } return(compensatedMissingHours); }
public CompensatedMissingHours CompensateMissingHours(Overtimes employeeOvertimes, decimal missingHours) { var compensatedMissingHours = new CompensatedMissingHours(missingHours); compensatedMissingHours = CompensateHoursFromStandardOvertimes(compensatedMissingHours, employeeOvertimes); compensatedMissingHours = CompensateHoursFromSaturdayOvertimes(compensatedMissingHours, employeeOvertimes); compensatedMissingHours = CompensateHoursFromSundayOvertimes(compensatedMissingHours, employeeOvertimes); // DRY compensatedMissingHours = CompensateHoursFromSelectedOvertimesType(compensatedMissingHours, employeeOvertimes, (overtime) => overtime.StandardOvertimes, (overtime, newValue) => overtime.StandardOvertimes = newValue); compensatedMissingHours = CompensateHoursFromSelectedOvertimesType(compensatedMissingHours, employeeOvertimes, (overtime) => overtime.SaturdayOvertimes, (overtime, newValue) => overtime.SaturdayOvertimes = newValue); compensatedMissingHours = CompensateHoursFromSelectedOvertimesType(compensatedMissingHours, employeeOvertimes, (overtime) => overtime.SundayOvertimes, (overtime, newValue) => overtime.SundayOvertimes = newValue); return(compensatedMissingHours); }
private CompensatedMissingHours CompensateHoursFromSundayOvertimes( CompensatedMissingHours compensatedMissingHours, Overtimes employeeOvertimes) { if (compensatedMissingHours.HasHoursToCompensate()) { if (employeeOvertimes.SundayOvertimes >= compensatedMissingHours.MissingHours) { compensatedMissingHours.CompensatedHours += compensatedMissingHours.MissingHours; compensatedMissingHours.LeftOvertimes.SundayOvertimes = employeeOvertimes.SundayOvertimes - compensatedMissingHours.MissingHours; compensatedMissingHours.MissingHours = 0; } else { compensatedMissingHours.CompensatedHours += employeeOvertimes.SundayOvertimes; compensatedMissingHours.LeftOvertimes.SundayOvertimes = 0; compensatedMissingHours.MissingHours -= employeeOvertimes.SundayOvertimes; } } return(compensatedMissingHours); }