using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.IO; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using MySql.Data.MySqlClient; namespace demMalyhin { public partial class UserMainForm : Form { private MySqlDataAdapter dataAdapter; private DataTable prodTable; private BindingSource bindingSource = new BindingSource(); public UserMainForm() { InitializeComponent(); LoadProdData(); } private void LoadProdData() // загрузка данных в дгв { try { DB db = new DB(); using (MySqlConnection connection = db.getConnection()) { connection.Open(); string query = "SELECT article_product AS `Артикул`, product_name AS `Название товара`, price AS `Цена`, supplier_name AS `Поставщик`, Manufacturer_name AS `Производитель`, Category_name AS `Категория`, sale_percent AS `Скидка`, unit_type AS `Единица измерения`, description AS `описание`, quantity_in_stock AS `Количество на складе`, photo AS `фото` FROM products LEFT JOIN Category ON products.category_id = Category.id_Category JOIN Supplier ON products.supplier_id = Supplier.id_Supplier JOIN Manufacturer ON products.manufacturer_id = Manufacturer.id_Manufacturer"; dataAdapter = new MySqlDataAdapter(query, connection); prodTable = new DataTable(); dataAdapter.Fill(prodTable); DataGridViewProduct.RowTemplate.Height = 60; bindingSource.DataSource = prodTable; DataGridViewProduct.DataSource = bindingSource; DataGridViewProduct.AllowUserToAddRows = false; DataGridViewProduct.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.DisplayedCells; DataGridViewProduct.ReadOnly = true; // настройки дгв } } catch (MySqlException ex) { MessageBox.Show("Ошибка при подключении к базе данных или выполнении запроса: " + ex.Message); } catch (Exception ex) { MessageBox.Show("Произошла общая ошибка: " + ex.Message); } } private void dataGridViewProd_Click(object sender, EventArgs e) { textBoxDesc.Text = DataGridViewProduct.CurrentRow.Cells[8].Value.ToString(); textBoxManuf.Text = DataGridViewProduct.CurrentRow.Cells[4].Value.ToString(); textBoxSup.Text = DataGridViewProduct.CurrentRow.Cells[3].Value.ToString(); textBoxPrice.Text = DataGridViewProduct.CurrentRow.Cells[2].Value.ToString(); textBoxUnit.Text = DataGridViewProduct.CurrentRow.Cells[7].Value.ToString(); textBoxStock.Text = DataGridViewProduct.CurrentRow.Cells[9].Value.ToString(); NameLabel.Text = DataGridViewProduct.CurrentRow.Cells[1].Value.ToString(); CategoryLabel.Text = DataGridViewProduct.CurrentRow.Cells[5].Value.ToString(); SaleLabel.Text = DataGridViewProduct.CurrentRow.Cells[6].Value.ToString() + "%"; try { object photoData = DataGridViewProduct.CurrentRow.Cells[10].Value; if (photoData != DBNull.Value) { byte[] imageData = (byte[])photoData; if (imageData != null && imageData.Length > 0) { using (MemoryStream ms = new MemoryStream(imageData)) { pictureBoxPhoto.Image = Image.FromStream(ms); pictureBoxPhoto.SizeMode = PictureBoxSizeMode.Zoom; } } else { pictureBoxPhoto.Image = Properties.Resources.picture; pictureBoxPhoto.SizeMode = PictureBoxSizeMode.Zoom; } } else { pictureBoxPhoto.Image = Properties.Resources.picture; pictureBoxPhoto.SizeMode = PictureBoxSizeMode.Zoom; } } catch (Exception ex) { MessageBox.Show("Ошибка при загрузке изображения: " + ex.Message); pictureBoxPhoto.Image = Properties.Resources.picture; pictureBoxPhoto.SizeMode = PictureBoxSizeMode.Zoom; } try { var currentRow = DataGridViewProduct.CurrentRow; if (currentRow == null) return; Color defaultColor = SystemColors.Window; textBoxPrice.BackColor = defaultColor; textBoxSup.BackColor = defaultColor; textBoxManuf.BackColor = defaultColor; textBoxStock.BackColor = defaultColor; textBoxPrice.ForeColor = Color.Black; textBoxPrice.Font = new Font(textBoxPrice.Font, FontStyle.Regular); textBoxFP.Text = ""; decimal originalPrice = 0m; int salePercent = 0; int quantityInStock = 0; decimal.TryParse(currentRow.Cells[2].Value?.ToString(), out originalPrice); int.TryParse(currentRow.Cells[6].Value?.ToString(), out salePercent); int.TryParse(currentRow.Cells[9].Value?.ToString(), out quantityInStock); if (salePercent > 15) { Color highDiscountColor = ColorTranslator.FromHtml("#2E8B57"); textBoxPrice.BackColor = highDiscountColor; textBoxSup.BackColor = highDiscountColor; textBoxManuf.BackColor = highDiscountColor; textBoxStock.BackColor = highDiscountColor; textBoxDesc.BackColor = highDiscountColor; textBoxFP.BackColor = highDiscountColor; textBoxUnit.BackColor = highDiscountColor; panel3.BackColor = highDiscountColor; } else { textBoxPrice.BackColor = Color.White; textBoxSup.BackColor = Color.White; textBoxManuf.BackColor = Color.White; textBoxStock.BackColor = Color.White; textBoxDesc.BackColor = Color.White; textBoxFP.BackColor = Color.White; textBoxUnit.BackColor = Color.White; panel3.BackColor = Color.White; } if (salePercent > 0) { decimal finalPrice = originalPrice * (1 - (decimal)salePercent / 100); textBoxPrice.Text = $"{originalPrice:N2}"; textBoxPrice.ForeColor = Color.Red; textBoxPrice.Font = new Font(textBoxPrice.Font, FontStyle.Strikeout); textBoxFP.Text = $"{finalPrice:N2}"; textBoxFP.ForeColor = Color.Black; textBoxFP.Font = new Font(textBoxFP.Font, FontStyle.Regular); } else { textBoxPrice.Text = $"{originalPrice:N2}"; } if (quantityInStock <= 0) { textBoxStock.BackColor = Color.LightBlue; } } catch (Exception ex) { MessageBox.Show("Ошибка при обработке данных товара: " + ex.Message); } } private void btnBack_Click(object sender, EventArgs e) { this.Hide(); LoginForm log = new LoginForm(); log.Show(); } private void btnExit_Click(object sender, EventArgs e) { Application.Exit(); } private void UserMainForm_Load(object sender, EventArgs e) { labelFIO.Text = LoginForm.ClientSurname + " " + LoginForm.ClientName + " " + LoginForm.ClientPatronymic; } } }