//{ // //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; }
public virtual Dollars CalculatePrice(CustomerStatus status) { decimal modifier = 1 - status.GetDiscount(); Dollars dollars = GetBasePrice() * modifier; return(dollars); }
public virtual Dollars CalculatePrice(CustomerStatus status) { var modifier = 1m - status.GetDiscount(); return(GetBasePrice() * modifier); }