using System; using System.Data; using System.Windows.Forms; namespace WindowsFormsApp4 { public partial class NewRequestForm : Form { public NewRequestForm() { InitializeComponent(); AttachEventHandlers(); LoadAddresses(); } private void AttachEventHandlers() { btnSave.Click += BtnSave_Click; btnCancel.Click += BtnCancel_Click; } private void LoadAddresses() { try { // Проверяем, что клиент вошёл в систему if (!Session.CurrentUser.ClientId.HasValue) { MessageBox.Show("Ошибка: не удалось определить ID клиента", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); btnSave.Enabled = false; return; } DataTable addresses = DatabaseHelper.GetClientAddresses(Session.CurrentUser.ClientId.Value); cmbAddress.DisplayMember = "address_text"; cmbAddress.ValueMember = "address_id"; cmbAddress.DataSource = addresses; if (cmbAddress.Items.Count == 0) { MessageBox.Show("У вас нет сохранённых адресов. Добавьте адрес в личном кабинете.", "Внимание", MessageBoxButtons.OK, MessageBoxIcon.Warning); btnSave.Enabled = false; } } catch (Exception ex) { MessageBox.Show($"Ошибка загрузки адресов: {ex.Message}", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); } } private void BtnSave_Click(object sender, EventArgs e) { try { // Проверка выбора адреса if (cmbAddress.SelectedValue == null) { MessageBox.Show("Выберите адрес", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } // Проверка даты и времени DateTime measurementDateTime = dtpMeasurementDate.Value.Date + dtpMeasurementTime.Value.TimeOfDay; if (measurementDateTime < DateTime.Now) { MessageBox.Show("Дата и время замера не могут быть в прошлом", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } int newRequestId = DatabaseHelper.CreateRequest( Session.CurrentUser.ClientId.Value, measurementDateTime ); if (newRequestId > 0) { MessageBox.Show($"Заявка №{newRequestId} успешно создана!", "Успешно", 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(); } } }