using System;
using System.Data;
using System.Windows.Forms;
using MySql.Data.MySqlClient;

namespace _0303RogovaNeshina
{
    public partial class MainForm : Form
    {
        string connStr = "Server=cfif31.ru;Port=3306;Database=ISPr25-21_NeshinaPV_0303;Uid=ISPr25-21_NeshinaPV;Pwd=ISPr25-21_NeshinaPV;";

        public MainForm()
        {
            InitializeComponent();
            this.Load += MainForm_Load;

            dataGridView1.AllowUserToAddRows = false;
            dataGridView1.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill;
            dataGridView1.SelectionMode = DataGridViewSelectionMode.FullRowSelect;
            dataGridView1.MultiSelect = false;
            dataGridView1.ReadOnly = true;
        }

        private void MainForm_Load(object sender, EventArgs e)
        {
            try
            {
                using (MySqlConnection conn = new MySqlConnection(connStr))
                {
                    conn.Open();

                    string sql = @"
                        SELECT b.idbooks, b.name AS book_name, a.name AS author_name, b.price
                        FROM books b
                        INNER JOIN author a ON b.author_id = a.idauthor
                        ORDER BY b.idbooks";

                    MySqlCommand cmd = new MySqlCommand(sql, conn);
                    MySqlDataAdapter da = new MySqlDataAdapter(cmd);
                    DataTable dt = new DataTable();

                    int count = da.Fill(dt);

                    if (count == 0)
                    {
                        MessageBox.Show("В таблице нет данных!");
                        return;
                    }

                    dataGridView1.DataSource = dt;

                    dataGridView1.Columns[0].Visible = false; // Скрыть ID

                    dataGridView1.Columns[1].HeaderText = "Название книги";
                    dataGridView1.Columns[2].HeaderText = "Автор";
                    dataGridView1.Columns[3].HeaderText = "Цена (руб.)";
                    dataGridView1.Columns[3].DefaultCellStyle.Format = "N2";
                    dataGridView1.Columns[3].DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight;
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show("Ошибка: " + ex.Message, "Критическая ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }

        private void btAdd_Click(object sender, EventArgs e)
        {
            AddBooksForm add = new AddBooksForm();
            if (add.ShowDialog() == DialogResult.OK)
            {
                MainForm_Load(sender, e);
            }
        }

        private void btEdit_Click(object sender, EventArgs e)
        {
            if (dataGridView1.CurrentRow == null)
            {
                MessageBox.Show("Выберите строку для редактирования!", "Внимание");
                return;
            }

            int id = Convert.ToInt32(dataGridView1.CurrentRow.Cells[0].Value);
            EditBooksForm edit = new EditBooksForm(id);
            if (edit.ShowDialog() == DialogResult.OK)
            {
                MainForm_Load(sender, e);
            }
        }

      

        private void btDelete_Click_1(object sender, EventArgs e)
        {
            // 1. Проверка выделения
            if (dataGridView1.CurrentRow == null)
            {
                MessageBox.Show("Выберите книгу для удаления!", "Внимание", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                return;
            }

            // 2. Подтверждение действия
            string bookName = dataGridView1.CurrentRow.Cells[1].Value.ToString();
            DialogResult res = MessageBox.Show(
                $"Вы действительно хотите удалить книгу \"{bookName}\"?\nЭто действие нельзя отменить.",
                "Подтверждение удаления",
                MessageBoxButtons.YesNo,
                MessageBoxIcon.Question);

            if (res == DialogResult.Yes)
            {
                try
                {
                    int id = Convert.ToInt32(dataGridView1.CurrentRow.Cells[0].Value);

                    using (MySqlConnection conn = new MySqlConnection(connStr))
                    {
                        conn.Open();
                        string sql = "DELETE FROM books WHERE idbooks = @id";
                        MySqlCommand cmd = new MySqlCommand(sql, conn);
                        cmd.Parameters.AddWithValue("@id", id);

                        int rows = cmd.ExecuteNonQuery();

                        if (rows > 0)
                        {
                            MessageBox.Show($"Книга \"{bookName}\" успешно удалена!", "Успех", MessageBoxButtons.OK, MessageBoxIcon.Information);
                            MainForm_Load(sender, e); // Обновить таблицу
                        }
                        else
                        {
                            MessageBox.Show("Ошибка: книга не найдена в базе.", "Ошибка");
                        }
                    }
                }
                catch (Exception ex)
                {
                    MessageBox.Show("Ошибка при удалении: " + ex.Message, "Критическая ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
            }
        }
    }
}