コード例 #1
0
        public override decimal Calculate(ChargingScheme customerSelection, DateTime entryTime, DateTime exitTime)
        {
            var charge        = 0m;
            var currentPeriod = entryTime;

            while (currentPeriod < exitTime)
            {
                if (this.Applies(currentPeriod))
                {
                    charge       += this.PeriodRate;
                    currentPeriod = currentPeriod.Add(this.Increment);
                }
                else
                {
                    currentPeriod = currentPeriod.Add(this.Increment.Subtract(new TimeSpan(0, 0, 1)));
                }
            }
            return(charge);
        }
コード例 #2
0
        public decimal ProcessParkingCharge(ChargingScheme customerSelection, DateTime entryTime, DateTime exitTime)
        {
            var scheme = ActiveSchemes.Single(rule => rule.Scheme == customerSelection);

            return(scheme.Calculate(customerSelection, entryTime, exitTime));
        }
コード例 #3
0
        public override decimal Calculate(ChargingScheme customerSelection, DateTime entryTime, DateTime exitTime)
        {
            var days = (exitTime.Day - entryTime.Day) + 1;

            return(days * this.PeriodRate);
        }
コード例 #4
0
 public abstract decimal Calculate(ChargingScheme customerSelection, DateTime entryTime, DateTime exitTime);