using System; using System.Data; using System.Windows.Forms; using Npgsql; namespace PhotoStudioApp { public partial class OrderForm : Form { private string _connectionString; private int? _orderId; public OrderForm(string connectionString, int? orderId = null) { InitializeComponent(); _connectionString = connectionString; _orderId = orderId; LoadComboBoxes(); if (_orderId.HasValue) { LoadOrderData(); } } private void LoadComboBoxes() { using (NpgsqlConnection conn = new NpgsqlConnection(_connectionString)) { conn.Open(); // Загружаем клиентов string clientSql = "select client_id, last_name || ' ' || first_name as name from clients"; NpgsqlDataAdapter clientAdapter = new NpgsqlDataAdapter(clientSql, conn); DataTable clientTable = new DataTable(); clientAdapter.Fill(clientTable); cmbClient.DataSource = clientTable; cmbClient.DisplayMember = "name"; cmbClient.ValueMember = "client_id"; // Загружаем сотрудников string employeeSql = "select employee_id, last_name || ' ' || first_name as name from employees"; NpgsqlDataAdapter employeeAdapter = new NpgsqlDataAdapter(employeeSql, conn); DataTable employeeTable = new DataTable(); employeeAdapter.Fill(employeeTable); cmbEmployee.DataSource = employeeTable; cmbEmployee.DisplayMember = "name"; cmbEmployee.ValueMember = "employee_id"; // Загружаем услуги string serviceSql = "select service_id, service_name from services"; NpgsqlDataAdapter serviceAdapter = new NpgsqlDataAdapter(serviceSql, conn); DataTable serviceTable = new DataTable(); serviceAdapter.Fill(serviceTable); cmbService.DataSource = serviceTable; cmbService.DisplayMember = "service_name"; cmbService.ValueMember = "service_id"; } } private void LoadOrderData() { using (NpgsqlConnection conn = new NpgsqlConnection(_connectionString)) { conn.Open(); string sql = "select client_id, employee_id, service_id from orders where order_id = @orderId"; NpgsqlCommand cmd = new NpgsqlCommand(sql, conn); cmd.Parameters.AddWithValue("@orderId", _orderId.Value); using (NpgsqlDataReader reader = cmd.ExecuteReader()) { if (reader.Read()) { cmbClient.SelectedValue = reader["client_id"]; cmbEmployee.SelectedValue = reader["employee_id"]; cmbService.SelectedValue = reader["service_id"]; } } } } private void btnSave_Click(object sender, EventArgs e) { if (cmbClient.SelectedValue == null || cmbEmployee.SelectedValue == null || cmbService.SelectedValue == null) { MessageBox.Show("Выберите все поля"); return; } int clientId = (int)cmbClient.SelectedValue; int employeeId = (int)cmbEmployee.SelectedValue; int serviceId = (int)cmbService.SelectedValue; using (NpgsqlConnection conn = new NpgsqlConnection(_connectionString)) { conn.Open(); string sql; if (_orderId.HasValue) { sql = "update orders set client_id = @clientId, employee_id = @employeeId, service_id = @serviceId where order_id = @orderId"; } else { sql = "insert into orders (client_id, employee_id, service_id, order_date) values (@clientId, @employeeId, @serviceId, @orderDate)"; } NpgsqlCommand cmd = new NpgsqlCommand(sql, conn); cmd.Parameters.AddWithValue("@clientId", clientId); cmd.Parameters.AddWithValue("@employeeId", employeeId); cmd.Parameters.AddWithValue("@serviceId", serviceId); if (_orderId.HasValue) { cmd.Parameters.AddWithValue("@orderId", _orderId.Value); } else { cmd.Parameters.AddWithValue("@orderDate", DateTime.Now); } cmd.ExecuteNonQuery(); MessageBox.Show("Заказ сохранён"); this.Close(); } } private void btnCancel_Click(object sender, EventArgs e) { this.Close(); } } }