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

namespace ExempleAdo
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
private SqlConnection  sqlconn= new SqlConnection();
        private void butnConnect_Click(object sender, EventArgs e)
        {
            string chaineConnexion = "Data source =P042-PR\\SQLEXPRESS2019; Initial Catalog =BDTrivia; User Id= Patoche;password =123";
            sqlconn.ConnectionString = chaineConnexion;
            sqlconn.Open();
            //MessageBox.Show(sqlconn.State.ToString());

            listeCategorie();


        }

        private void butnQuitter_Click(object sender, EventArgs e)
        {
            sqlconn.Close();
            Application.Exit();
        }

        private void ajouterCategorie()
        {
            try
            {
                // on défini le SqlCommand, on indique qu'il va passer une procédure stockée
                SqlCommand cmdCategorie = new SqlCommand("InsertCategorie",sqlconn);
                cmdCategorie.CommandText = "InsertCategorie";
                cmdCategorie.CommandType = CommandType.StoredProcedure;
                // on définit les paramètres
                SqlParameter parmCode = new SqlParameter("@code", SqlDbType.Char, 1);
                parmCode.Direction = ParameterDirection.Input;

                SqlParameter parmCategorie = new SqlParameter("@nomCategorie", SqlDbType.VarChar, 30);
                parmCategorie.Direction = ParameterDirection.Input;

                SqlParameter parmcouleur = new SqlParameter("@couleur", SqlDbType.VarChar, 10);
                parmCode.Direction = ParameterDirection.Input;
                // attribuer des valeurs aux paramètres

                parmCode.Value = textCodeCategorie.Text;
                parmCategorie.Value = textnomCategorie.Text;
                parmcouleur.Value = textColueur.Text;

                // on ajoute les paramètres à SqlCommand
                cmdCategorie.Parameters.Add(parmCode);
                cmdCategorie.Parameters.Add(parmCategorie);
                cmdCategorie.Parameters.Add(parmcouleur);
                // execution
                cmdCategorie.ExecuteNonQuery();
                vider();

            }
            catch (Exception ex1)
            {
                MessageBox.Show(ex1.Message.ToString());
            }
        }

        private void btnAjouter_Click(object sender, EventArgs e)
        {
            ajouterCategorie();
        }

        private void vider()
        {
            textCodeCategorie.Clear();
            textnomCategorie.Clear();
            textColueur.Clear();
        }
private void listeCategorie()
        {
            string sql = "select nomcategorie from CategorieTrivia";
            SqlCommand cmdCategorie = new SqlCommand(sql, sqlconn);
            SqlDataReader listeCategorie = cmdCategorie.ExecuteReader();
            while(listeCategorie.Read())
            {
                comboCategorie.Items.Add(listeCategorie.GetString(0));
            }
            listeCategorie.Close();
            comboCategorie.SelectedIndex = 0;
        }
private void QuestionCategorie() 
        {
            DGVQuestions.Rows.Clear();
            SqlCommand cmdQuestion = new SqlCommand("listeQuestion", sqlconn);
            cmdQuestion.CommandText = "listeQuestion";
            cmdQuestion.CommandType = CommandType.StoredProcedure;
            // on declare les paramètre

            SqlParameter parmnomCategorie = new SqlParameter("@nomcategorie", SqlDbType.VarChar, 30);
            parmnomCategorie.Direction = ParameterDirection.Input;
            // on donne la valeur au parmètre
            parmnomCategorie.Value = comboCategorie.Text;
            cmdQuestion.Parameters.Add(parmnomCategorie);
            SqlDataReader listeQuestions = cmdQuestion.ExecuteReader();
            while(listeQuestions.Read())
            {
                DGVQuestions.Rows.Add(listeQuestions.GetString(0),
                                       listeQuestions.GetString(1));
            }
            listeQuestions.Close();
        }

        private void comboCategorie_SelectedIndexChanged(object sender, EventArgs e)
        {
            QuestionCategorie();
        }
    }
}
