ProjectLib/ProjectLibrary/Forms/FBooks.cs

123 lines
4.9 KiB
C#
Raw Normal View History

2024-11-20 19:31:06 +04:00
using ProjectLibrary.Repositores;
using Unity;
namespace ProjectLibrary.Forms
{
public partial class FBooks : Form
{
private readonly IUnityContainer _container;
private readonly IBookRepository _bookRepository;
public FBooks(IUnityContainer container, IBookRepository bookRepository)
{
2024-12-03 20:14:30 +04:00
InitializeComponent(); // Инициализация компонентов формы, включая DataGridView.
2024-11-20 19:31:06 +04:00
_container = container ?? throw new ArgumentNullException(nameof(container));
_bookRepository = bookRepository ?? throw new ArgumentNullException(nameof(bookRepository));
}
private void LoadList()
{
2024-12-03 20:14:30 +04:00
// Привязывает к DataGridView коллекцию книг, полученную из репозитория.
// Устанавливает источник данных DataGridView (dataGridViewBooks) как список объектов из ReadBooks().
2024-11-20 19:31:06 +04:00
dataGridViewBooks.DataSource = _bookRepository.ReadBooks();
}
private bool TryGetIdentifierFromSelectedRow(out int id)
{
id = 0;
2024-12-03 20:14:30 +04:00
// Проверяет, выбрана ли хотя бы одна строка в DataGridView.
2024-11-20 19:31:06 +04:00
if (dataGridViewBooks.SelectedRows.Count < 1)
{
2024-12-03 20:14:30 +04:00
// Если строка не выбрана, отображает сообщение об ошибке.
2024-11-20 19:31:06 +04:00
MessageBox.Show("Нет выбранной записи", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error);
return false;
}
2024-12-03 20:14:30 +04:00
// Извлекает идентификатор (ID) из выбранной строки, используя значение ячейки столбца "Id".
2024-11-20 19:31:06 +04:00
id = Convert.ToInt32(dataGridViewBooks.SelectedRows[0].Cells["Id"].Value);
return true;
}
private void buttonAdd_Click(object sender, EventArgs e)
{
try
{
2024-12-03 20:14:30 +04:00
// Открывает форму добавления книги.
2024-11-20 19:31:06 +04:00
_container.Resolve<FBook>().ShowDialog();
2024-12-03 20:14:30 +04:00
// После добавления обновляет список записей в DataGridView.
2024-11-20 19:31:06 +04:00
LoadList();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "Ошибка при добавлении", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
private void buttonUpdate_Click(object sender, EventArgs e)
{
2024-12-03 20:14:30 +04:00
// Получает ID выбранной строки из DataGridView.
2024-11-20 19:31:06 +04:00
if (!TryGetIdentifierFromSelectedRow(out var findId))
{
return;
}
try
{
2024-12-03 20:14:30 +04:00
// Открывает форму редактирования книги с указанным ID.
2024-11-20 19:31:06 +04:00
var form = _container.Resolve<FBook>();
form.Id = findId;
form.ShowDialog();
2024-12-03 20:14:30 +04:00
// После редактирования обновляет список записей в DataGridView.
2024-11-20 19:31:06 +04:00
LoadList();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "Ошибка при изменении", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
private void buttonRemove_Click(object sender, EventArgs e)
{
2024-12-03 20:14:30 +04:00
// Получает ID выбранной строки из DataGridView.
2024-11-20 19:31:06 +04:00
if (!TryGetIdentifierFromSelectedRow(out var findId))
{
return;
}
2024-12-03 20:14:30 +04:00
// Подтверждение удаления записи.
2024-11-20 19:31:06 +04:00
if (MessageBox.Show("Удалить запись?", "Удаление", MessageBoxButtons.YesNo) != DialogResult.Yes)
{
return;
}
try
{
2024-12-03 20:14:30 +04:00
// Удаляет запись через репозиторий.
2024-11-20 19:31:06 +04:00
_bookRepository.DeleteBook(findId);
2024-12-03 20:14:30 +04:00
// После удаления обновляет список записей в DataGridView.
2024-11-20 19:31:06 +04:00
LoadList();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "Ошибка при удалении", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
private void FBooks_Load(object sender, EventArgs e)
{
try
{
2024-12-03 20:14:30 +04:00
// При загрузке формы заполняет DataGridView данными из репозитория.
2024-11-20 19:31:06 +04:00
LoadList();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "Ошибка при загрузке", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
}
}