Ejemplo n.º 1
0
        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
                });
            }
        }
Ejemplo n.º 2
0
 internal static void Validate(this BorrowBookRequest request)
 {
     if (request == null)
     {
         throw BookstoreException.InvalidJsonData;
     }
     if (!Guid.TryParse(request.BookId, out Guid bookIdAsGuid))
     {
         throw BookstoreException.InvalidBookId;
     }
 }