protected override async Task <OrderItem> OnExecuteAsync() { return(await _transactionContext.ExecuteAsync(async() => { try { await _inventoryService.DecrementQuantityOnHandCommand(CurrentOrderItem.ProductID, CurrentOrderItem.Quantity).ExecuteAsync(); } catch (InsufficientStockAmountException) { return await _orderItemDataProxy.BackOrderAsync(_orderItemID, DateTime.Now); } return await _orderItemDataProxy.ShipAsync(_orderItemID, DateTime.Now); })); }
protected override async Task <OrderItem> OnExecuteAsync() { return(await _transactionContext.ExecuteAsync(async() => { var inventoryItem = await _inventoryDataProxy.GetByProductAsync(CurrentOrderItem.ProductID); if (inventoryItem.QuantityOnHand - CurrentOrderItem.Quantity >= 0) { CurrentOrderItem.OrderStatus().SetShippedState(); CurrentOrderItem.ShippedDate = DateTime.Now.ToUniversalTime(); inventoryItem.QuantityOnHand -= CurrentOrderItem.Quantity; await _inventoryDataProxy.UpdateAsync(inventoryItem); } else { CurrentOrderItem.OrderStatus().SetBackorderedState(); CurrentOrderItem.BackorderedDate = DateTime.Now.ToUniversalTime(); } return await _orderItemDataProxy.ShipAsync(CurrentOrderItem); })); }