189 lines
6.5 KiB
C#
189 lines
6.5 KiB
C#
using moduleExamen.Data;
|
|
using moduleExamen.Models;
|
|
|
|
namespace moduleExamen.Forms
|
|
{
|
|
public partial class ProductEditForm : Form
|
|
{
|
|
private Product editingProduct;
|
|
private bool isEditing;
|
|
private byte[] photoBytes;
|
|
|
|
public ProductEditForm(Product product)
|
|
{
|
|
InitializeComponent();
|
|
|
|
var iconPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Resources", "icon.ico");
|
|
if (File.Exists(iconPath))
|
|
Icon = new Icon(iconPath);
|
|
|
|
var logoPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Resources", "logo.png");
|
|
if (File.Exists(logoPath))
|
|
logoPictureBox.Image = Image.FromFile(logoPath);
|
|
|
|
editingProduct = product;
|
|
isEditing = product != null;
|
|
|
|
if (isEditing)
|
|
{
|
|
Text = "Sport Farm - Редактирование товара";
|
|
idLabel.Text = "ID товара: " + product.Idproduct;
|
|
}
|
|
else
|
|
{
|
|
Text = "Sport Farm - Добавление товара";
|
|
idLabel.Text = "ID: (новый)";
|
|
}
|
|
|
|
LoadComboBoxData();
|
|
|
|
if (isEditing)
|
|
FillFields();
|
|
}
|
|
|
|
private void LoadComboBoxData()
|
|
{
|
|
try
|
|
{
|
|
using var context = new SportShopContext();
|
|
|
|
categoryComboBox.DataSource = context.TipeProducts.ToList();
|
|
categoryComboBox.DisplayMember = "Name";
|
|
categoryComboBox.ValueMember = "IdtipeProduct";
|
|
|
|
manufacturerComboBox.DataSource = context.Manufacts.ToList();
|
|
manufacturerComboBox.DisplayMember = "Name";
|
|
manufacturerComboBox.ValueMember = "Idmanufact";
|
|
|
|
supplierComboBox.DataSource = context.Supliers.ToList();
|
|
supplierComboBox.DisplayMember = "Name";
|
|
supplierComboBox.ValueMember = "Idsuplier";
|
|
|
|
edComboBox.DataSource = context.Eds.ToList();
|
|
edComboBox.DisplayMember = "Name";
|
|
edComboBox.ValueMember = "Ided";
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
MessageBox.Show("Ошибка загрузки справочников: " + ex.Message);
|
|
}
|
|
}
|
|
|
|
private void FillFields()
|
|
{
|
|
if (editingProduct == null) return;
|
|
|
|
articlTextBox.Text = editingProduct.Articl;
|
|
articlTextBox.ReadOnly = true;
|
|
nameTextBox.Text = editingProduct.Name;
|
|
categoryComboBox.SelectedValue = editingProduct.IdTipeProduct;
|
|
descriptionTextBox.Text = editingProduct.ProductContent;
|
|
manufacturerComboBox.SelectedValue = editingProduct.IdManufactur;
|
|
supplierComboBox.SelectedValue = editingProduct.IdSuplier;
|
|
priceTextBox.Text = editingProduct.PriceProduct.ToString("F2");
|
|
edComboBox.SelectedValue = editingProduct.IdEd;
|
|
kolvoTextBox.Text = editingProduct.KolVo != null ? editingProduct.KolVo.ToString() : "0";
|
|
saleTextBox.Text = editingProduct.Sale != null ? editingProduct.Sale.ToString() : "0";
|
|
|
|
photoBytes = editingProduct.IdPhoto;
|
|
if (photoBytes != null && photoBytes.Length > 0)
|
|
{
|
|
try
|
|
{
|
|
using var ms = new MemoryStream(photoBytes);
|
|
photoPictureBox.Image = Image.FromStream(ms);
|
|
}
|
|
catch { }
|
|
}
|
|
}
|
|
|
|
private void ChangePhoto_Click(object sender, EventArgs e)
|
|
{
|
|
using var dialog = new OpenFileDialog();
|
|
dialog.Filter = "Изображения (*.jpg;*.png)|*.jpg;*.png";
|
|
|
|
if (dialog.ShowDialog() != DialogResult.OK) return;
|
|
|
|
try
|
|
{
|
|
photoBytes = File.ReadAllBytes(dialog.FileName);
|
|
using var ms = new MemoryStream(photoBytes);
|
|
photoPictureBox.Image = Image.FromStream(ms);
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
MessageBox.Show("Ошибка загрузки изображения: " + ex.Message);
|
|
}
|
|
}
|
|
|
|
private void CancelButton_Click(object sender, EventArgs e)
|
|
{
|
|
Close();
|
|
}
|
|
|
|
private void SaveButton_Click(object sender, EventArgs e)
|
|
{
|
|
if (string.IsNullOrWhiteSpace(nameTextBox.Text))
|
|
{
|
|
MessageBox.Show("Введите наименование товара.");
|
|
return;
|
|
}
|
|
|
|
if (!decimal.TryParse(priceTextBox.Text, out var price))
|
|
{
|
|
MessageBox.Show("Введите корректную цену.");
|
|
return;
|
|
}
|
|
|
|
if (!int.TryParse(kolvoTextBox.Text, out var kolvo))
|
|
{
|
|
MessageBox.Show("Введите корректное количество.");
|
|
return;
|
|
}
|
|
|
|
if (!int.TryParse(saleTextBox.Text, out var sale))
|
|
{
|
|
MessageBox.Show("Введите корректную скидку.");
|
|
return;
|
|
}
|
|
|
|
try
|
|
{
|
|
using var context = new SportShopContext();
|
|
|
|
Product product;
|
|
if (isEditing)
|
|
{
|
|
product = context.Products.Find(editingProduct.Idproduct);
|
|
}
|
|
else
|
|
{
|
|
product = new Product();
|
|
product.Articl = articlTextBox.Text.Trim();
|
|
context.Products.Add(product);
|
|
}
|
|
|
|
product.Name = nameTextBox.Text.Trim();
|
|
product.IdTipeProduct = (int)categoryComboBox.SelectedValue;
|
|
product.ProductContent = descriptionTextBox.Text.Trim();
|
|
product.IdManufactur = (int)manufacturerComboBox.SelectedValue;
|
|
product.IdSuplier = (int)supplierComboBox.SelectedValue;
|
|
product.PriceProduct = price;
|
|
product.IdEd = (int)edComboBox.SelectedValue;
|
|
product.KolVo = kolvo;
|
|
product.Sale = sale;
|
|
product.IdPhoto = photoBytes;
|
|
|
|
context.SaveChanges();
|
|
|
|
MessageBox.Show("Данные сохранены.");
|
|
Close();
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
MessageBox.Show("Ошибка сохранения: " + ex.Message);
|
|
}
|
|
}
|
|
}
|
|
}
|