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."));
        }
Exemple #3
0
        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);
            }
        }