protected override async Task HandleCommandAsync(AddBookParameters input, CommandResult <AddBookResult> commandResult) { // try to find book by isbn var book = await _bookRepo.FindAsync(input.Isbn); if (book != null) { if (!validateBookAttributes(book, input)) { commandResult.Fail(); return; } } else { // create new book book = Book.Create(input.Isbn, input.Title, input.Description, input.AuthorFirstName, input.AuthorLastName); } var library = new MyLibrary(input.UserId); var mybook = library.AddBook(book, null); await _bookRepo.SaveAsync(book); await _mybookRepo.SaveAsync(mybook); commandResult.Success(new AddBookResult(input.Isbn)); }