// flags usually go at the end public void PlaceOrder(Customer customer, Order order, Payment payment, bool allowSplitOrders, bool emailReceipt) { CustomerRepository.Add(customer); OrderRepository.Add(order); InventoryRepository.OrderItems(order, allowSplitOrders); payment.ProcessPayment(); if (emailReceipt) { // returnin an object makes the code more readable var result = customer.ValidateEmail(); if (result.Success) { CustomerRepository.Update(); EmailLibrary.SendEmail(customer.EmailAddress, "Here is your receipt"); } } }
public void PlaceOrder(Customer customer, Order order, Payment payment, bool allowSplitOrders, bool emailReceipt) { customerRepository = new CustomerRepository(); customerRepository.Add(customer); orderRepository = new OrderRepository(); orderRepository.Add(order); inventoryRepository = new InventoryRepository(); inventoryRepository.OrderItems(order, allowSplitOrders); payment.ProcessPayment(); if (emailReceipt) { customer.ValidateEmail(); customerRepository.Update(); emailLibrary = new EmailLibrary(); emailLibrary.SendEmail(customer.EmailAddress, "Here is your receipt"); } }
public void PlaceOrder(Customer customer, Order order, Payment payment, bool allowSplitOrders, bool emailReceipt) { customerRepository.Add(customer); orderRepository.Add(order); inventoryRepository.OrderItems(order, allowSplitOrders); payment.ProcessPayment(); if (emailReceipt) { var result = customer.ValidateEmail(); if (result.Success) { emailLibrary.SendEmail(customer.EmailAddress, "Here is your receipt"); } else { // log the messages } } }
public void PlaceOrder(Customer customer, Order order, Payment payment, bool emailReceipt) { //1. Add New Customer customerRepository.Add(customer); //2. Add Order orderRepository.Add(order); //3. Substract from Inventory inventoryRepository.OrderItems(order); //4. Process Payment payment.ProcessPayment(payment); //5. Email Notifications if (emailReceipt) { var isValidEmail = customer.ValidateEmail(); if (isValidEmail) { customerRepository.Update(); Email.Send(customer.EmailAddress, "Order Sent"); } } }
public OperationResult PlaceOrder(Customer customer, Order order, Payment payment, bool allowSplitOrders, bool emailReceipt) { Debug.Assert(customerRepository != null, "Missing customer respository instance"); Debug.Assert(orderRepository != null, "Missing order repository instance"); Debug.Assert(inventoryRepository != null, "Missing inventory repository instance"); Debug.Assert(emailLibrary != null, "Missing email library instance"); OperationResult operationResult = new OperationResult(); if (customer == null) { throw new ArgumentNullException("Customer instance is null"); } if (order == null) { throw new ArgumentNullException("Order instance is null"); } if (payment == null) { throw new ArgumentNullException("Payment instance is null"); } customerRepository.Add(customer); orderRepository.Add(order); inventoryRepository.OrderItems(order, allowSplitOrders); payment.ProcessPayment(payment); if (emailReceipt) { operationResult = customer.ValidateEmail(); if (operationResult.Success) { customerRepository.Update(); emailLibrary.SendEmail(customer.EmailAddress, "Here is your receipt"); } else { //Log messages if (operationResult.MessageList.Any()) { operationResult.AddMessage(operationResult.MessageList[0]); } } } return(operationResult); }
public OperationsResult PlaceOrder(Customer customer, Order order, Payment payment, bool allowSplitOrders, bool emailReciepts) { // Only works during the debug phase Debug.Assert(customerRepository != null, "Missing customer repository instance"); Debug.Assert(orderRepository != null, "Missing order repository instance"); Debug.Assert(inventoryRepository != null, "Missing inventory repository instance"); Debug.Assert(emailLibrary != null, "Missing email repository instance"); if (customer == null) { throw new ArgumentNullException("Customer instance is null"); } if (order == null) { throw new ArgumentNullException("Order instance is null"); } if (payment == null) { throw new ArgumentNullException("Payment instance is null"); } var op = new OperationsResult(); customerRepository.Add(customer); orderRepository.Add(order); inventoryRepository.OrderItems(order, allowSplitOrders); payment.ProcessPayment(payment); if (emailReciepts) { var result = customer.ValidateEmail(); if (result.Success) { customerRepository.Update(); emailLibrary.SendEmail(customer.EmailAddress, "reciept"); } else { //log the messages if (result.MessageList.Any()) { op.AddMessage(result.MessageList[0]); } } } return(op); }
public OperationResult PlaceOrder(Customer customer, Order order, Payment payment, bool allowSplitOrders, bool getEmailReceipt) { Debug.Assert(customerRepo != null, "Missing customer repository instance"); Debug.Assert(orderRepo != null, "Missing order repository instance"); Debug.Assert(invRepo != null, "Missing inventory repository instance"); Debug.Assert(emailLibrary != null, "Missing email library instance"); if (customer == null) { throw new ArgumentNullException("Customer cannot be null"); } if (order == null) { throw new ArgumentNullException("Order cannot be null"); } if (payment == null) { throw new ArgumentNullException("Payment cannot be null"); } // bools are ok, since they cannot be null var op = new OperationResult(); // TODO the below method should be changed to return something so I can properly update the op object customerRepo.Add(customer); orderRepo.Add(order); invRepo.OrderItems(order, allowSplitOrders); payment.ProcessPayment(); if (getEmailReceipt) { var result = customer.ValidateEmail(); if (result.Success) { customerRepo.Update(); emailLibrary.SendEmail(customer.EmailAddress, "Here is your receipt"); } else { // op.Success = false; //nope, since by this point the order was actually placed // Log messages if (result.MessageList.Any()) { op.AddMessage(result.MessageList[0]); } } } return(op); }
public OperationResult PlaceOrder(Customer customer, Order order, Payment payment, bool allowSplitOrders, bool emailReceipt) { // This program makes assertions that certain functions are running (as functions below) // These will throw a warning during debuging if an assertion isn't true Debug.Assert(customerRepository != null, "Missing customer repository instance N***A"); Debug.Assert(orderRepository != null, "Missing order repository instance"); Debug.Assert(inventoryRepository != null, "Missing inventory repository instance"); Debug.Assert(emailLibrary != null, "Missing email library instance"); if (customer == null) { throw new ArgumentNullException("Customer instance is null"); } if (order == null) { throw new ArgumentNullException("Order instance is null"); } if (payment == null) { throw new ArgumentNullException("Payment instance is null"); } var op = new OperationResult(); customerRepository.Add(customer); orderRepository.Add(order); inventoryRepository.OrderItems(order, allowSplitOrders); payment.ProcessPayment(); if (emailReceipt) { var result = customer.ValidateEmail(); if (result.Success) { customerRepository.Update(); emailLibrary.SendEmail(customer.EmailAddress, "Here is your receipt"); } else { // log the messages if (result.MessageList.Any()) { op.AddMessage(result.MessageList[0]); } } } return(op); }
public OperationResult PlaceOrder(Customer customer, Order order, Payment payment, bool allowSplitOrders, bool emailReceipt) { if (customer == null) { throw new ArgumentException("Customer instance is null"); } if (order == null) { throw new ArgumentException("Order instance is null"); } if (payment == null) { throw new ArgumentException("Payment instance is null"); } var op = new OperationResult(); customerRepository.Add(customer); OrderRepository.Add(order); inventoryRepository.OrderItems(order, allowSplitOrders); payment.ProcessPayment(payment); if (emailReceipt) { string message = string.Empty; var result = customer.ValidateEmail(); if (result.Success) { customerRepository.Update(); emailLibrary.SendEmail(customer.Email, "Here is your receipt"); } else { //log message if (result.MessageList.Any()) { op.AddMessage(result.MessageList[0]); } } } return(op); }
public OperationResult PlaceOrder(Customer customer, Order order, Payment payment, bool allowSplitOrders, bool emailReceipt) { // This program makes assertions that certain functions are running (as functions below) // These will throw a warning during debuging if an assertion isn't true Debug.Assert(customerRepository != null, "Missing customer repository instance N***A"); Debug.Assert(orderRepository != null, "Missing order repository instance"); Debug.Assert(inventoryRepository != null, "Missing inventory repository instance"); Debug.Assert(emailLibrary != null, "Missing email library instance"); if (customer == null) throw new ArgumentNullException("Customer instance is null"); if (order == null) throw new ArgumentNullException("Order instance is null"); if (payment == null) throw new ArgumentNullException("Payment instance is null"); var op = new OperationResult(); customerRepository.Add(customer); orderRepository.Add(order); inventoryRepository.OrderItems(order, allowSplitOrders); payment.ProcessPayment(); if (emailReceipt) { var result = customer.ValidateEmail(); if (result.Success) { customerRepository.Update(); emailLibrary.SendEmail(customer.EmailAddress, "Here is your receipt"); } else { // log the messages if (result.MessageList.Any()) { op.AddMessage(result.MessageList[0]); } } } return op; }
public void PlaceOrder(Customer customer, Order order, Payment payment, bool allowSplitOrders, bool emailReceipt) { customerRepository.Add(customer); orderRepository.Add(order); inventoryRepository.OrderItems(order, allowSplitOrders); payment.ProcessPayment(); if (emailReceipt) { customer.ValidateEmail(); customerRepository.Update(); emailLibrary.SendEmail(customer.EmailAddress, "Here are your receipt!"); } }
public void PlaceOrder(Customer customer, Order order, Payment payment, bool allowSplitOrders, bool emailReceipt) // put objects in order put flags(bool values) at the end { customerRepository.Add(customer); orderRepository.Add(order); inventoryRepository.OrderItems(order, allowSplitOrders); payment.ProcessPayment(payment); if (emailReceipt) { customer.ValidateEmail(); customerRepository.Update(); emailLibrary.SendEmail(customer.EmailAddress, "Here is your receipt"); } }
public OperationResult PlaceOrder(Customer customer, Order order, Payment payment, bool allowSplitOrders, bool emailReceipt) { /*!!! Assert, sets you upfront that certain conditions must be met before program * execution continues, and if those conditions are not met, the program will abort, * and end in the debugger, right at that spot. !!! */ Debug.Assert(customerRepository != null, "Missing customer repository"); // this one above fails, because of commenting the init of one of the class's props in ctor Debug.Assert(orderRepository != null, "Missing order repository"); Debug.Assert(inventoryRepository != null, "Missing inventory repository"); Debug.Assert(emailLibrary != null, "Missing email library"); //Validating parameters: if (customer == null) { throw new ArgumentNullException("Customer instance is null"); } if (order == null) { throw new ArgumentNullException("Order instance is null"); } if (payment == null) { throw new ArgumentNullException("Payment instance is null"); } // The rest of parameters are not reference values, but structs, so they // may be only bool. There is no need to validate them. var op = new OperationResult(); // Processing the method's logic: customerRepository.Add(customer); orderRepository.Add(order); inventoryRepository.OrderItems(order, allowSplitOrders); payment.ProcessPayment(); if (emailReceipt) { var result = customer.ValidateEmail(); if (result.Success) { customerRepository.Update(); emailLibrary.SendEmail(customer.EmailAdress, "Here is your receipt"); } else { // log the error messages // returning the result's message. if (result.MessageList.Any()) { op.AddMessage(result.MessageList[0]); } } } return(op); }