using MySql.Data.MySqlClient;
using System;
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;

namespace NeshinaPolina2111
{
    public partial class AddProduction : Form
    {
        public AddProduction()
        {
            InitializeComponent();
            LoadTypes(); //загрузка типов
        }

        private void btnAdd_Click(object sender, EventArgs e) 
        {
            //НАЧАЛО ВСЕХ ПРОВЕРОК
            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);
                tbArticle.Focus();
                return;
            }

            if (string.IsNullOrEmpty(tbName.Text))
            {
                MessageBox.Show("Введите Название", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error);
                tbArticle.Focus();
                return;
            }

            if (string.IsNullOrEmpty(tbWidth.Text))
            {
                MessageBox.Show("Введите Ширину", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error);
                tbArticle.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;
            }

            if (!decimal.TryParse(tbWidth.Text, out decimal Width) || price < 0)
            {
                MessageBox.Show("Введите корректную ширину", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error);
                tbWidth.Focus();
                return;
            }

            if (!int.TryParse(tbArticle.Text, out int quantity) || quantity < 0)
            {
                MessageBox.Show("Введите корректный артикул", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error);
                tbArticle.Focus();
                return;
            }

            //ДОБАВЛЕНИЕ
            var typeItem = (ComboItem)cmbProduct.SelectedItem;
            string insert = @"insert into Products_import (idProduct_type_import, Name, Article, MinPrice, Width)
                            values (@idProduct_type_import, @Name, @Article, @MinPrice, @Width)";
            var connec = DB.GetInstance().GetConnection();
            if (connec.State == ConnectionState.Closed)
            connec.Open();
            using (var cmd = new MySqlCommand(insert, connec))
            {
                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", tbMinPrice.Text.Trim());
                cmd.Parameters.AddWithValue("@Width", tbWidth.Text.Trim());

                try
                {
                    cmd.ExecuteNonQuery();
                    MessageBox.Show("Продукт успешно добавлен!", "Успех", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    this.DialogResult = DialogResult.OK;
                    this.Close();
                }
                catch (Exception ex)
                {
                    MessageBox.Show($"Ошибка при добавлении: {ex.Message}", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
            }


            
        }

        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")
                        });
                    }
                }
            }
        }

        public class ComboItem  //НУЖНО 
        {
            public int Id { get; set; }
            public string Name { get; set; }

            public override string ToString()
            {
                return Name;
            }
        }

        private void btnExit_Click(object sender, EventArgs e)
        {
            this.Hide();
        }
    }
}
