Exemplo n.º 1
0
        /// <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));
        }
Exemplo n.º 2
0
 public static Money GetMoney([SourceObject] Worktime worktime, double rate, MoneyChargeRate chargeRate)
 {
     return(Get(worktime, rate, chargeRate));
 }
Exemplo n.º 3
0
 public static Worktime AddWeeks([SourceObject] Worktime worktime, Number number)
 {
     return(worktime.AddWeeks(number.ToInt64(null)));
 }
Exemplo n.º 4
0
 public static Worktime AddMonths([SourceObject] Worktime worktime, Number number, DateTime startingWith)
 {
     return(worktime.AddMonths(number.ToInt32(null), startingWith));
 }
Exemplo n.º 5
0
 public static Worktime Add([SourceObject] Worktime worktime, Worktime other)
 {
     return(worktime.Add(other.TimeWorked, other.Precision));
 }