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);
            }
Beispiel #2
0
            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);
            }