public BarcodeScannerController(TakenBookPresenter takenBookPresenter, BookPresenter bookPresenter,
                                 ScannerPresenter scannerPresenter)
 {
     _takenBookPresenter = takenBookPresenter;
     _bookPresenter      = bookPresenter;
     _scannerPresenter   = scannerPresenter;
 }
        private void ListBooks_Click(object sender, EventArgs e)
        {
            BookList      model     = new BookList();
            BookFormView  view      = new BookFormView();
            BookPresenter presenter = new BookPresenter(model, view);

            view.Show();
        }
예제 #3
0
    private void OnEditBook(object sender, EventArgs e)
    {
        // Проверяем, есть ли хотя бы один выделенный элемент в списке книг
        if (View.ListView.SelectedItems.Count == 0)
        {
            return;
        }

        // Коллекция выделенных элементов в списке книг представления.
        // Делаем копию, потому что View.ListView.SelectedIndices возвращает ссылку
        // на актуальную коллекцию, а она будет очищена при вызове UpdateView.
        var selectedIndices = new int[View.ListView.SelectedIndices.Count];

        View.ListView.SelectedIndices.CopyTo(selectedIndices, 0);

        // Если выделенных элементов несколько, то берем первый из них
        int  selectedIndex = selectedIndices[0];
        Book book          = (Book)View.ListView.Items[selectedIndex].Tag;

        var bookPresenter = new BookPresenter(Model, new BookForm());

        bookPresenter.Title         = "Изменение существующей книги";
        bookPresenter.AuthorFk      = book.AuthorFk;
        bookPresenter.View.BookName = book.Name;
        bookPresenter.View.Pages    = book.Pages;
        bookPresenter.View.Price    = book.Price;
        bookPresenter.PressFk       = book.PressFk;
        if (((Form)bookPresenter.View).ShowDialog() == DialogResult.OK)
        {
            try
            {
                book.AuthorFk = bookPresenter.AuthorFk;
                book.Name     = bookPresenter.View.BookName;
                book.Pages    = bookPresenter.View.Pages;
                book.Price    = bookPresenter.View.Price;
                book.PressFk  = bookPresenter.PressFk;
                Model.BookRepository.Update(book);
            }
            catch (Exception ex)
            {
                MessageBox.Show("Произошла ошибка при изменении информации о книге.", "Что-то пошло не так",
                                MessageBoxButtons.OK, MessageBoxIcon.Error);
                Utils.Log.Trace(ex);
            }

            // Пересчитываем список книг
            UpdateView();
        }

        // Восстанавливаем выделение
        View.ListView.Select();
        foreach (int index in selectedIndices)
        {
            View.ListView.Items[index].Selected = true;
            View.ListView.EnsureVisible(index);
        }
    }
예제 #4
0
    private void OnAddBook(object sender, EventArgs e)
    {
        // Таблица Authors не должна быть пустой, поскольку внешний ключ AuthorFk таблицы Books не может быть NULL
        if (Model.AuthorRepository.GetAll().ToList().Count == 0)
        {
            MessageBox.Show("Справочник \"Авторы\" пуст. Необходимо, чтобы он содержал хотя бы одного автора.",
                            "Что-то пошло не так", MessageBoxButtons.OK, MessageBoxIcon.Error);
            return;
        }
        // Таблица Presses не должна быть пустой, поскольку внешний ключ PressFk таблицы Books не может быть NULL
        if (Model.PressRepository.GetAll().ToList().Count == 0)
        {
            MessageBox.Show("Справочник \"Издательства\" пуст. Необходимо, чтобы он содержал хотя бы одно издательство.",
                            "Что-то пошло не так", MessageBoxButtons.OK, MessageBoxIcon.Error);
            return;
        }

        var bookPresenter = new BookPresenter(Model, new BookForm());

        bookPresenter.Title    = "Новая книга";
        bookPresenter.AuthorFk = 0;
        bookPresenter.PressFk  = 0;
        if (((Form)bookPresenter.View).ShowDialog() == DialogResult.OK)
        {
            try
            {
                Model.BookRepository.Add(new Book
                {
                    Id       = 0,
                    AuthorFk = bookPresenter.AuthorFk,
                    Name     = bookPresenter.View.BookName,
                    Pages    = bookPresenter.View.Pages,
                    Price    = bookPresenter.View.Price,
                    PressFk  = bookPresenter.PressFk
                });
            }
            catch (Exception ex)
            {
                MessageBox.Show("Произошла ошибка при добавлении новой книги.", "Что-то пошло не так",
                                MessageBoxButtons.OK, MessageBoxIcon.Error);
                Utils.Log.Trace(ex);
            }

            // Пересчитываем список книг
            UpdateView();

            // Выделяем добавленную (последнюю в списке) книгу
            View.ListView.Select();
            View.ListView.Items[View.ListView.Items.Count - 1].Selected = true;
            View.ListView.EnsureVisible(View.ListView.Items.Count - 1);
        }
        else
        {
            // Восстанавливаем фокус и выделение книг
            View.ListView.Select();
        }
    }
예제 #5
0
        public void ReserveTest()
        {
            bool success         = false;
            var  adminController = new AdminPresenter();
            var  bookController  = new BookPresenter();

            var successfullAdd = adminController.AddBook(reservationBook);

            bookController.Reserve(reservationBook.SerialNumber, user.Username);
            var book = bookRepository.GetByID(reservationBook.SerialNumber);

            if (book.Status.Equals("Reserved"))
            {
                success = true;
            }
            var successfulDelete = adminController.RemoveBook(reservationBook);

            Assert.IsTrue(success);
        }
예제 #6
0
        public void RenewLoanTest()
        {
            bool success         = false;
            var  adminController = new AdminPresenter();
            var  bookController  = new BookPresenter();
            var  successfullAdd  = adminController.AddBook(loanBook);

            bookController.Loan(loanBook.SerialNumber, user.Username);
            var loan = loanRepository.GetByBookId(loanBook.SerialNumber);
            var book = bookRepository.GetByID(loanBook.SerialNumber);

            if (book.Status.Equals("Unavaliable"))
            {
                var successfullLoanRenewal = adminController.RenewLoan(loan.Id);
                success = successfullLoanRenewal;
            }
            var successfulDelete = adminController.RemoveBook(loanBook);

            Assert.IsTrue(success);
        }
예제 #7
0
 public BookCatalogForm(string username)
 {
     _bookPresenter = new BookPresenter();
     _username      = username;
     InitializeComponent();
 }
 public BookController(BookPresenter bookPresenter)
 {
     _bookPresenter = bookPresenter;
 }
 public BookHistoryController(BookPresenter bookPresenter)
 {
     _bookPresenter = bookPresenter;
 }