/// <summary>
        /// Display the result page of a specific strawpoll using its <paramref name="ID"/>
        /// </summary>
        /// <param name="ID">The ID of the strawpoll</param>
        /// <returns>View Result.cshtml</returns>
        public ActionResult ResultPage(int ID)
        {
            Models.StrawPoll myStrawPoll   = new Models.StrawPoll();
            Models.Answer    myAnswerOne   = new Models.Answer();
            Models.Answer    myAnswerTwo   = new Models.Answer();
            Models.Answer    myAnswerThree = new Models.Answer();
            Models.Answer    myAnswerFour  = new Models.Answer();

            //Get strawpoll in database
            String          queryGetStrawPoll;
            ConnectionQuery newDataBaseTask = new ConnectionQuery();

            queryGetStrawPoll = "SELECT * FROM StrawPoll WHERE NumStrawPoll = @ID;";

            newDataBaseTask.OpenConnection();

            SqlCommand cmd = new SqlCommand(queryGetStrawPoll, newDataBaseTask.getSqlConnection());

            cmd.Parameters.AddWithValue("@ID", ID);

            SqlDataReader newReader = cmd.ExecuteReader();

            while (newReader.Read())
            {
                myStrawPoll.setStrawPollQuestion((String)newReader["Question"]);
                myStrawPoll.setMultipleChoices((bool)newReader["MultipleChoices"]);
                myStrawPoll.setNbrVotesStrawPoll((int)newReader["NbrVotes"]);
                myStrawPoll.setURLStrawPoll((String)newReader["URLStrawPoll"]);
                myStrawPoll.setURLDeletion((String)newReader["URLDeletion"]);
                myStrawPoll.setURLResults((String)newReader["URLResult"]);
                myStrawPoll.setIsActive((bool)newReader["IsActive"]);
            }

            newReader.Close();

            String queryGetAnswers = "SELECT * FROM Answer WHERE NumStrawPoll = @ID;";

            SqlCommand cmdAnswer = new SqlCommand(queryGetAnswers, newDataBaseTask.getSqlConnection());

            cmdAnswer.Parameters.AddWithValue("@ID", ID);

            SqlDataReader newReaderAnswer = cmdAnswer.ExecuteReader();

            List <Models.Answer> answers = new List <Models.Answer>();

            while (newReaderAnswer.HasRows)
            {
                while (newReaderAnswer.Read())
                {
                    Models.Answer newAnswer = new Models.Answer((String)newReaderAnswer["Answer"], (int)newReaderAnswer["NbrVotes"]);
                    answers.Add(newAnswer);
                }
                newReaderAnswer.NextResult();
            }

            newReaderAnswer.Close();
            newDataBaseTask.CloseConnection();

            //Set answers with database datas
            myAnswerOne   = answers.ElementAt(0);
            myAnswerTwo   = answers.ElementAt(1);
            myAnswerThree = answers.ElementAt(2);
            myAnswerFour  = answers.ElementAt(3);

            //Send data to the views
            ViewBag.StrawPoll = myStrawPoll;

            ViewBag.aOne   = myAnswerOne.getAnswer();
            ViewBag.vOne   = myAnswerOne.getNbrVotesByAnswer();
            ViewBag.aTwo   = myAnswerTwo.getAnswer();
            ViewBag.vTwo   = myAnswerTwo.getNbrVotesByAnswer();
            ViewBag.aThree = myAnswerThree.getAnswer();
            ViewBag.vThree = myAnswerThree.getNbrVotesByAnswer();
            ViewBag.aFour  = myAnswerFour.getAnswer();
            ViewBag.vFour  = myAnswerFour.getNbrVotesByAnswer();

            return(View("Result"));
        }
        /// <summary>
        /// Increment the number of votes of the strawpoll and the answers chosen.
        /// Display the result page then (multiple answers only).
        /// </summary>
        /// <param name="ID">The ID of the strawpoll</param>
        /// <param name="checkbox">A list of String holding the label of each chosen answer</param>
        /// <returns>View Result.cshtml</returns>
        public ActionResult VoteCheckBoxes(int ID, List <String> checkbox)
        {
            //Increment database
            String          queryIncrementNbrVotes;
            ConnectionQuery newDataBaseTask = new ConnectionQuery();

            queryIncrementNbrVotes = "UPDATE StrawPoll " +
                                     "SET NbrVotes = NbrVotes + 1 " +
                                     "WHERE NumStrawPoll=@ID; " +
                                     "UPDATE Answer " +
                                     "SET NbrVotes = NbrVotes + 1 " +
                                     "WHERE NumStrawPoll = @IDAnswer AND Answer = @LabelAnswer;";

            newDataBaseTask.OpenConnection();

            foreach (String answerChosen in checkbox)
            {
                SqlCommand newcmd = new SqlCommand(queryIncrementNbrVotes, newDataBaseTask.getSqlConnection());

                newcmd.Parameters.AddWithValue("@ID", ID);
                newcmd.Parameters.AddWithValue("@IDAnswer", ID);
                newcmd.Parameters.AddWithValue("@LabelAnswer", answerChosen);

                newDataBaseTask.setMySqlCommand(newcmd);
                newDataBaseTask.ExecuteNonQuery();
            }

            newDataBaseTask.CloseConnection();

            createCookies(ID);

            //RETURN RESULT
            Models.StrawPoll myStrawPoll   = new Models.StrawPoll();
            Models.Answer    myAnswerOne   = new Models.Answer();
            Models.Answer    myAnswerTwo   = new Models.Answer();
            Models.Answer    myAnswerThree = new Models.Answer();
            Models.Answer    myAnswerFour  = new Models.Answer();

            //Get strawpoll in database
            String queryGetStrawPoll = "SELECT * FROM StrawPoll WHERE NumStrawPoll = @ID;";

            newDataBaseTask.OpenConnection();

            SqlCommand cmd = new SqlCommand(queryGetStrawPoll, newDataBaseTask.getSqlConnection());

            cmd.Parameters.AddWithValue("@ID", ID);

            SqlDataReader newReader = cmd.ExecuteReader();

            while (newReader.Read())
            {
                myStrawPoll.setStrawPollQuestion((String)newReader["Question"]);
                myStrawPoll.setMultipleChoices((bool)newReader["MultipleChoices"]);
                myStrawPoll.setNbrVotesStrawPoll((int)newReader["NbrVotes"]);
                myStrawPoll.setURLStrawPoll((String)newReader["URLStrawPoll"]);
                myStrawPoll.setURLDeletion((String)newReader["URLDeletion"]);
                myStrawPoll.setURLResults((String)newReader["URLResult"]);
                myStrawPoll.setIsActive((bool)newReader["IsActive"]);
            }

            newReader.Close();

            String queryGetAnswers = "SELECT * FROM Answer WHERE NumStrawPoll = @ID;";

            SqlCommand cmdAnswer = new SqlCommand(queryGetAnswers, newDataBaseTask.getSqlConnection());

            cmdAnswer.Parameters.AddWithValue("@ID", ID);

            SqlDataReader newReaderAnswer = cmdAnswer.ExecuteReader();

            List <Models.Answer> answers = new List <Models.Answer>();

            while (newReaderAnswer.HasRows)
            {
                while (newReaderAnswer.Read())
                {
                    Models.Answer newAnswer = new Models.Answer((String)newReaderAnswer["Answer"], (int)newReaderAnswer["NbrVotes"]);
                    answers.Add(newAnswer);
                }
                newReaderAnswer.NextResult();
            }

            newReaderAnswer.Close();
            newDataBaseTask.CloseConnection();

            //Set answers with database datas
            myAnswerOne   = answers.ElementAt(0);
            myAnswerTwo   = answers.ElementAt(1);
            myAnswerThree = answers.ElementAt(2);
            myAnswerFour  = answers.ElementAt(3);

            //SEND TO THE VIEW
            ViewBag.StrawPoll = myStrawPoll;

            ViewBag.aOne   = myAnswerOne.getAnswer();
            ViewBag.vOne   = myAnswerOne.getNbrVotesByAnswer();
            ViewBag.aTwo   = myAnswerTwo.getAnswer();
            ViewBag.vTwo   = myAnswerTwo.getNbrVotesByAnswer();
            ViewBag.aThree = myAnswerThree.getAnswer();
            ViewBag.vThree = myAnswerThree.getNbrVotesByAnswer();
            ViewBag.aFour  = myAnswerFour.getAnswer();
            ViewBag.vFour  = myAnswerFour.getNbrVotesByAnswer();

            return(View("Result"));
        }
        /// <summary>
        /// Check if the strawpoll is either deleted or allready answered by the current user (using cookies).
        /// If not, display the vote page
        /// </summary>
        /// <param name="ID">The strawpoll's unique ID</param>
        /// <returns>
        ///     <list type="bullet">
        ///         <item>
        ///             <description>View Error_404.cshtml</description>
        ///         </item>
        ///         <item>
        ///             <description>View CookieError.cshtml</description>
        ///         </item>
        ///         <item>
        ///             <description>View UniqueChoice.cshtml</description>
        ///         </item>
        ///         <item>
        ///             <description>View MultipleChoices.cshtml</description>
        ///         </item>
        ///     </list>
        /// </returns>
        public ActionResult VotePage(int ID)
        {
            Models.StrawPoll myStrawPoll   = new Models.StrawPoll();
            Models.Answer    myAnswerOne   = new Models.Answer();
            Models.Answer    myAnswerTwo   = new Models.Answer();
            Models.Answer    myAnswerThree = new Models.Answer();
            Models.Answer    myAnswerFour  = new Models.Answer();

            //Get strawpoll in database
            String          queryGetStrawPoll;
            ConnectionQuery newDataBaseTask = new ConnectionQuery();

            queryGetStrawPoll = "SELECT * FROM StrawPoll WHERE NumStrawPoll = @ID;";

            newDataBaseTask.OpenConnection();

            SqlCommand cmd = new SqlCommand(queryGetStrawPoll, newDataBaseTask.getSqlConnection());

            cmd.Parameters.AddWithValue("@ID", ID);

            SqlDataReader newReader = cmd.ExecuteReader();

            while (newReader.Read())
            {
                myStrawPoll.setStrawPollQuestion((String)newReader["Question"]);
                myStrawPoll.setMultipleChoices((bool)newReader["MultipleChoices"]);
                myStrawPoll.setNbrVotesStrawPoll((int)newReader["NbrVotes"]);
                myStrawPoll.setURLStrawPoll((String)newReader["URLStrawPoll"]);
                myStrawPoll.setURLDeletion((String)newReader["URLDeletion"]);
                myStrawPoll.setURLResults((String)newReader["URLResult"]);
                myStrawPoll.setIsActive((bool)newReader["IsActive"]);
            }

            newReader.Close();

            String queryGetAnswers = "SELECT * FROM Answer WHERE NumStrawPoll = @ID;";

            SqlCommand cmdAnswer = new SqlCommand(queryGetAnswers, newDataBaseTask.getSqlConnection());

            cmdAnswer.Parameters.AddWithValue("@ID", ID);

            SqlDataReader newReaderAnswer = cmdAnswer.ExecuteReader();

            List <Models.Answer> answers = new List <Models.Answer>();

            while (newReaderAnswer.HasRows)
            {
                while (newReaderAnswer.Read())
                {
                    Models.Answer newAnswer = new Models.Answer((String)newReaderAnswer["Answer"], (int)newReaderAnswer["NbrVotes"]);
                    answers.Add(newAnswer);
                }
                newReaderAnswer.NextResult();
            }

            newReaderAnswer.Close();
            newDataBaseTask.CloseConnection();

            myAnswerOne   = answers.ElementAt(0);
            myAnswerTwo   = answers.ElementAt(1);
            myAnswerThree = answers.ElementAt(2);
            myAnswerFour  = answers.ElementAt(3);

            //Send data to the views
            ViewBag.StrawPoll   = myStrawPoll;
            ViewBag.answerOne   = myAnswerOne;
            ViewBag.answerTwo   = myAnswerTwo;
            ViewBag.answerThree = myAnswerThree;
            ViewBag.answerFour  = myAnswerFour;

            ViewBag.IDStrawPoll = ID;

            bool hasVoted = getCookies(ID);

            if (myStrawPoll.getIsActive() == false)
            {
                return(View("Error_404"));
            }
            else if (hasVoted)
            {
                return(View("CookieError"));
            }
            else if (myStrawPoll.getMultipleChoices() == false)
            {
                return(View("UniqueChoice"));
            }
            else
            {
                return(View("MultipleChoices"));
            }
        }