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)); }
private bool validateBookAttributes(Book book, AddBookParameters input) { return(book.Title.Equals(input.Title, StringComparison.CurrentCultureIgnoreCase) && book.Author.FirstName.Equals(input.AuthorFirstName, StringComparison.CurrentCultureIgnoreCase) && book.Author.LastName.Equals(input.AuthorLastName, StringComparison.CurrentCultureIgnoreCase)); }