public async Task <CartExtendedResponse> Handle(
            CreateCartCommand command,
            CancellationToken cancellationToken)
        {
            var entity = new Entities.CartSession
            {
                Items = command.ItemsIds.Select(x => new CartItem {
                    CartItemId = new Guid(x), Quantity = 1
                }).ToList(),
                User = new CartUser {
                    Email = command.UserEmail
                },
                ValidityDate = DateTimeOffset.Now.AddMonths(2),
                Id           = Guid.NewGuid().ToString()
            };

            var result = await _repository.AddOrUpdateAsync(entity);

            var response = _mapper.Map <CartExtendedResponse>(result);

            var tasks = response.Items
                        .Select(async x => await _catalogService.EnrichCartItem(x, cancellationToken));

            response.Items = await Task.WhenAll(tasks);

            return(response);
        }
        private async Task RemoveItemsInCart(string itemToRemove, Entities.CartSession cartSession)
        {
            if (string.IsNullOrEmpty(itemToRemove))
            {
                return;
            }

            var toDelete = cartSession?.Items?.Where(x => x.CartItemId.ToString() == itemToRemove).ToList();

            if (toDelete == null || toDelete.Count == 0)
            {
                return;
            }

            foreach (var item in toDelete)
            {
                cartSession.Items?.Remove(item);
            }

            await _cartRepository.AddOrUpdateAsync(cartSession);
        }