public BorrowBookResponse BorrowBook(BorrowBookRequest request) { request.Validate(); using (var connection = _DbConnectionProvider.SafelyInvoke(_logger)) { var book = connection.GetBookById(request.BookId); if (book == null) { throw BookstoreException.BookNotFound; } if (book.Status.Equals("Unvailable")) { throw BookstoreException.BookIsUnvailable; } if (book.Status.Equals("Borrowed")) { throw BookstoreException.BookIsBorrowed; } var newStatus = "Borrowed"; connection.UpdateBookStatus(request.BookId, newStatus); var newBook = connection.GetBookById(request.BookId); var updatedBooksDetails = newBook.ToDetailsModel(); return(new BorrowBookResponse { BookDetails = updatedBooksDetails }); } }
internal static void Validate(this BorrowBookRequest request) { if (request == null) { throw BookstoreException.InvalidJsonData; } if (!Guid.TryParse(request.BookId, out Guid bookIdAsGuid)) { throw BookstoreException.InvalidBookId; } }