public async Task <bool> Do(Request request) { var order = new Order { OrderRef = CreateOrderReference(), StripeReference = request.StripeReference, FirstName = request.FirstName, LastName = request.LastName, Email = request.Email, PhoneNumber = request.PhoneNumber, Address1 = request.Address1, Address2 = request.Address2, City = request.City, PostCode = request.PostCode, OrderStocks = request.Stocks.Select(x => new OrderStock { StockId = x.StockId, Qty = x.Qty, }).ToList() }; var success = await _orderManager.CreateOrder(order) > 0; if (success) { await _stockManager.RemoveStockFromHold(request.SessionId); return(true); } return(false); }
public async Task <string> Do(Request request) { var order = new Order { OrderRef = await CreateOrderReference(), StripeReference = request.StripeReference, FirstName = request.FirstName, LastName = request.LastName, Email = request.Email, PhoneNumber = request.PhoneNumber, Address1 = request.Address1, Address2 = request.Address2, City = request.City, PostCode = request.PostCode, }; var id = await _orderManager.CreateOrder( order, request.Stocks.Select(x => new OrderStock { StockId = x.StockId, Qty = x.Qty, })); if (id > 0) { await _stockManager.RemoveStockFromHold(request.SessionId); return(order.OrderRef); } throw new ArgumentException("Failed to create order."); }
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 <bool> Do(Request request) { if (request.Qty <= 0) { return(false); } await _stockManager.RemoveStockFromHold(request.StockId, request.Qty, _sessionManager.GetId()); _sessionManager.RemoveProduct(request.StockId, request.Qty); return(true); }
public async Task <bool> ExecAsync(CartDto cartDto) { if (cartDto.Quantity <= 0) { return(false); } var success = await _stockManager.RemoveStockFromHold(cartDto.StockId, cartDto.Quantity, _sessionManager.GetId()) > 0; if (!success) { return(false); } _sessionManager.RemoveProduct(cartDto.StockId, cartDto.Quantity); return(true); }
public async Task <bool> ExecAsync(CreateOrderDto createOrderDto) { var order = new Order { OrderRef = _orderManager.CreateOrderRef(), StripeRef = createOrderDto.StripeRef, FirstName = createOrderDto.FirstName, LastName = createOrderDto.LastName, Email = createOrderDto.Email, PhoneNumber = createOrderDto.PhoneNumber, Address = createOrderDto.Address, City = createOrderDto.City, PostCode = createOrderDto.PostCode, OrderStocks = createOrderDto.Stocks.Select(x => new OrderStock { StockId = x.StockId, Quantity = x.Quantity }).ToList() }; return(await _orderManager.CreateOrder(order) > 0 && await _stockManager.RemoveStockFromHold(createOrderDto.SessionId) > 0); }