OrderForm.cs 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132
  1. using System;
  2. using System.Data;
  3. using System.Windows.Forms;
  4. using Npgsql;
  5. namespace PhotoStudioApp
  6. {
  7. public partial class OrderForm : Form
  8. {
  9. private string _connectionString;
  10. private int? _orderId;
  11. public OrderForm(string connectionString, int? orderId = null)
  12. {
  13. InitializeComponent();
  14. _connectionString = connectionString;
  15. _orderId = orderId;
  16. LoadComboBoxes();
  17. if (_orderId.HasValue)
  18. {
  19. LoadOrderData();
  20. }
  21. }
  22. private void LoadComboBoxes()
  23. {
  24. using (NpgsqlConnection conn = new NpgsqlConnection(_connectionString))
  25. {
  26. conn.Open();
  27. // Загружаем клиентов
  28. string clientSql = "select client_id, last_name || ' ' || first_name as name from clients";
  29. NpgsqlDataAdapter clientAdapter = new NpgsqlDataAdapter(clientSql, conn);
  30. DataTable clientTable = new DataTable();
  31. clientAdapter.Fill(clientTable);
  32. cmbClient.DataSource = clientTable;
  33. cmbClient.DisplayMember = "name";
  34. cmbClient.ValueMember = "client_id";
  35. // Загружаем сотрудников
  36. string employeeSql = "select employee_id, last_name || ' ' || first_name as name from employees";
  37. NpgsqlDataAdapter employeeAdapter = new NpgsqlDataAdapter(employeeSql, conn);
  38. DataTable employeeTable = new DataTable();
  39. employeeAdapter.Fill(employeeTable);
  40. cmbEmployee.DataSource = employeeTable;
  41. cmbEmployee.DisplayMember = "name";
  42. cmbEmployee.ValueMember = "employee_id";
  43. // Загружаем услуги
  44. string serviceSql = "select service_id, service_name from services";
  45. NpgsqlDataAdapter serviceAdapter = new NpgsqlDataAdapter(serviceSql, conn);
  46. DataTable serviceTable = new DataTable();
  47. serviceAdapter.Fill(serviceTable);
  48. cmbService.DataSource = serviceTable;
  49. cmbService.DisplayMember = "service_name";
  50. cmbService.ValueMember = "service_id";
  51. }
  52. }
  53. private void LoadOrderData()
  54. {
  55. using (NpgsqlConnection conn = new NpgsqlConnection(_connectionString))
  56. {
  57. conn.Open();
  58. string sql = "select client_id, employee_id, service_id from orders where order_id = @orderId";
  59. NpgsqlCommand cmd = new NpgsqlCommand(sql, conn);
  60. cmd.Parameters.AddWithValue("@orderId", _orderId.Value);
  61. using (NpgsqlDataReader reader = cmd.ExecuteReader())
  62. {
  63. if (reader.Read())
  64. {
  65. cmbClient.SelectedValue = reader["client_id"];
  66. cmbEmployee.SelectedValue = reader["employee_id"];
  67. cmbService.SelectedValue = reader["service_id"];
  68. }
  69. }
  70. }
  71. }
  72. private void btnSave_Click(object sender, EventArgs e)
  73. {
  74. if (cmbClient.SelectedValue == null || cmbEmployee.SelectedValue == null || cmbService.SelectedValue == null)
  75. {
  76. MessageBox.Show("Выберите все поля");
  77. return;
  78. }
  79. int clientId = (int)cmbClient.SelectedValue;
  80. int employeeId = (int)cmbEmployee.SelectedValue;
  81. int serviceId = (int)cmbService.SelectedValue;
  82. using (NpgsqlConnection conn = new NpgsqlConnection(_connectionString))
  83. {
  84. conn.Open();
  85. string sql;
  86. if (_orderId.HasValue)
  87. {
  88. sql = "update orders set client_id = @clientId, employee_id = @employeeId, service_id = @serviceId where order_id = @orderId";
  89. }
  90. else
  91. {
  92. sql = "insert into orders (client_id, employee_id, service_id, order_date) values (@clientId, @employeeId, @serviceId, @orderDate)";
  93. }
  94. NpgsqlCommand cmd = new NpgsqlCommand(sql, conn);
  95. cmd.Parameters.AddWithValue("@clientId", clientId);
  96. cmd.Parameters.AddWithValue("@employeeId", employeeId);
  97. cmd.Parameters.AddWithValue("@serviceId", serviceId);
  98. if (_orderId.HasValue)
  99. {
  100. cmd.Parameters.AddWithValue("@orderId", _orderId.Value);
  101. }
  102. else
  103. {
  104. cmd.Parameters.AddWithValue("@orderDate", DateTime.Now);
  105. }
  106. cmd.ExecuteNonQuery();
  107. MessageBox.Show("Заказ сохранён");
  108. this.Close();
  109. }
  110. }
  111. private void btnCancel_Click(object sender, EventArgs e)
  112. {
  113. this.Close();
  114. }
  115. }
  116. }