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);
}
}
}