/// <summary> /// Calculates money based on the <see cref="Worktime"/> and the <see cref="MoneyChargeRate"/> /// </summary> /// <param name="worktime"></param> /// <param name="value"></param> /// <param name="chargeRate"></param> /// <returns></returns> public static Money Get(Worktime worktime, double value, MoneyChargeRate chargeRate) { var minuteWorktime = Worktime.ConvertValue(worktime.TimeWorked, worktime.Precision, WorktimePrecision.Minutes); double val; switch (chargeRate) { case MoneyChargeRate.PerMinute: val = minuteWorktime * value; break; case MoneyChargeRate.PerHour: val = (minuteWorktime / 60) * value; break; case MoneyChargeRate.PerQuarterHour: val = (minuteWorktime / 15) * value; break; case MoneyChargeRate.PerHalfHour: val = (minuteWorktime / 30) * value; break; case MoneyChargeRate.PerDay: val = (minuteWorktime / 1440) * value; break; case MoneyChargeRate.PerStartedHour: var hours = minuteWorktime / 60; var fraction = hours % 60; if (fraction != 0) { hours -= hours % 1; hours += 1; } val = hours * value; break; default: throw new ArgumentOutOfRangeException(nameof(chargeRate), chargeRate, null); } return(new Money(val)); }
public static Money GetMoney([SourceObject] Worktime worktime, double rate, MoneyChargeRate chargeRate) { return(Get(worktime, rate, chargeRate)); }
public static Worktime AddWeeks([SourceObject] Worktime worktime, Number number) { return(worktime.AddWeeks(number.ToInt64(null))); }
public static Worktime AddMonths([SourceObject] Worktime worktime, Number number, DateTime startingWith) { return(worktime.AddMonths(number.ToInt32(null), startingWith)); }
public static Worktime Add([SourceObject] Worktime worktime, Worktime other) { return(worktime.Add(other.TimeWorked, other.Precision)); }