using System; using System.Data; using System.Windows.Forms; namespace WindowsFormsApp4 { public partial class ManagersForm : Form { private DataTable managersTable; public ManagersForm() { InitializeComponent(); AttachEventHandlers(); LoadManagers(); ConfigureGrid(); } private void AttachEventHandlers() { btnRefresh.Click += BtnRefresh_Click; btnAdd.Click += BtnAdd_Click; btnEdit.Click += BtnEdit_Click; btnDelete.Click += BtnDelete_Click; btnBack.Click += BtnBack_Click; } private void LoadManagers() { managersTable = DatabaseHelper.GetManagers(); dgvManagers.DataSource = managersTable; ConfigureGrid(); } private void ConfigureGrid() { if (dgvManagers.Columns.Count == 0) return; // Настройка заголовков if (dgvManagers.Columns.Contains("id")) dgvManagers.Columns["id"].HeaderText = "ID"; if (dgvManagers.Columns.Contains("last_name")) dgvManagers.Columns["last_name"].HeaderText = "Фамилия"; if (dgvManagers.Columns.Contains("first_name")) dgvManagers.Columns["first_name"].HeaderText = "Имя"; if (dgvManagers.Columns.Contains("middle_name")) dgvManagers.Columns["middle_name"].HeaderText = "Отчество"; if (dgvManagers.Columns.Contains("phone")) dgvManagers.Columns["phone"].HeaderText = "Телефон"; // Настройка цвета строк dgvManagers.DefaultCellStyle.BackColor = System.Drawing.Color.FromArgb(50, 56, 67); dgvManagers.DefaultCellStyle.ForeColor = System.Drawing.Color.FromArgb(203, 232, 87); dgvManagers.DefaultCellStyle.SelectionBackColor = System.Drawing.Color.FromArgb(198, 141, 255); dgvManagers.DefaultCellStyle.SelectionForeColor = System.Drawing.Color.FromArgb(50, 56, 67); dgvManagers.ColumnHeadersDefaultCellStyle.BackColor = System.Drawing.Color.FromArgb(198, 141, 255); dgvManagers.ColumnHeadersDefaultCellStyle.ForeColor = System.Drawing.Color.FromArgb(50, 56, 67); dgvManagers.EnableHeadersVisualStyles = false; dgvManagers.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill; } private void BtnRefresh_Click(object sender, EventArgs e) { LoadManagers(); } private void BtnAdd_Click(object sender, EventArgs e) { ManagerEditForm form = new ManagerEditForm(); if (form.ShowDialog() == DialogResult.OK) { LoadManagers(); MessageBox.Show("Менеджер успешно добавлен", "Успешно", MessageBoxButtons.OK, MessageBoxIcon.Information); } } private void BtnEdit_Click(object sender, EventArgs e) { if (dgvManagers.CurrentRow == null) { MessageBox.Show("Выберите менеджера для редактирования", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } int managerId = Convert.ToInt32(dgvManagers.CurrentRow.Cells["id"].Value); string lastName = dgvManagers.CurrentRow.Cells["last_name"].Value.ToString(); string firstName = dgvManagers.CurrentRow.Cells["first_name"].Value.ToString(); string middleName = dgvManagers.CurrentRow.Cells["middle_name"].Value?.ToString(); string phone = dgvManagers.CurrentRow.Cells["phone"].Value.ToString(); ManagerEditForm form = new ManagerEditForm(managerId, lastName, firstName, middleName, phone); if (form.ShowDialog() == DialogResult.OK) { LoadManagers(); MessageBox.Show("Менеджер успешно обновлён", "Успешно", MessageBoxButtons.OK, MessageBoxIcon.Information); } } private void BtnDelete_Click(object sender, EventArgs e) { if (dgvManagers.CurrentRow == null) { MessageBox.Show("Выберите менеджера для удаления", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } int managerId = Convert.ToInt32(dgvManagers.CurrentRow.Cells["id"].Value); string managerName = dgvManagers.CurrentRow.Cells["last_name"].Value.ToString() + " " + dgvManagers.CurrentRow.Cells["first_name"].Value.ToString(); // Проверка, есть ли у менеджера активные заявки int activeRequests = DatabaseHelper.GetManagerActiveRequests(managerId); if (activeRequests > 0) { MessageBox.Show($"Нельзя удалить менеджера {managerName}.\nУ него есть {activeRequests} активных заявок.", "Невозможно удалить", MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } DialogResult result = MessageBox.Show($"Удалить менеджера {managerName}?", "Подтверждение удаления", MessageBoxButtons.YesNo, MessageBoxIcon.Warning); if (result == DialogResult.Yes) { if (DatabaseHelper.DeleteManager(managerId)) { LoadManagers(); MessageBox.Show("Менеджер успешно удалён", "Успешно", MessageBoxButtons.OK, MessageBoxIcon.Information); } else { MessageBox.Show("Ошибка при удалении менеджера", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); } } } private void BtnBack_Click(object sender, EventArgs e) { this.Close(); } } }