public Book DeleteBook(int id, string path) { var book = _dbContext.Books .Include(b => b.BookCopies) .Where(b => b.Id == id) .SingleOrDefault(); if (book == null) { throw new KeyNotFoundException("Book not found."); } else { if (!IsBookAvailable(book.Id)) { throw new BookNotAvailableException("The specified book is currently involved in some loans."); } foreach (var bookCopy in book.BookCopies) { SetNullOnBookCopyCascade(bookCopy.Id); } File.Delete(path); _dbContext.Books.Remove(book); _dbContext.SaveChanges(); return(book); } }
public void CreateBook(BookSubmitModel bookSubmitModel) { _libraryDbContext.Books.Add(new Book() { Title = bookSubmitModel.Title }); _libraryDbContext.SaveChanges(); }
public Category CreateCategory(string name) { VerifyCategoryName(name); Category category = _dbContext.Categories.Add(new Category { Name = name.Trim() }); _dbContext.SaveChanges(); return(category); }
public void ApproveLoanRequest(int bookCopyId, int loanId, int daysNumberForLateApprovedLoans) { // Find loan by ID. var loanToApprove = _dbContext.Loans.Find(loanId); // Check if ID of BookCopy corresponds to the ID of book. bool bookCopyIdCorresponds = _dbContext.Books .Include(b => b.BookCopies) .Single(b => b.Id == loanToApprove.BookId) .BookCopies .Any(bc => bc.Id == bookCopyId); // Check if the book copy is available for loan. bool isNotAvaialble = _dbContext.Loans .Where(l => l.BookCopyId == bookCopyId && (l.Status == LoanStatus.Approved || l.Status == LoanStatus.InProgress)) .Any(); if (isNotAvaialble) { throw new BookCopyNotAvailableException(); } if (bookCopyIdCorresponds) { // Set status to Approved. loanToApprove.BookCopyId = bookCopyId; loanToApprove.Status = LoanStatus.Approved; loanToApprove.BookPickUpLimitDate = DateTime.Now.AddDays(daysNumberForLateApprovedLoans); loanToApprove.ApprovingDate = DateTime.Now; _dbContext.SaveChanges(); } else { throw new InvalidBookCopyIdException(); } }
public void Save() { context.SaveChanges(); }