public async Task <OperationResult <LendingRecord> > Lend(int bookId, int lenderId, DateTime @from, DateTime to) { var bookResult = await _bookRepository.GetAsync(bookId); if (!bookResult.Success) { return(new OperationResult <LendingRecord>("Book not found!", bookResult.ErrorMessages)); } var lenderResult = await _lenderRepository.GetAsync(lenderId); if (!lenderResult.Success) { return(new OperationResult <LendingRecord>("Lender not found!", lenderResult.ErrorMessages)); } var book = bookResult.Entity; var record = new LendingRecord { From = @from, To = to, BookId = bookId, LenderId = lenderId }; var createResult = await _lendingRepository.CreateAsync(record); if (!createResult.Success) { return(new OperationResult <LendingRecord>("Creation of lending record failed!", createResult.ErrorMessages)); } book.IsAvailable = false; var updateResult = await _bookRepository.UpdateAsync(book); if (!updateResult.Success) { return(new OperationResult <LendingRecord>("Updating book availability failed!", updateResult.ErrorMessages)); } return(createResult); }