Пример #1
0
        public async Task <bool> Do(Request request)
        {
            if (request.Qty <= 0)
            {
                return(false);
            }

            if (!await _stockManager.EnoughStock(request.StockId, request.Qty))
            {
                return(false);
            }

            await _stockManager.PutStockOnHold(request.StockId, request.Qty, _sessionManager.GetId());

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

            var product = await _productManager.GetProductById(stock.ProductId);

            var images = await _productImageManager.GetImages(stock.ProductId);

            var cartProduct = new CartProduct
            {
                ProductId   = stock.ProductId,
                ProductName = product.Name,
                StockId     = stock.Id,
                Images      = images.Select(x => x.Path).ToList(),
                Qty         = request.Qty,
                Value       = product.Value
            };

            _sessionManager.AddProduct(cartProduct);

            return(true);
        }
Пример #2
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);
        }
Пример #3
0
        public async Task <BaseResponse> Do(Form request)
        {
            var removedStock = await _cartManager.RemoveStock(request.StockId, request.UserId);

            if (removedStock < 0)
            {
                return(new BaseResponse("Product not found", false));
            }

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

            stock.Qty += removedStock;

            await _stockManager.UpdateStockRange(new[] { stock });

            return(new BaseResponse("Removed from cart"));
        }
Пример #4
0
        public async Task <BaseResponse> Do(Form request)
        {
            var stock = _stockManager.GetStock(request.StockId);

            if (stock == null)
            {
                return(new BaseResponse("Product not found", false));
            }

            if (stock.Qty < request.Qty)
            {
                return(new BaseResponse("Not Enough Stock", false));
            }

            var cart = await _cartManager.GetCartByUserId(request.UserId);

            var product = cart.Products.FirstOrDefault(x => x.StockId == request.StockId);

            if (product == null)
            {
                cart.Products.Add(new CartProduct
                {
                    StockId = request.StockId,
                    Qty     = request.Qty,
                });
            }
            else
            {
                product.Qty += request.Qty;
                if (stock.Qty < product.Qty)
                {
                    return(new BaseResponse("Not Enough Stock", false));
                }
            }

            await _cartManager.UpdateCart(cart);

            return(new BaseResponse("Product Added"));
        }