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