예제 #1
0
        public async Task <bool> Do(Request request)
        {
            _sessionManager.RemoveProduct(request.StockId, request.Qty, request.All);

            var stockOnHold = _stockManager.GetStocksOnHoldByIdWithSessionId(request.StockId, _sessionManager.GetId());

            var stock = _stockManager.GetStock(request.StockId);

            if (request.All)
            {
                stock.Qty      += stockOnHold.Qty;
                stockOnHold.Qty = 0;
            }
            else
            {
                stock.Qty       += request.Qty;
                stockOnHold.Qty -= request.Qty;
            }

            if (stockOnHold.Qty <= 0)
            {
                await _stockManager.RemoveStockFromHold(stockOnHold);
            }

            await _stockManager.UpdateStock(stock);

            await _stockManager.UpdateStockOnHold(stockOnHold);

            return(true);
        }