public async Task <int> Handle(RemoveItemFromVanCommand request, CancellationToken cancellationToken) { // Get current logged in user shopping van var van = await _shoppingVanRepository.GetCustomerShoppingVan(_currentUserService.UserId); if (van == null) { van = new Van(_currentUserService.UserId); } van.RemoveItem(request.ProductId, request.UnitId); _shoppingVanRepository.Update(van); await _shoppingVanRepository.UnitOfWork.SaveEntitiesSeveralTransactionsAsync(cancellationToken); return(van.TotalItemsCount); }
public async Task <int> Handle(AddItemToVanCommand request, CancellationToken cancellationToken) { // Get current logged in user shopping van var van = await _shoppingVanRepository.GetCustomerShoppingVan(_currentUserService.UserId); if (van == null) { van = new Van(_currentUserService.UserId); _shoppingVanRepository.Add(van); await _shoppingVanRepository.UnitOfWork.SaveEntitiesSeveralTransactionsAsync(cancellationToken); } var productToAddToVan = await _mediator.Send(new ProductByIdQuery { ProductId = request.ProductId }); // selected product unit var selectedUnit = productToAddToVan.Units.FirstOrDefault(x => x.Id == request.UnitId); if (selectedUnit == null) { throw new UnitNotFoundException(request.UnitId); } // Adding product to van var unitsToAddToVan = new List <Unit>(); foreach (var unit in productToAddToVan.Units) { unitsToAddToVan.Add(new Unit(unit.Name, unit.Count, unit.ContentCount, unit.Price, unit.SellingPrice, unit.Weight, unit.IsAvailable, van.Id.ToString(), unit.Id)); } van.AddItem(productToAddToVan.Id, productToAddToVan.Name, productToAddToVan.PhotoUrl, unitsToAddToVan, request.UnitId); _shoppingVanRepository.Update(van); await _shoppingVanRepository.UnitOfWork.SaveEntitiesSeveralTransactionsAsync(cancellationToken); return(van.TotalItemsCount); }