Пример #1
0
        public IActionResult Post([FromBody] SharedOrders order)
        {
            if (order == null || order.customerId < 1)
            {
                return(BadRequest());
            }

            //if (ProductItemsAvailable(order) && CustomerExists(order))
            if (CustomerExists(order))
            {
                try
                {
                    foreach (var item in order.OrderLines)
                    {
                        if (!messagePublisher.ProductExists(item.ProductId, item.Quantity))
                        {
                            return(StatusCode(500, "Not enough items in stock."));
                        }
                    }

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

                    // Create order.
                    order.Status = SharedOrders.OrderStatus.completed;
                    var newOrder = repository.Add(order);
                    return(CreatedAtRoute("GetOrder", new { id = newOrder.Id }, newOrder));
                }
                catch (Exception e)
                {
                    return(StatusCode(500, "An error happened. Try again." + e));
                }
            }
            else
            {
                // If there are not enough product items available.
                return(StatusCode(500, "Not enough items in stock."));
            }
        }