예제 #1
0
        public void CreateSondage(Sondage monSondage)
        {
            using (SqlConnection connection = new SqlConnection(connectionString))
            {
                connection.Open();

                //initiation de la date
                DateTime date       = DateTime.Today;
                string   dateString = date.Year.ToString("00") + "/" + date.Month.ToString("00") + "/" + date.Day.ToString("00");

                //1 création du paramètre pour la question
                SqlParameter param = new SqlParameter();
                param.ParameterName = "@question";         //on lui assigne un nom
                param.Value         = monSondage.question; //on lui assigne une valeur

                //1- ajout du vote dans la base
                SqlCommand cmd = new SqlCommand("INSERT INTO Sondage (DateDeCreationSondage, question, FK_idValiditeSondage, FK_idTypeDeChoixDuSondage) VALUES ('" + dateString + "', @question, 'a', '" + monSondage.TypeDeChoixDuSondage + "'); ", connection);

                cmd.Parameters.Add(param); //on rajoute le dans les paramètres à envoyer à la requête

                cmd.ExecuteNonQuery();

                //2- récupération de l'id du vote pour générer les URL
                cmd = new SqlCommand("SELECT MAX(numeroDeSondage) AS max_id FROM Sondage;", connection);
                monSondage.AffecterNumeroSondage((int)cmd.ExecuteScalar());

                //3- générer les url
                monSondage.GenererUrl("vote", date, monSondage.numeroDeSondage);
                monSondage.GenererUrl("desactivation", date, monSondage.numeroDeSondage);

                //4- update du sondage dans la base
                cmd = new SqlCommand("UPDATE Sondage SET lienVote = '" + monSondage.lienVote + "', lienDesactivation='" + monSondage.lienDesactivation + "' WHERE numeroDeSondage = " + monSondage.numeroDeSondage + ";", connection);
                cmd.ExecuteNonQuery();
            }
        }
예제 #2
0
        public Sondage AfficherVote(string monUrl)
        {
            using (SqlConnection connection = new SqlConnection(connectionString))
            {
                connection.Open();
                //initiation du reader
                SqlDataReader rdr = null;
                //on récupère les infos du sondage
                //si la requête sur le lien de vote ne donne aucun résultat, on testera si c'est un lien de désactivation
                SqlCommand cmd = new SqlCommand("SELECT numeroDeSondage, question, FK_idTypeDeChoixDuSondage, FK_idValiditeSondage, numeroDeChoix, indexChoix, texteChoix FROM [dbo].[Sondage] INNER JOIN[DBO].[LigneChoix] ON FK_numeroDeSondage = numeroDeSondage WHERE lienVote = '" + (string)monUrl + "'ORDER BY indexChoix; ", connection);
                //exécution de la requete et stockage des résultats
                rdr = cmd.ExecuteReader();

                if (rdr.HasRows) //si le reader contient des données
                {
                    //alors c'est un lien de vote
                    //afficher les infos
                    //vérifier que le sondage n'est pas désactivé  <------------------------

                    //on lit le premier enregistrement du reader pour créer le sondage
                    rdr.Read();

                    bool typeDeSondage;
                    if ((string)rdr["FK_idTypeDeChoixDuSondage"] == "m")
                    {
                        typeDeSondage = true;
                    }
                    else
                    {
                        typeDeSondage = false;
                    }


                    //on remplit sondage
                    //création du sondage
                    Sondage monSondage = new Sondage((string)rdr["question"], typeDeSondage);
                    monSondage.AffecterNumeroSondage((int)rdr["numeroDeSondage"]);
                    //remplissage des lignes de choix
                    monSondage.ligneDeChoix.Add(new LigneDeChoix((int)rdr["indexChoix"], (string)rdr["texteChoix"]));
                    //permet d'ajouter le numero de choix dans la ligne de choix
                    monSondage.ligneDeChoix.Last().SetNumeroDeChoix((int)rdr["numeroDeChoix"]);
                    monSondage.SetLienDeVote(monUrl);


                    //on Vérifie si le sondage est encore actif
                    if ((string)rdr["FK_idValiditeSondage"] == "a")
                    {
                        //s'il est actif on traite l'affichage
                        while (rdr.Read())
                        {
                            monSondage.ligneDeChoix.Add(new LigneDeChoix((int)rdr["indexChoix"], (string)rdr["texteChoix"]));
                            monSondage.ligneDeChoix.Last().SetNumeroDeChoix((int)rdr["numeroDeChoix"]);
                        }
                        //doit renvoyer la vue vote/index -> actif et numéroSondage <> 0
                        return(monSondage);
                    }
                    else
                    {
                        //c'est un sondage désactivé
                        while (rdr.Read())
                        {
                            monSondage.ligneDeChoix.Add(new LigneDeChoix((int)rdr["indexChoix"], (string)rdr["texteChoix"]));
                            monSondage.ligneDeChoix.Last().SetNumeroDeChoix((int)rdr["numeroDeChoix"]);
                        }
                        monSondage.DesactiverSondage();
                        //doit renvoyer la vue Resultats/index -> désactivé et numéroSondage <> 0
                        return(monSondage);
                    }
                }
                else
                {
                    rdr.Close();
                    //sinon, on vérifier si c'est un lien de désactivation
                    cmd = new SqlCommand("SELECT numeroDeSondage, question, FK_idTypeDeChoixDuSondage, FK_idValiditeSondage, numeroDeChoix, indexChoix, texteChoix FROM [dbo].[Sondage] INNER JOIN[DBO].[LigneChoix] ON FK_numeroDeSondage = numeroDeSondage WHERE lienDesactivation = '" + monUrl + "' ORDER BY indexChoix; ", connection);
                    //exécution de la requete et stockage des résultats
                    rdr = cmd.ExecuteReader();
                    if (rdr.HasRows) //si le reader contient des données
                    {
                        rdr.Read();
                        bool typeDeSondage;
                        if ((string)rdr["FK_idTypeDeChoixDuSondage"] == "m")
                        {
                            typeDeSondage = true;
                        }
                        else
                        {
                            typeDeSondage = false;
                        }

                        Sondage monSondage = new Sondage((string)rdr["question"], typeDeSondage);
                        monSondage.DesactiverSondage(); //On Désactive le sondage
                        monSondage.AffecterNumeroSondage(0);
                        rdr.Close();
                        //requete pour mettre à jour la base de donnée => FK_idValiditeSondage = 'd'
                        cmd = new SqlCommand("UPDATE Sondage SET FK_idValiditeSondage = 'd' WHERE lienDesactivation = '" + monUrl + "';", connection);
                        cmd.ExecuteNonQuery();


                        monSondage.SetLienDeVote(monUrl);
                        //doit renvoyer la vue home/index -> désactivé et numéroSondage = 0
                        return(monSondage);
                    }
                    else
                    {
                        //sinon c'est un lien inconnu et on affiche la page d'accueil.
                        //+ message d'erreur
                        Sondage monSondage = new Sondage("question", true);
                        monSondage.SetLienDeVote(monUrl);
                        //doit renvoyer la vue home/index -> actif et numéroSondage <= 0
                        return(monSondage);
                    }
                }
            } //fin du using
        }     //fin AfficherVote()