public void Charge(IPayingCustomer customer)
        {
            switch(PriceCode)
            {
                case MovieRentalPriceCode.Regular:
                    {
                        var rentalCostPerDay = 2;
                        var allowedRentalPeriod = 2;

                        if (DaysRented > allowedRentalPeriod)
                        {
                            var lateRentalDays = DaysRented - allowedRentalPeriod;
                            var lateRentalPercentageIncrease = 1.5;
                            var totalRentalFeeIncludingLateFee = allowedRentalPeriod*rentalCostPerDay +
                                                                 lateRentalDays*rentalCostPerDay*
                                                                 lateRentalPercentageIncrease;

                            customer.Charge(totalRentalFeeIncludingLateFee);
                        }
                        else
                        {
                            var totalRentalFee = DaysRented*rentalCostPerDay;
                            customer.Charge(totalRentalFee);
                        }
                        break;
                    }
                case MovieRentalPriceCode.NewRelease:
                    {
                        var rentalCostPerDay = 3;
                        var totalRentalFee = rentalCostPerDay*DaysRented;
                        customer.Charge(totalRentalFee);
                        break;
                    }
                case MovieRentalPriceCode.Childrens:
                    {
                        var rentalCostPerDay = 1.5;
                        var allowedRentalPeriod = 3;
                        if(DaysRented > allowedRentalPeriod)
                        {
                            var daysLate = DaysRented - allowedRentalPeriod;
                            customer.Charge(rentalCostPerDay * allowedRentalPeriod + daysLate * rentalCostPerDay * 1.5);
                        }
                        else
                        {
                            var totalRentalFee = rentalCostPerDay * DaysRented;
                            customer.Charge(totalRentalFee);
                        }

                        break;
                    }
            }
        }
 public void Charge(IPayingCustomer customer, int daysRented)
 {
     var rentalCostPerDay = 1.5;
     var allowedRentalPeriod = 3;
     if (daysRented > allowedRentalPeriod)
     {
         var daysLate = daysRented - allowedRentalPeriod;
         customer.Charge(rentalCostPerDay * allowedRentalPeriod + daysLate * rentalCostPerDay * 1.5);
     }
     else
     {
         var totalRentalFee = rentalCostPerDay * daysRented;
         customer.Charge(totalRentalFee);
     }
 }
        public void Charge(IPayingCustomer customer, int daysRented)
        {
            var rentalCostPerDay = 2;
            var allowedRentalPeriod = 2;

            if (daysRented > allowedRentalPeriod)
            {
                var lateRentalDays = daysRented - allowedRentalPeriod;
                var lateRentalPercentageIncrease = 1.5;
                var totalRentalFeeIncludingLateFee = allowedRentalPeriod * rentalCostPerDay +
                                                     lateRentalDays * rentalCostPerDay *
                                                     lateRentalPercentageIncrease;

                customer.Charge(totalRentalFeeIncludingLateFee);
            }
            else
            {
                var totalRentalFee = daysRented * rentalCostPerDay;
                customer.Charge(totalRentalFee);
            }
        }
 public void Charge(IPayingCustomer customer, int daysRented)
 {
     var rentalCostPerDay = 3;
     var totalRentalFee = rentalCostPerDay * daysRented;
     customer.Charge(totalRentalFee);
 }
 public void Charge(IPayingCustomer customer)
 {
     TheMovie.Charge(customer, DaysRented);
 }
 public void Charge(IPayingCustomer customer, int daysRented)
 {
     PriceCode.Charge(customer, daysRented);
 }