public IEnumerable <ResponseMessage> OrderHandler(IncomingMessage message, IValidHandle matchedHandle) { Order order = null; string responseText = string.Empty; try { order = _orderBuilder.BuildOrder(message.FullText, message.Username); if (!order.MannersUsed) { responseText = _mannersMessageGenerator.GetMannerResponse(); responseText += Environment.NewLine; } _orderCache.CacheOrder(order); responseText += _orderFormatter.FormatOrder(order); } catch (ArgumentException) { responseText += "Sorry, I couldn't figure out your table number. Please try again."; } catch (InvalidOperationException ioEx) { responseText += ioEx.Message; } catch (Exception ex) { responseText += "Sorry, it looks like something has gone wrong. Please could you try again?"; responseText += Environment.NewLine; responseText += ex.Message; } yield return(message.ReplyDirectlyToUser(responseText)); }
public GenericServiceResult <IEnumerable <IProduct> > AttendCustomer(ICustomer customer, string productList) { var order = _orderBuilder.BuildOrder(productList); var processedOrder = _orderProcessor.ProcessOrder(customer, order.Entity); var orderResponse = _orderService.PlaceOrder(customer.Cart.GetProducts()); if (orderResponse.Success) { return(new GenericServiceResult <IEnumerable <IProduct> >(orderResponse.Entity, true, "All good.")); } return(new GenericServiceResult <IEnumerable <IProduct> >(null, false, "All bad.")); }
public void ExecuteOrder(ParcelOrder order) { try { _logger.LogInformation("Processing Order."); var output = _parcelOrderBuilder.BuildOrder(order); PrintOutput(output); } catch (Exception e) { _logger.LogError("Failed to Process Order.", e); } }