NewRequestForm.cs 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  1. using System;
  2. using System.Data;
  3. using System.Windows.Forms;
  4. namespace WindowsFormsApp4
  5. {
  6. public partial class NewRequestForm : Form
  7. {
  8. public NewRequestForm()
  9. {
  10. InitializeComponent();
  11. AttachEventHandlers();
  12. LoadAddresses();
  13. }
  14. private void AttachEventHandlers()
  15. {
  16. btnSave.Click += BtnSave_Click;
  17. btnCancel.Click += BtnCancel_Click;
  18. }
  19. private void LoadAddresses()
  20. {
  21. try
  22. {
  23. // Проверяем, что клиент вошёл в систему
  24. if (!Session.CurrentUser.ClientId.HasValue)
  25. {
  26. MessageBox.Show("Ошибка: не удалось определить ID клиента",
  27. "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error);
  28. btnSave.Enabled = false;
  29. return;
  30. }
  31. DataTable addresses = DatabaseHelper.GetClientAddresses(Session.CurrentUser.ClientId.Value);
  32. cmbAddress.DisplayMember = "address_text";
  33. cmbAddress.ValueMember = "address_id";
  34. cmbAddress.DataSource = addresses;
  35. if (cmbAddress.Items.Count == 0)
  36. {
  37. MessageBox.Show("У вас нет сохранённых адресов. Добавьте адрес в личном кабинете.",
  38. "Внимание", MessageBoxButtons.OK, MessageBoxIcon.Warning);
  39. btnSave.Enabled = false;
  40. }
  41. }
  42. catch (Exception ex)
  43. {
  44. MessageBox.Show($"Ошибка загрузки адресов: {ex.Message}", "Ошибка",
  45. MessageBoxButtons.OK, MessageBoxIcon.Error);
  46. }
  47. }
  48. private void BtnSave_Click(object sender, EventArgs e)
  49. {
  50. try
  51. {
  52. // Проверка выбора адреса
  53. if (cmbAddress.SelectedValue == null)
  54. {
  55. MessageBox.Show("Выберите адрес", "Ошибка",
  56. MessageBoxButtons.OK, MessageBoxIcon.Warning);
  57. return;
  58. }
  59. // Проверка даты и времени
  60. DateTime measurementDateTime = dtpMeasurementDate.Value.Date + dtpMeasurementTime.Value.TimeOfDay;
  61. if (measurementDateTime < DateTime.Now)
  62. {
  63. MessageBox.Show("Дата и время замера не могут быть в прошлом", "Ошибка",
  64. MessageBoxButtons.OK, MessageBoxIcon.Warning);
  65. return;
  66. }
  67. int newRequestId = DatabaseHelper.CreateRequest(
  68. Session.CurrentUser.ClientId.Value,
  69. measurementDateTime
  70. );
  71. if (newRequestId > 0)
  72. {
  73. MessageBox.Show($"Заявка №{newRequestId} успешно создана!", "Успешно",
  74. MessageBoxButtons.OK, MessageBoxIcon.Information);
  75. this.DialogResult = DialogResult.OK;
  76. this.Close();
  77. }
  78. else
  79. {
  80. MessageBox.Show("Ошибка при создании заявки", "Ошибка",
  81. MessageBoxButtons.OK, MessageBoxIcon.Error);
  82. }
  83. }
  84. catch (Exception ex)
  85. {
  86. MessageBox.Show($"Ошибка: {ex.Message}", "Ошибка",
  87. MessageBoxButtons.OK, MessageBoxIcon.Error);
  88. }
  89. }
  90. private void BtnCancel_Click(object sender, EventArgs e)
  91. {
  92. this.DialogResult = DialogResult.Cancel;
  93. this.Close();
  94. }
  95. }
  96. }