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