Загрузка данных


using System;
using LibraryApp.Console.Models;
using LibraryApp.WinForms.Views;

namespace LibraryApp.WinForms.Presenters
{
    public class BookPresenter
    {
        private IBookView _view;
        private Library _library;

        public BookPresenter(IBookView view)
        {
            _view = view;
            _library = new Library();

            // Подписка на события View
            _view.AddBook += OnAddBook;
            _view.IssueBook += OnIssueBook;
            _view.ReturnBook += OnReturnBook;
            _view.RefreshBooks += OnRefreshBooks;

            // Загрузка начальных данных
            LoadTestData();
            _view.ShowBooks(_library.GetAllBooks());
        }

        private void OnAddBook(object sender, EventArgs e)
        {
            try
            {
                if (string.IsNullOrEmpty(_view.BookTitle) ||
                    string.IsNullOrEmpty(_view.BookAuthor) ||
                    string.IsNullOrEmpty(_view.BookYear))
                {
                    _view.ShowMessage("Заполните все поля!");
                    return;
                }

                int year = int.Parse(_view.BookYear);
                _library.AddBook(_view.BookTitle, _view.BookAuthor, year);
                _view.ShowBooks(_library.GetAllBooks());
                _view.ClearFields();
                _view.ShowMessage("Книга добавлена успешно!");
            }
            catch (Exception ex)
            {
                _view.ShowMessage($"Ошибка: {ex.Message}");
            }
        }

        private void OnIssueBook(object sender, EventArgs e)
        {
            try
            {
                if (string.IsNullOrEmpty(_view.SelectedBookId))
                {
                    _view.ShowMessage("Выберите книгу!");
                    return;
                }

                int id = int.Parse(_view.SelectedBookId);
                _library.IssueBook(id);
                _view.ShowBooks(_library.GetAllBooks());
            }
            catch (Exception ex)
            {
                _view.ShowMessage($"Ошибка: {ex.Message}");
            }
        }

        private void OnReturnBook(object sender, EventArgs e)
        {
            try
            {
                if (string.IsNullOrEmpty(_view.SelectedBookId))
                {
                    _view.ShowMessage("Выберите книгу!");
                    return;
                }

                int id = int.Parse(_view.SelectedBookId);
                _library.ReturnBook(id);
                _view.ShowBooks(_library.GetAllBooks());
            }
            catch (Exception ex)
            {
                _view.ShowMessage($"Ошибка: {ex.Message}");
            }
        }

        private void OnRefreshBooks(object sender, EventArgs e)
        {
            _view.ShowBooks(_library.GetAllBooks());
        }

        private void LoadTestData()
        {
            _library.AddBook("Война и мир", "Лев Толстой", 1869);
            _library.AddBook("Преступление и наказание", "Федор Достоевский", 1866);
            _library.AddBook("Мастер и Маргарита", "Михаил Булгаков", 1967);
        }
    }
}