196 lines
8.0 KiB
C#
196 lines
8.0 KiB
C#
using MySql.Data.MySqlClient;
|
||
using System;
|
||
using System.Collections.Generic;
|
||
using System.ComponentModel;
|
||
using System.Data;
|
||
using System.Diagnostics;
|
||
using System.Drawing;
|
||
using System.Linq;
|
||
using System.Text;
|
||
using System.Threading.Tasks;
|
||
using System.Windows.Forms;
|
||
|
||
namespace NeshinaPolina2111
|
||
{
|
||
public partial class EditMaterials : Form
|
||
{
|
||
public EditMaterials()
|
||
{
|
||
InitializeComponent();
|
||
}
|
||
public int MaterialId { get; set; } //ДЛЯ ПЕРЕХОДА
|
||
|
||
private void EditMaterials_Load(object sender, EventArgs e)
|
||
{
|
||
LoadTypes();
|
||
LoadUnits();
|
||
LoadMaterialData();
|
||
}
|
||
|
||
private void LoadTypes() //ТИПЫ
|
||
{
|
||
string query = "SELECT idMaterial_type_import, Name FROM Material_type_import ORDER BY Name";
|
||
var conn = DB.GetInstance().GetConnection();
|
||
if (conn.State == ConnectionState.Closed)
|
||
conn.Open();
|
||
|
||
using (var cmd = new MySqlCommand(query, conn))
|
||
{
|
||
var adapter = new MySqlDataAdapter(cmd);
|
||
DataTable dt = new DataTable();
|
||
adapter.Fill(dt);
|
||
|
||
cmbType.DisplayMember = "Name";
|
||
cmbType.ValueMember = "idMaterial_type_import";
|
||
cmbType.DataSource = dt;
|
||
}
|
||
}
|
||
|
||
private void LoadUnits() //ИЗМЕРЕНИЕ ЕДИНИЦЫ
|
||
{
|
||
string query = "SELECT idUnit, Name FROM Unit ORDER BY Name";
|
||
var conn = DB.GetInstance().GetConnection();
|
||
if (conn.State == ConnectionState.Closed)
|
||
conn.Open();
|
||
using (var cmd = new MySqlCommand(query, conn))
|
||
{
|
||
var adapter = new MySqlDataAdapter(cmd);
|
||
DataTable dt = new DataTable();
|
||
adapter.Fill(dt);
|
||
|
||
cmbUnit.DisplayMember = "Name";
|
||
cmbUnit.ValueMember = "idUnit";
|
||
cmbUnit.DataSource = dt;
|
||
}
|
||
}
|
||
|
||
private void LoadMaterialData() //САМА ТАБЛИЦА
|
||
{
|
||
string query = @"
|
||
SELECT
|
||
m.Name,
|
||
m.idMaterial_type_import,
|
||
m.PriceUnitMaterial,
|
||
m.Quantity,
|
||
m.MinQuantity,
|
||
m.QuantityPack,
|
||
m.idUnit
|
||
FROM Materials_import m
|
||
WHERE m.idMaterials_import = @idMaterials_import";
|
||
var conn = DB.GetInstance().GetConnection();
|
||
if (conn.State == ConnectionState.Closed)
|
||
conn.Open();
|
||
using (var cmd = new MySqlCommand(query, conn))
|
||
{
|
||
cmd.Parameters.AddWithValue("@idMaterials_import", MaterialId);
|
||
|
||
var reader = cmd.ExecuteReader();
|
||
if (reader.Read())
|
||
{
|
||
txtName.Text = reader["Name"].ToString();
|
||
txtPrice.Text = reader["PriceUnitMaterial"].ToString();
|
||
txtQuantity.Text = reader["Quantity"].ToString();
|
||
txtMinQuantity.Text = reader["MinQuantity"].ToString();
|
||
txtQuantityPack.Text = reader["QuantityPack"].ToString();
|
||
cmbType.SelectedValue = reader["idMaterial_type_import"];
|
||
cmbUnit.SelectedValue = reader["idUnit"];
|
||
}
|
||
else
|
||
{
|
||
MessageBox.Show("Материал не найден.", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
||
DialogResult = DialogResult.Cancel;
|
||
Close();
|
||
}
|
||
reader.Close();
|
||
}
|
||
}
|
||
|
||
private void btnEdit_Click(object sender, EventArgs e) //СОХРАНЕНИЕ
|
||
{
|
||
if (string.IsNullOrWhiteSpace(txtName.Text)) //ПРОВЕРКИ НА ВСЁ
|
||
{
|
||
MessageBox.Show("Введите название материала.", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Warning);
|
||
return;
|
||
}
|
||
|
||
if (cmbType.SelectedValue == null || cmbUnit.SelectedValue == null)
|
||
{
|
||
MessageBox.Show("Выберите тип материала и единицу измерения.", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Warning);
|
||
return;
|
||
}
|
||
decimal price;
|
||
int quantity, minQuantity, quantityPack;
|
||
|
||
if (!decimal.TryParse(txtPrice.Text, out price) || price < 0)
|
||
{
|
||
MessageBox.Show("Цена должна быть числом ≥ 0.", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Warning);
|
||
return;
|
||
}
|
||
if (!int.TryParse(txtQuantity.Text, out quantity) || quantity < 0)
|
||
{
|
||
MessageBox.Show("Количество должно быть целым числом ≥ 0.", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Warning);
|
||
return;
|
||
}
|
||
if (!int.TryParse(txtMinQuantity.Text, out minQuantity) || minQuantity < 0)
|
||
{
|
||
MessageBox.Show("Минимальное количество должно быть целым числом ≥ 0.", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Warning);
|
||
return;
|
||
}
|
||
|
||
if (!int.TryParse(txtQuantityPack.Text, out quantityPack) || quantityPack < 0)
|
||
{
|
||
MessageBox.Show("Количество в упаковке должно быть целым числом ≥ 0.", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Warning);
|
||
return;
|
||
}//ОБНОВЛЕНИЕ ТУТ
|
||
string updateQuery = @"
|
||
UPDATE Materials_import SET
|
||
Name = @Name,
|
||
idMaterial_type_import = @idMaterial_type_import,
|
||
PriceUnitMaterial = @PriceUnitMaterial,
|
||
Quantity = @Quantity,
|
||
MinQuantity = @MinQuantity,
|
||
QuantityPack = @QuantityPack,
|
||
idUnit = @idUnit
|
||
WHERE idMaterials_import = @idMaterials_import";
|
||
var conn = DB.GetInstance().GetConnection();
|
||
if (conn.State == ConnectionState.Closed)
|
||
conn.Open();
|
||
using (var cmd = new MySqlCommand(updateQuery, conn))
|
||
{
|
||
cmd.Parameters.AddWithValue("@Name", txtName.Text.Trim());
|
||
cmd.Parameters.AddWithValue("@idMaterial_type_import", cmbType.SelectedValue);
|
||
cmd.Parameters.AddWithValue("@PriceUnitMaterial", price);
|
||
cmd.Parameters.AddWithValue("@Quantity", quantity);
|
||
cmd.Parameters.AddWithValue("@MinQuantity", minQuantity);
|
||
cmd.Parameters.AddWithValue("@QuantityPack", quantityPack);
|
||
cmd.Parameters.AddWithValue("@idUnit", cmbUnit.SelectedValue);
|
||
cmd.Parameters.AddWithValue("@idMaterials_import", MaterialId);
|
||
try
|
||
{
|
||
int rowsAffected = cmd.ExecuteNonQuery();
|
||
if (rowsAffected > 0)
|
||
{
|
||
MessageBox.Show("Материал успешно обновлён!", "Успех", MessageBoxButtons.OK, MessageBoxIcon.Information);
|
||
DialogResult = DialogResult.OK;
|
||
Close();
|
||
}
|
||
else
|
||
{
|
||
MessageBox.Show("Не удалось обновить материал.", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
||
}
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
MessageBox.Show($"Ошибка при обновлении: {ex.Message}", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
||
}
|
||
}
|
||
}
|
||
|
||
private void btnExit_Click(object sender, EventArgs e)
|
||
{
|
||
this.Hide();
|
||
|
||
}
|
||
}
|
||
}
|