using System; using System.Windows.Forms; namespace WindowsFormsApp4 { public partial class ChangeStatusForm : Form { private int requestId; private string currentStatus; public ChangeStatusForm(int requestId, string currentStatus) { InitializeComponent(); this.requestId = requestId; this.currentStatus = currentStatus; AttachEventHandlers(); LoadAvailableStatuses(); DisplayCurrentStatus(); } private void AttachEventHandlers() { btnSave.Click += BtnSave_Click; btnCancel.Click += BtnCancel_Click; } private void LoadAvailableStatuses() { // Доступные статусы cmbNewStatus.Items.Clear(); if (currentStatus != "new") cmbNewStatus.Items.Add("Новая"); if (currentStatus != "in_progress") cmbNewStatus.Items.Add("В работе"); if (currentStatus != "completed") cmbNewStatus.Items.Add("Выполнена"); if (currentStatus != "cancelled") cmbNewStatus.Items.Add("Отменена"); if (currentStatus != "overdue") cmbNewStatus.Items.Add("Просрочена"); if (cmbNewStatus.Items.Count > 0) cmbNewStatus.SelectedIndex = 0; } private void DisplayCurrentStatus() { string displayStatus = ""; switch (currentStatus) { case "new": displayStatus = "Новая"; break; case "in_progress": displayStatus = "В работе"; break; case "completed": displayStatus = "Выполнена"; break; case "cancelled": displayStatus = "Отменена"; break; case "overdue": displayStatus = "Просрочена"; break; default: displayStatus = currentStatus; break; } lblCurrentStatus.Text = $"Текущий статус: {displayStatus}"; } private string GetStatusValue(string displayStatus) { switch (displayStatus) { case "Новая": return "new"; case "В работе": return "in_progress"; case "Выполнена": return "completed"; case "Отменена": return "cancelled"; case "Просрочена": return "overdue"; default: return ""; } } private void BtnSave_Click(object sender, EventArgs e) { try { if (cmbNewStatus.SelectedItem == null) { MessageBox.Show("Выберите новый статус", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } string selectedStatus = cmbNewStatus.SelectedItem.ToString(); string newStatus = GetStatusValue(selectedStatus); if (DatabaseHelper.UpdateRequestStatus(requestId, newStatus)) { MessageBox.Show("Статус успешно изменён", "Успешно", MessageBoxButtons.OK, MessageBoxIcon.Information); this.DialogResult = DialogResult.OK; this.Close(); } else { MessageBox.Show("Ошибка при изменении статуса", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); } } catch (Exception ex) { MessageBox.Show($"Ошибка: {ex.Message}", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); } } private void BtnCancel_Click(object sender, EventArgs e) { this.DialogResult = DialogResult.Cancel; this.Close(); } } }