public BorrowBookTransaction(LibraryUser libUser, BookCopy bookCopy) : base(bookCopy) { _BookCopyService = new BookCopyService(); _HolidayService = new HolidayService(); _BookInfoService = new BookService(); _SectionService = new SectionService(); var bookInfo = _BookInfoService.BookInfoOf(BookCopy); var section = _SectionService.GetBookSection(bookInfo); if (section == null) { throw new InvalidOperationException("The book does not belong to a section."); } if (section.MaxDaysAllowedForBorrowing == 0) { TransactionType = "Not Allowed For Borrowing."; } bookTransInfo = new TransactionInfo { BookCopyId = BookCopy.Id, LibraryUserId = libUser.Id, BorrowDate = TransactionDate, ExpectedReturnDate = _HolidayService.GetNonHolidayDateFrom(TransactionDate.AddDays(section.MaxDaysAllowedForBorrowing)) }; }
public double ComputeNecessaryFee(BookCopy bookCopy, TransactionInfo bookTransInfo) { var bookInfo = _BookCopyService.GetBookInfo(bookCopy); if (bookInfo == null) { throw new InvalidOperationException("Book copy has no known book information."); } var section = _SectionService.GetBookSection(bookInfo); if (section == null) { throw new InvalidOperationException("The book does not belong to a section."); } if (DateTime.Now.Date <= bookTransInfo.ExpectedReturnDate.Date) { return(0); } return((DateTime.Now.Date - bookTransInfo.ExpectedReturnDate.Date).Days * section.LateReturningFee); }