public void FinalizeOrder() { // Business Conditions here... InvoiceStrategy.Generate(this); ShippingStrategy.ShipOrder(this); }
public void FinalizeOrder() { if (SelectedPayments.Any(x => x.PaymentProvider == PaymentProvider.Invoice) && AmountDue > 0 && ShippingStatus == ShippingStatus.WaitingForPayment) { InvoiceStrategy.Generate(this); ShippingStatus = ShippingStatus.ReadyForShippment; } else if (AmountDue > 0) { throw new Exception("Unable to finalize order"); } ShippingStrategy.Ship(this); }