public LibraryForm() { InitializeComponent(); // we create only one context in our application, which gets shared among repositories LibraryContext context = new LibraryContext(); // we use a factory object that will create the repositories as they are needed, it also makes // sure all the repositories created use the same context. RepositoryFactory repFactory = new RepositoryFactory(context); bookService = new BookService(repFactory); copyService = new BookCopyService(repFactory); authorService = new AuthorService(repFactory); memberService = new MemberService(repFactory); returnedLoanService = new ReturnedLoanService(repFactory); loanService = new LoanService(repFactory, returnedLoanService); ShowAllBooks(bookService.All()); ShowAllBookCopies(copyService.All()); ShowAllMembers(memberService.All()); ShowAllAuthors(authorService.All()); ShowAllLoans(loanService.All()); ShowAllAvailableBooks(copyService.All(), loanService.All()); ShowAllOverDueBooks(copyService.All()); bookService.Updated += BookService_Updated; authorService.Updated += AuthorService_Updated; copyService.Updated += CopyService_Updated; memberService.Updated += MemberService_Updated; loanService.Updated += LoanService_Updated; backgroundWorker1.DoWork += BackgroundWorker1_DoWork; backgroundWorker1.RunWorkerCompleted += BackgroundWorker1_RunWorkerCompleted; }
public LibraryForm() { InitializeComponent(); // we create only one context in our application, which gets shared among repositories LibraryContext context = new LibraryContext(); // we use a factory object that will create the repositories as they are needed, it also makes // sure all the repositories created use the same context. RepositoryFactory repFactory = new RepositoryFactory(context); this.bookService = new BookService(repFactory); this.bookCopyService = new BookCopyService(repFactory); this.authorService = new AuthorService(repFactory); this.memberService = new MemberService(repFactory); this.loanService = new LoanService(repFactory); //Can we do this another way? ShowAllBooks(bookService.All()); AuthorTabShowAllAuthors(authorService.All()); BookTabShowAllAuthors(authorService.All()); MemberTabShowAllMembers(memberService.All()); BookTabBooksByAuthor(authorService.All()); ShowAllBooksInComboBox(bookService.All()); LoanTabShowMembers(memberService.All()); LoanTabShowCopies(bookCopyService.GetAvailableBookCopies(loanService.All(), bookCopyService.All())); ShowAllLoans(loanService.GetAllCurrentLoans(), loanService.GetAllPreviousLoans(), loanService.GetAllOverdueLoans()); LoanTabShowLoansByMember(memberService.All()); TEST(loanService.All(), bookCopyService.All()); }
/// <summary> /// "Add new copy"-button /// </summary> private void button1_Click(object sender, EventArgs e) { if ((Book)comboBoxBook.SelectedItem != null) { try { BookCopy copy = new BookCopy((Book)comboBoxBook.SelectedItem, Convert.ToInt32(numericUpDownCopies.Value)); bookCopyService.Add(copy); ShowAllBooks(bookService.All()); LoanTabShowCopies(bookCopyService.GetAvailableBookCopies(loanService.All(), bookCopyService.All())); TEST(loanService.All(), bookCopyService.All()); } catch (ArgumentNullException) { MessageBox.Show("Value can not be null.", "ArgumentNullException"); } } else { MessageBox.Show("You need to choose a book.", "Error!"); } }
public LibraryForm() { InitializeComponent(); // We create only one context in our application, which gets shared among repositories LibraryContext context = new LibraryContext(); // We use a factory object that will create the repositories as they are needed, it also makes // sure all the repositories created use the same context. RepositoryFactory repFactory = new RepositoryFactory(context); this.bookService = new BookService(repFactory); this.authorService = new AuthorService(repFactory); this.bookCopyService = new BookCopyService(repFactory); this.loanService = new LoanService(repFactory); this.memberService = new MemberService(repFactory); //Set all starting values. ShowAllBooks(bookService.All()); ShowAllBookCopies(bookCopyService.All()); IEnumerable <Loan> allCurrentLoans = loanService.AllBookCopiesOnLoan(); ShowAllCurrentLoans(allCurrentLoans); IEnumerable <BookCopy> bookCopiesNotOnLoan = bookCopyService.AllExcept(allCurrentLoans); ShowAllAvailableCopies(bookCopiesNotOnLoan); FillDropDownMembers(memberService.All().OrderBy(m => m.Name)); FillDropDownAuthors(authorService.All().OrderBy(a => a.Name)); //Subscribe to the Updated() event in each service to update the GUI when changes in the database has been made. bookService.Updated += bookUpdated; bookCopyService.Updated += bookCopyUpdated; authorService.Updated += authorUpdated; memberService.Updated += memberUpdated; loanService.Updated += loanUpdated; }
/// <summary> /// Joins book copies and loans and returns the bookcopies that are not on loan. /// </summary> /// <returns></returns> private IEnumerable <BookCopy> CopyNotOnLoan() { return(copyService.All().Except(copyService.All().Join(loanService.NotReturned(), c => c.Id, l => l.BookCopyId, (c, l) => c))); }
/// <summary> /// The second runworker-method. Calls the ShowAllOverdueBooks-function. /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void BackgroundWorker1_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e) { ShowAllOverDueBooks(copyService.All()); }