예제 #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);
        }
예제 #2
0
        public async Task <Unit> Handle(AddProductCommand request, CancellationToken cancellationToken)
        {
            var basket = await basketRedisService.GetBasket(request.UserId);

            var basketProduct = basket.Products.Where(x => x.Id == request.Product.Id).FirstOrDefault();

            await AddProductToBasketAndIncreaseBasketTotalPrice(basketProduct, basket, request);

            return(Unit.Value);
        }
        public async Task <Unit> Handle(RemoveProductCommand request, CancellationToken cancellationToken)
        {
            var basket = await basketRedisService.GetBasket(request.UserId);

            if (basket.Products.Count > 0)
            {
                await RemoveProductAndDecreaseBasketTotalPrice(basket, request);
            }

            return(Unit.Value);
        }
        public async Task <Unit> Handle(ChangeProductQuantityCommand request, CancellationToken cancellationToken)
        {
            var basket = await basketRedisService.GetBasket(request.UserId);

            var basketProduct = basket.Products.Where(x => x.Id == request.ProductId).FirstOrDefault();

            if (basketProduct == null)
            {
                return(Unit.Value);
            }

            await ChangeProductQuantityAndBasketTotalPrice(basketProduct, basket, request);

            return(Unit.Value);
        }
 public async Task <UserBasketDto> Handle(GetBasketQuery request, CancellationToken cancellationToken)
 {
     return(await basketRedisService.GetBasket(request.UserId));
 }
        public async Task <int> Handle(GetBasketQuantityQuery request, CancellationToken cancellationToken)
        {
            var basket = await basketRedisService.GetBasket(request.UserId);

            return(basket.Products.Count);
        }