コード例 #1
0
        //{
        //    //ExpirationDate result;

        //    switch (LicensingModel)
        //    {
        //        case LicensingModel.TwoDays:
        //            return (ExpirationDate)DateTime.UtcNow.AddDays(2);


        //        case LicensingModel.LifeLong:
        //            return ExpirationDate.Infinite;


        //        default:
        //            throw new ArgumentOutOfRangeException();
        //    }
        //}

        public virtual Dollars CalculatePrice(CustomerStatus status)
        {
            //Dollars price;
            decimal discount = status.GetDiscount();

            return(GetBasePrice() * (1m - discount));
            //switch (LicensingModel)
            //{
            //    case LicensingModel.TwoDays:
            //        return Dollars.Of(4) * (1m - discount);

            //    case LicensingModel.LifeLong:
            //        return Dollars.Of(8) * (1m - discount);

            //    default:
            //        throw new ArgumentOutOfRangeException();
            //}
            //REM: if (status == CustomerStatus.Advanced && (statusExpirationDate == null || statusExpirationDate.Value >= DateTime.UtcNow))
            //it is not the responsability of the movie class to define the discount, it's up to CustomerStatus
            //if (status.IsAdvanced/*CustomerStatus.Advanced && !statusExpirationDate.IsExpired*/)
            //{
            //    price = price * 0.75m;
            //}

            //return price;
        }
コード例 #2
0
        public virtual Dollars CalculatePrice(CustomerStatus status)
        {
            decimal modifier = 1 - status.GetDiscount();
            Dollars dollars  = GetBasePrice() * modifier;

            return(dollars);
        }
コード例 #3
0
        public virtual Dollars CalculatePrice(CustomerStatus status)
        {
            var modifier = 1m - status.GetDiscount();

            return(GetBasePrice() * modifier);
        }