Ejemplo n.º 1
0
        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);
            }));
        }
Ejemplo n.º 2
0
 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);
     }));
 }