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 SqlDataSet
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        private SqlConnection sqlconn = new SqlConnection();
        private DataSet monDataset = new DataSet();
        private SqlDataAdapter adapter = new SqlDataAdapter();
        private void connect_Click(object sender, EventArgs e)
        {
            string chaineConnexion = "Data source =M-INFO-SY1\\SQLEXPRESS; Initial Catalog =bdtrivia; User Id= Patoche;password =remi2002";
            sqlconn.ConnectionString = chaineConnexion;
            sqlconn.Open();
            labelConn.Text = sqlconn.State.ToString();
            labelConn.BackColor = System.Drawing.Color.Green;
            // MessageBox.Show(sqlconn.State.ToString());
            listeCategorie();
        }

        private void quitter_Click(object sender, EventArgs e)
        {
            sqlconn.Close();
            labelConn.Text = sqlconn.State.ToString();
            labelConn.BackColor = System.Drawing.Color.Red;
            Application.Exit();
        }


        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 afficherDataSetParCategorie()
        {


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


            //on prépare le SqlDataAdapter. On lui passe le SqlCommand pour exécuter la procédure
            SqlDataAdapter adapter1 = new SqlDataAdapter(cmdQuestion);
            // on rempli le DataSet si celui-ci ne contient pas déjà les données
            //la chaine de caractères corresond à un nom de table du DataSet correspondant
            //à votre requête SELECT de la procédure

            if (monDataset.Tables.Contains("ListeQuestionsCategorie"))
            {
                monDataset.Tables["ListeQuestionsCategorie"].Clear();
            }
            adapter1.Fill(monDataset, "ListeQuestionsCategorie");
            adapter1.Dispose();
            BindingSource maSource1;
            maSource1 = new BindingSource(monDataset, "ListeQuestionsCategorie");
            DGVQuestions.DataSource = maSource1;

        }

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


        private void listeDesQuestionsparEnonce()
        {
            SqlCommand cmdQuestion2 = new SqlCommand("QuestionSelonEnonce", sqlconn);
            cmdQuestion2.CommandText = "QuestionSelonEnonce";
            cmdQuestion2.CommandType = CommandType.StoredProcedure;
            // on declare les paramètre

            SqlParameter parmenonce = new SqlParameter("@enonce", SqlDbType.VarChar, 30);
            parmenonce.Direction = ParameterDirection.Input;
            // on donne la valeur au parmètre
            parmenonce.Value = textEnonce.Text;
            cmdQuestion2.Parameters.Add(parmenonce);


            //on prépare le SqlDataAdapter. On lui passe le SqlCommand pour exécuter la procédure
            SqlDataAdapter adapter2 = new SqlDataAdapter(cmdQuestion2);
            // on rempli le DataSet si celui-ci ne contient pas déjà les données
            //la chaine de caractères corresond à un nom de table du DataSet correspondant
            //à votre requête SELECT de la procédure

            if (monDataset.Tables.Contains("ListeQuestionsEnonce"))
            {
                monDataset.Tables["ListeQuestionsEnonce"].Clear();
            }
            adapter2.Fill(monDataset, "ListeQuestionsEnonce");
            adapter2.Dispose();
            BindingSource maSource2;
            maSource2 = new BindingSource(monDataset, "ListeQuestionsEnonce");
            DGVQuestions.DataSource = maSource2;

        }


        private void affichertouteslesquestions()
        {
            string sql = "select * from listeToutesQuestions()";
            SqlCommand cmdQuestion3 = new SqlCommand(sql, sqlconn);
            SqlDataAdapter adapter3 = new SqlDataAdapter(cmdQuestion3);


            // on rempli le DataSet si celui-ci ne contient pas déjà les données
            //la chaine de caractères corresond à un nom de table du DataSet correspondant
            //à votre requête SELECT de la procédure

            if (monDataset.Tables.Contains("Listedetoutelesquestions"))
            {
                monDataset.Tables["Listedetoutelesquestions"].Clear();
            }
            adapter3.Fill(monDataset, "Listedetoutelesquestions");
            adapter3.Dispose();
            BindingSource maSource3;
            maSource3 = new BindingSource(monDataset, "Listedetoutelesquestions");
            DGVQuestions.DataSource = maSource3;
        }
        private void btnEnonce_Click(object sender, EventArgs e)
        {
            listeDesQuestionsparEnonce();
        }

        private void btnLister_Click(object sender, EventArgs e)
        {
            affichertouteslesquestions();
        }
    }
}
