Пример #1
0
        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);
        }
Пример #3
0
        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);
        }