public IActionResult Post([FromBody] Order order) { if (order == null) { return(BadRequest()); } if (ProductItemsAvailable(order)) { try { // Publish OrderStatusChangedMessage. If this operation // fails, the order will not be created messagePublisher.PublishOrderStatusChangedMessage( order.customerId, order.OrderLines, "completed"); // Create order. order.Status = Order.OrderStatus.completed; var newOrder = repository.Add(order); return(CreatedAtRoute("GetOrder", new { id = newOrder.Id }, newOrder)); } catch { return(StatusCode(500, "An error happened. Try again.")); } } else { // If there are not enough product items available. return(StatusCode(500, "Not enough items in stock.")); } }
public IActionResult Post([FromBody] Order order) { if (order == null) { return(BadRequest()); } // Call product service to get the product ordered var orderedProduct = productServiceGateway.Get(order.ProductId); if (order.Quantity <= orderedProduct.ItemsInStock - orderedProduct.ItemsReserved) { try { // Publish OrderStatusChangedMessage. If this operation // fails, the order will not be created messagePublisher.PublishOrderStatusChangedMessage(order.ProductId, order.Quantity, "orderCompleted"); // Create order. order.Status = Order.OrderStatus.completed; var newOrder = repository.Add(order); return(CreatedAtRoute("GetOrder", new { id = newOrder.Id }, newOrder)); } catch { return(StatusCode(500, "An error happened. Try again.")); } } else { // If the order could not be created, "return no content". return(StatusCode(500, "Not enough items in stock.")); } }
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.")); } }
public IActionResult Post([FromBody] Order order) { if (order == null) { return(BadRequest()); } // Get the Product from Product API var orderedProduct = productServiceGateway.Get(order.ProductId); if (order.Quantity <= orderedProduct.ItemsInStock - orderedProduct.ItemsReserved) { /* * // reduce the number of items in stock for the ordered product, * // and create a new order. * orderedProduct.ItemsReserved += order.Quantity; * var updateRequest = new RestRequest(orderedProduct.Id.ToString(), Method.PUT); * updateRequest.AddJsonBody(orderedProduct); * var updateResponse = c.Execute(updateRequest); */ try { // Publish OrderStatusChangedMessage. If this operation // fails, the order will not be created messagePublisher.PublishOrderStatusChangedMessage(order.ProductId, order.Quantity, "orderCompleted"); // Create order. order.Status = Order.OrderStatus.completed; var newOrder = repository.Add(order); return(CreatedAtRoute("GetOrder", new { id = newOrder.Id }, newOrder)); } catch { return(StatusCode(500, "An error happened. Try again.")); } } else { // If the order could not be created, "return no content". return(StatusCode(500, "Not enough items in stock.")); } }
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.")); } }
public IActionResult Post([FromBody] Order order) { if (order == null) { return(BadRequest()); } RestClient restClient = new RestClient(); // Ask Customer service if Customer is valid restClient.BaseUrl = new Uri("http://customerapi/customers/"); var customerRequest = new RestRequest(order.CustomerId.ToString(), Method.GET); var customerResponse = restClient.Execute(customerRequest); if (!customerResponse.IsSuccessful) { return(BadRequest(customerResponse.ErrorMessage)); } var customer = JObject.Parse(customerResponse.Content); if (customer is null) { return(StatusCode(404, "The entered customer doesn't seem to exist yet. Please select an existing/valid customer")); } //localhost:5000/orders/?CustomerNo=1 restClient.BaseUrl = new Uri("http://orderapi/orders/"); var orderRequest = new RestRequest("?CustomerNo=" + customer.GetValue("customerId"), Method.GET); var orderResponse = restClient.Execute <List <Order> >(orderRequest); List <Order> customerOrders = orderResponse.Data; bool hasOutstandingCredit = customerOrders.Any(order => order.Status == Order.OrderStatus.shipped); if (hasOutstandingCredit) { return(BadRequest("Customer have credit standing")); } // Ask Product service if products are available if (ProductItemsAvailable(order)) { try { // Publish OrderStatusChangedMessage. If this operation // fails, the order will not be created messagePublisher.PublishOrderStatusChangedMessage( order.CustomerId, order.OrderLines, "completed"); // Create order. order.Status = Order.OrderStatus.completed; var newOrder = _repository.Add(order); return(CreatedAtRoute("GetOrder", new { id = newOrder.Id }, newOrder)); } catch { return(StatusCode(500, "An error happened. Try again.")); } } else { // If there are not enough product items available. return(StatusCode(500, "Not enough items in stock.")); } }