public void Submit(ProductEnum productEnum, string CreditCardNumber, string expiryDate) { // Step-1 => check product stock if (!_productStockRepository.IsInStock(productEnum)) { throw new Exception($"{productEnum.ToString()} not in stock"); } // Step-2 => payment _paymentProcessor.ChargeCreditCard(CreditCardNumber, expiryDate); //Step-3 => shiping the product _shippingProcessor.MailProduct(productEnum); }