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); }
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); }
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")); }
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")); }