using MySql.Data.MySqlClient;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace NeshinaPolina2111
{
    public partial class MainForm : Form
    {

        public enum ViewMode
        {
            Production
        }

        private ViewMode currentMode = ViewMode.Production;

        public MainForm()
        {
            InitializeComponent();
            btnAdd.Visible = true; //показ кнопок
            btnEdit.Visible = true;
            btnDelete.Visible = true;

        }

        private void LoadProduction() //загрузка продуктов
        {
            string query = @"
            select
                p.idProducts_import,
                t.TypeProduction,  
                p.Name,
                p.Article,
                p.MinPrice,
                p.Width
            from Products_import p
            left join Product_type_import t on p.idProduct_type_import = t.idProduct_type_import";

            var conn = DB.GetInstance().GetConnection();
            if(conn.State == ConnectionState.Closed)
                conn.Open();
            DataTable dt;
            using (var cmd = new MySqlCommand(query, conn))
            {
                var adapter = new MySqlDataAdapter(cmd);
                dt = new DataTable();
                adapter.Fill(dt);
            }

            dgvMain.DataSource = dt;
            btnAdd.Visible = true; //показ кнопок
            btnEdit.Visible = true;
            btnDelete.Visible = true;
        }

        private void btnAdd_Click(object sender, EventArgs e) //добавление переход
        {
            switch (currentMode)
            {
                case ViewMode.Production:
                    var AddP = new AddProduction();
                    if (AddP.ShowDialog() == DialogResult.OK)
                    {
                        LoadProduction();
                    }
                    break;
             
            }
        }

        private void продукцияToolStripMenuItem_Click(object sender, EventArgs e)
        {
            LoadProduction();
        }

        private void btnEdit_Click(object sender, EventArgs e) //редактирование переход
        {
            if (dgvMain.SelectedRows.Count == 0)
            {
                MessageBox.Show("Выберите строку для редактирования.", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                return;
            }
            var select = dgvMain.SelectedRows[0];
            switch (currentMode)
            {
                case ViewMode.Production:
                    if (select.Cells["idProducts_import"].Value == null)
                    {
                        MessageBox.Show("Не удалось получить ID материала.", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error);
                        return;
                    }
                    int ProductId = Convert.ToInt32(select.Cells["idProducts_import"].Value);
                    var EditProduction = new EditProduction { ProductId = ProductId };
                    if (EditProduction.ShowDialog() == DialogResult.OK)
                    {
                        LoadProduction();
                            }
                    break;

               
            }
        }

        private void btnDelete_Click(object sender, EventArgs e) //удаление
        {
            if (dgvMain.SelectedRows.Count == 0)
            {
                MessageBox.Show("Выберите строку для удаления.", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                return;
            }
            var select = dgvMain.SelectedRows[0];
            switch(currentMode)
            {
                case ViewMode.Production:
                    if (select.Cells["idProducts_import"].Value == null)
                    {
                        MessageBox.Show("Не удалось получить ID продукта.", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error);
                        return;
                    }
                    int productid = Convert.ToInt32(select.Cells["idProducts_import"].Value);
                    string name = select.Cells["Name"]?.Value?.ToString() ?? "неизвестный";
                    var result = MessageBox.Show(
                        $"Вы уверены, что хотите удалить материал:\n\n«{name}»?\n\nЭто действие нельзя отменить.",
                        "Подтверждение удаления",
                        MessageBoxButtons.YesNo,
                        MessageBoxIcon.Warning
                    );

                    if (result == DialogResult.No)
                        return;
                    string delete = "DELETE FROM Products_import WHERE idProducts_import = @idProducts_import";
                    var conn = DB.GetInstance().GetConnection();
                    if (conn.State == ConnectionState.Closed)
                        conn.Open();

                    using (var cmd = new MySqlCommand(delete, conn))
                    {
                        cmd.Parameters.AddWithValue("@idProducts_import", productid);
                        try
                        {
                            int rowsAffected = cmd.ExecuteNonQuery();
                            if (rowsAffected > 0)
                            {
                                MessageBox.Show("Продукт успешно удалён!", "Успех", MessageBoxButtons.OK, MessageBoxIcon.Information);
                                LoadProduction();
                            }
                            else
                            {
                                MessageBox.Show("Не удалось удалить продукт", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error);
                            }
                        }
                        catch (Exception ex)
                        {
                            MessageBox.Show($"Ошибка при удалении: {ex.Message}", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error);
                        }
                    }
                    break;
            }
        }

        private void списокМатериаловToolStripMenuItem_Click(object sender, EventArgs e)
        {
            LoadMaterials();
        }

        private void LoadMaterials() //загрузка материалов
        {
            string query = @"
            select
                   m.Name,
                   t.Name,
                   m.PriceUnitMaterial,
                   m.Quantity,
                   m.MinQuantity,
                   m.QuantityPack,
                   u.Name
            from Materials_import m
            left join Material_type_import t on m.idMaterial_type_import = t.idMaterial_type_import
            left join Unit u on m.idUnit = u.idUnit";
            var conn = DB.GetInstance().GetConnection();
            if (conn.State == ConnectionState.Closed)
                conn.Open();
            DataTable dt;
            using (var cmd = new MySqlCommand(query, conn))
            {
                var adapter = new MySqlDataAdapter(cmd);
                dt = new DataTable();
                adapter.Fill(dt);
            }
            dgvMain.DataSource = dt;
            btnAdd.Visible = false;
            btnEdit.Visible = false;
            btnDelete.Visible = false;
        }
    }
}
