Пример #1
0
        public IActionResult Post([FromBody] Order order)
        {
            if (order == null)
            {
                return(BadRequest("Order could not be created"));
            }

            if (messagePublisher.IsInStock(order))
            {
                var customer = GetCustomer(order.customerId);

                if (customer == null)
                {
                    return(StatusCode(500, "The customer does not exist!"));
                }

                if (customer.CreditStanding)
                {
                    try
                    {
                        // Publish OrderStatusChangedMessage. If this operation
                        // fails, the order will not be created
                        messagePublisher.PublishOrderStatusChangedMessage(
                            order.customerId, order.OrderLines, "completed");

                        order.Status = Order.OrderStatus.completed;

                        var newOrder = repository.Add(order);
                        return(CreatedAtRoute("GetOrder", new { id = newOrder.Id }, newOrder));
                    }
                    catch (Exception x)
                    {
                        return(StatusCode(500, "An error happened. Try again."));
                    }
                }
                else
                {
                    return(StatusCode(500, "Customer does not have enough resources"));
                }
            }
            else
            {
                // If there are not enough product items available.
                return(StatusCode(500, "Not enough items in stock."));
            }
        }