public async Task Consume(ConsumeContext <LoggedInEvent> context) { ValidateContext(context); var sessionBasket = await basketRedisService.GetBasket(context.Message.SessionId); var userBasket = await basketRedisService.GetBasket(context.Message.UserId); MergeProducts(sessionBasket, userBasket); await basketRedisService.SaveBasket(context.Message.UserId, userBasket); }
private async Task RemoveProductAndDecreaseBasketTotalPrice(UserBasketDto basket, RemoveProductCommand request) { var productToRemove = basket.Products.Where(x => x.Id == request.ProductId).FirstOrDefault(); if (productToRemove == null) { return; } basket.Products.Remove(productToRemove); basket.TotalPrice -= (productToRemove.Price * productToRemove.Quantity); await basketRedisService.SaveBasket(request.UserId, basket); }
private async Task AddProductToBasketAndIncreaseBasketTotalPrice(BasketProduct basketProduct, UserBasketDto basket, AddProductCommand request) { if (basketProduct != null) { basketProduct.Quantity += request.Product.Quantity; } else { basket.Products.Add(request.Product); } basket.TotalPrice += (request.Product.Price * request.Product.Quantity); await basketRedisService.SaveBasket(request.UserId, basket); }
private async Task ChangeProductQuantityAndBasketTotalPrice(BasketProduct basketProduct, UserBasketDto basket, ChangeProductQuantityCommand request) { switch (request.ChangeQuantityAction) { case ChangeQuantityAction.Plus: basketProduct.Quantity++; basket.TotalPrice += basketProduct.Price; break; case ChangeQuantityAction.Minus: basketProduct.Quantity--; basket.TotalPrice -= basketProduct.Price; break; default: break; } RemoveProductIfQuantityIsLessOrEqualZero(basketProduct, basket); await basketRedisService.SaveBasket(request.UserId, basket); }