public async Task <Unit> Handle(ChangeItemCommand request, CancellationToken cancellationToken) { // auth user id, later with service var authUserId = request.UserId; // only member that created the item can remove it if (!await _repository.CanAlterShoppingTripItem(authUserId, request.GroupId, request.ShoppingTripId, request.ShoppingTripItemId, cancellationToken)) { throw new NotCreatorOfShoppingTripItemException(); } // attach shoppingTripItem var item = new ShoppingTripItem { Id = request.ShoppingTripItemId }; _repository.Items.Attach(item); // sure we can map and do update to mark it dirty but whatever // update props item.Name = request.UpdatedShoppingTripItem.Name; item.Amount = request.UpdatedShoppingTripItem.Amount; item.IsFresh = request.UpdatedShoppingTripItem.IsFresh; item.Price = request.UpdatedShoppingTripItem.Price; item.ImageUrl = request.UpdatedShoppingTripItem.ImageUrl; await _repository.SaveChangesAsync(cancellationToken); return(Unit.Value); }
public async Task <Unit> Handle(RemoveItemCommand request, CancellationToken cancellationToken) { // auth user id, later with service var authUserId = request.UserId; // only member that created the item can remove it if (!await _repository.CanAlterShoppingTripItem(authUserId, request.GroupId, request.ShoppingTripId, request.ItemId, cancellationToken)) { throw new NotCreatorOfShoppingTripItemException(); } // remove the item var shoppingTripItem = new ShoppingTripItem { Id = request.ItemId }; _repository.Items.Remove(shoppingTripItem); await _repository.SaveChangesAsync(cancellationToken); return(Unit.Value); }