using MySql.Data.MySqlClient; using System; using System.Collections; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Drawing.Imaging; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using System.Xml.Linq; using static NeshinaPolina2111.AddProduction; namespace NeshinaPolina2111 { public partial class EditProduction : Form { public EditProduction() { InitializeComponent(); } public int ProductId { get; set; } private void btnEdit_Click(object sender, EventArgs e) { //проверки все if (ProductId <= 0) { MessageBox.Show("ID материала не задан.", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); this.Close(); return; } if (string.IsNullOrEmpty(tbArticle.Text)) { MessageBox.Show("Введите Артикул", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); tbArticle.Focus(); return; } if (string.IsNullOrEmpty(tbMinPrice.Text)) { MessageBox.Show("Введите Минимальную цену", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); tbMinPrice.Focus(); return; } if (string.IsNullOrEmpty(tbName.Text)) { MessageBox.Show("Введите Название", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); tbName.Focus(); return; } if (string.IsNullOrEmpty(tbWidth.Text)) { MessageBox.Show("Введите Ширину", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); tbWidth.Focus(); return; } if (cmbProduct.SelectedItem == null) { MessageBox.Show("Выберите тип продукта.", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); cmbProduct.Focus(); return; } if (!decimal.TryParse(tbMinPrice.Text, out decimal price) || price < 0) { MessageBox.Show("Введите корректную цену (неотрицательное число)", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); tbMinPrice.Focus(); return; } var typeItem = (ComboItem)cmbProduct.SelectedItem; string upquery = @" update Products_import set Name = @Name, Article = @Article, MinPrice = @MinPrice, Width = @Width, idProduct_type_import = @idProduct_type_import where idProducts_import = @idProducts_import"; var conn = DB.GetInstance().GetConnection(); if (conn.State == ConnectionState.Closed) conn.Open(); using (var cmd = new MySqlCommand(upquery, conn)) { cmd.Parameters.AddWithValue("@idProduct_type_import", typeItem.Id); cmd.Parameters.AddWithValue("@Name", tbName.Text.Trim()); cmd.Parameters.AddWithValue("@Article", tbArticle.Text.Trim()); cmd.Parameters.AddWithValue("@MinPrice", price); cmd.Parameters.AddWithValue("@Width", tbWidth.Text.Trim()); cmd.Parameters.AddWithValue("@idProducts_import", ProductId); try { int rowsAffected = cmd.ExecuteNonQuery(); if (rowsAffected > 0) { MessageBox.Show("Материал успешно обновлён!", "Успех", MessageBoxButtons.OK, MessageBoxIcon.Information); this.DialogResult = DialogResult.OK; this.Close(); } else { MessageBox.Show("Не удалось обновить материал. Возможно, он был удалён.", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); this.DialogResult = DialogResult.Cancel; this.Close(); } } catch (Exception ex) { MessageBox.Show($"Ошибка при обновлении:\n{ex.ToString()}", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); } } } private void LoadProduct() //загрузка продуктов { if (ProductId <= 0) { MessageBox.Show("Некорректный ID материала.", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); this.DialogResult = DialogResult.Cancel; this.Close(); return; } LoadTypes(); string query = @" select p.idProduct_type_import, p.Name, p.Article, p.MinPrice, p.Width from Products_import p WHERE p.idProducts_import = @id"; var conn = DB.GetInstance().GetConnection(); if(conn.State == ConnectionState.Closed) conn.Open(); using (var cmd = new MySqlCommand(query, conn)) { cmd.Parameters.AddWithValue("@id", ProductId); using (var reader = cmd.ExecuteReader()) { if (reader.Read()) { tbName.Text = reader.GetString("Name"); tbArticle.Text = reader.GetString("Article"); decimal price = reader.GetDecimal("MinPrice"); tbMinPrice.Text = price.ToString(); tbWidth.Text = reader.GetString("Width"); int productTypeId = reader.GetInt32("idProduct_type_import"); SelectComboBoxItem(cmbProduct, productTypeId); } else { MessageBox.Show("Материал не найден. Возможно, он был удалён.", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); this.DialogResult = DialogResult.Cancel; this.Close(); } } } } private void SelectComboBoxItem(ComboBox comboBox, int id) { foreach (ComboItem item in comboBox.Items) { if (item.Id == id) { comboBox.SelectedItem = item; break; } } } private void LoadTypes() //ЗАГРУЗКА ТИПОВ { string query = "select idProduct_type_import, TypeProduction from Product_type_import"; var conn = DB.GetInstance().GetConnection(); if (conn.State == ConnectionState.Closed) { conn.Open(); } using (var cmd = new MySqlCommand(query, conn)) { using (var reader = cmd.ExecuteReader()) { while (reader.Read()) { cmbProduct.Items.Add(new ComboItem { Id = reader.GetInt32("idProduct_type_import"), Name = reader.GetString("TypeProduction") }); } } } } private void btnExit_Click(object sender, EventArgs e) { this.Hide(); } private void EditProduction_Load(object sender, EventArgs e) { LoadProduct(); } } }