using System; using System.Windows.Forms; using RestaurantApp.DAL; using RestaurantApp.Models; namespace RestaurantApp { public partial class OrderItemEditForm : Form { private OrderRepository repo = new OrderRepository(); private OrderItem item; public OrderItemEditForm(OrderItem orderItem) { InitializeComponent(); this.item = orderItem; LoadData(); btnSave.Click += BtnSave_Click; btnCancel.Click += (s, e) => DialogResult = DialogResult.Cancel; } private void LoadData() { lblDishName.Text = item.DishName; numQuantity.Value = item.Quantity; txtNotes.Text = item.Notes; // Выбираем статус в комбобоксе int index = cmbStatus.FindStringExact(item.Status); if (index >= 0) cmbStatus.SelectedIndex = index; // Блокируем изменение статуса для закрытых заказов // (можно добавить логику) } private void BtnSave_Click(object sender, EventArgs e) { try { // Обновляем количество if (numQuantity.Value != item.Quantity) { // Тут нужно обновить количество через SQL using (var conn = Database.GetConnection()) using (var cmd = new Npgsql.NpgsqlCommand( "UPDATE order_item SET quantity = @q WHERE order_item_id = @id", conn)) { cmd.Parameters.AddWithValue("q", (int)numQuantity.Value); cmd.Parameters.AddWithValue("id", item.OrderItemId); cmd.ExecuteNonQuery(); } } // Обновляем статус if (cmbStatus.Text != item.Status) { repo.UpdateItemStatus(item.OrderItemId, cmbStatus.Text); } // Обновляем примечание if (txtNotes.Text != item.Notes) { using (var conn = Database.GetConnection()) using (var cmd = new Npgsql.NpgsqlCommand( "UPDATE order_item SET notes = @n WHERE order_item_id = @id", conn)) { cmd.Parameters.AddWithValue("n", string.IsNullOrEmpty(txtNotes.Text) ? (object)DBNull.Value : txtNotes.Text); cmd.Parameters.AddWithValue("id", item.OrderItemId); cmd.ExecuteNonQuery(); } } DialogResult = DialogResult.OK; Close(); } catch (Exception ex) { MessageBox.Show($"Ошибка: {ex.Message}"); } } } }