private void BuildDataList()
    {
        if (SessionState.Questionnaire != null)
        {
            PollQuestionCollection pollQuestions = PollQuestionCollection.GetByQuestionnaire(SessionState.Questionnaire.QuestionnaireID);
            QuestionRankMax = pollQuestions.MaxRank();

            DataListQuestion.DataSource = pollQuestions;
            DataListQuestion.DataBind();

            // Trouver les reponses
            foreach (DataListItem dli in DataListQuestion.Items)
            {
                DataList dl = new DataList();
                dl = ( DataList )dli.FindControl("DataListReponse");

                HiddenField hf = new HiddenField();
                hf = ( HiddenField )dli.FindControl("PollQuestionId");
                Guid pollQuestionId          = new Guid(hf.Value);
                PollAnswerCollection answers = PollAnswerCollection.GetByPollQuestionID(pollQuestionId);

                dl.DataSource = answers;
                dl.DataBind();
            }
        }

        Trace.Warn("BuildDataList");
    }
    private void BuildDataList()
    {
        Trace.Warn("BuildDataList");

        if (SessionState.Questionnaire != null)
        {
            PollQuestionCollection pollQuestions = PollQuestionCollection.GetByQuestionnaire(SessionState.Questionnaire.QuestionnaireID);
            QuestionRankMax = pollQuestions.MaxRank();

            DropDownListCopierAPartirDe.Items.Clear();
            DropDownListCopierAPartirDe.Items.Add("");
            foreach (PollQuestion pq in pollQuestions)
            {
                DropDownListCopierAPartirDe.Items.Add(pq.Rank.ToString());
            }

            DataListQuestion.DataSource = pollQuestions;
            DataListQuestion.DataBind();

            // Trouver les reponses
            foreach (DataListItem dli in DataListQuestion.Items)
            {
                DataList dl = new DataList();
                dl = ( DataList )dli.FindControl("DataListReponse");

                HiddenField hf = new HiddenField();
                hf = ( HiddenField )dli.FindControl("PollQuestionId");
                Guid pollQuestionId          = new Guid(hf.Value);
                PollAnswerCollection answers = PollAnswerCollection.GetByPollQuestionID(pollQuestionId);

                dl.DataSource = answers;
                dl.DataBind();
            }
        }
    }
    protected void ButtonCopier_Click(object sender, EventArgs e)
    {
        Reporter.Trace("ButtonCopier_Click");

        if (( int )Cache["QuestionnaireID "] == 0)
        {
            ValidationMessage.Text    += "Choisir un questionnaire à copier.<br/>";
            ValidationMessage.CssClass = "LabelValidationMessageErrorStyle";
            ValidationMessage.Visible  = true;
        }
        else
        {
            int           status           = 0;
            MemberInfo    membre           = MemberInfo.GetMemberInfo(( Guid )Cache["MembreGUID"]);
            Questionnaire questionnaire    = Questionnaire.GetQuestionnaire(( int )Cache["QuestionnaireID "]);
            Questionnaire newquestionnaire = new Questionnaire();

            Reporter.Trace("GetMemberInfo() GetQuestionnaire()");

            // Creation d'un nouveau Questionnaire
            if (( int )Cache["QuestionnaireExistantID"] == 0)
            {
                newquestionnaire.Description  = questionnaire.Description;
                newquestionnaire.Style        = questionnaire.Style;
                newquestionnaire.Valider      = questionnaire.Valider;
                newquestionnaire.Fin          = questionnaire.Fin;
                newquestionnaire.Anonyme      = questionnaire.Anonyme;
                newquestionnaire.Compteur     = questionnaire.Compteur;
                newquestionnaire.DateCreation = DateTime.Now;
                newquestionnaire.MembreGUID   = ( Guid )Cache["MembreGUID"];
                newquestionnaire.CodeAcces    = ( int )Cache["CodeAcces"];

                ValidationMessage.Text += "<br />Création du Questionnaire : " + newquestionnaire.Description + ":" + newquestionnaire.CodeAcces + "<br />";
                if (User.IsInRole("Administrateur"))
                {
                    ValidationMessage.Text += "Pour le membre : " + membre.NomUtilisateur + "/" + membre.Nom + "/" + membre.Prenom + "<br />";
                }

                // Tester les limitations avant d'ajouter le questionnaire
                if (SessionState.Limitations.LimiteQuestionnaires)
                {
                    // BUG05062010 12072010
                    SessionState.Questionnaire = null;

                    Tools.PageValidation("La limite du nombre de Questionnaires : " + SessionState.Limitations.NombreQuestionnaires + " est atteinte.<br/>Contactez l'administrateur.");
                }

                status = Questionnaire.Create(newquestionnaire);
                if (status == 1)
                {
                    ValidationMessage.Text += "Questionnaire créé correctement.<br/>";

                    // BUG05062010
                    // Prendre en compte le nouveau Questionnaire
                    //SessionState.Questionnaires.Add( questionnaire );
                    //SessionState.Questionnaire = questionnaire;
                    //SessionState.Limitations.AjouterQuestionnaire();
                    SessionState.Questionnaires.Add(newquestionnaire);
                    SessionState.Questionnaire = newquestionnaire;
                    SessionState.Limitations.AjouterQuestionnaire();
                }
                else if (status == 2)
                {
                    ValidationMessage.Text    += "Le Questionnaire existe déjà.<br>";
                    ValidationMessage.CssClass = "LabelValidationMessageErrorStyle";
                }
                else
                {
                    ValidationMessage.Text    += "Erreur sur la création du Questionnaire<br/>";
                    ValidationMessage.CssClass = "LabelValidationMessageErrorStyle";
                }
            }
            else // Questionnaire existant
            {
                newquestionnaire = Questionnaire.GetQuestionnaire(( int )Cache["QuestionnaireExistantID"]);

                // BUG05062010
                // Arrive ici la DropDownListQuestionnaire a modifie
                // SessionState.Questionnaire avec le questionnaire de l'Intervieweur
                // il faut donc remmettre SessionState.Questionnaire a la valeur de l'utilisateur
                SessionState.Questionnaire = newquestionnaire;

                ValidationMessage.Text += "<br />Copie du Questionnaire : " + newquestionnaire.Description + ":" + newquestionnaire.CodeAcces + "<br />";
                ValidationMessage.Text += "Pour le membre : " + membre.NomUtilisateur + "/" + membre.Nom + "/" + membre.Prenom + "<br />";
            }

            int rank = 0;
            // Conserver le rang des Questions avec un biais MaxRank
            if (( int )Cache["QuestionnaireExistantID"] != 0)
            {
                PollQuestionCollection questionsExistantes = PollQuestionCollection.GetByQuestionnaire(( int )Cache["QuestionnaireExistantID"]);
                rank = questionsExistantes.MaxRank() + 1;
            }

            Reporter.Trace("Questionnaire copier début");

            foreach (PollQuestion question in ( PollQuestionCollection )Cache["Questions"])
            {
                ValidationMessage.Text += "----Création de la Question : " + question.Question + "<br />";
                PollQuestion q = new PollQuestion();
                q.Question           = question.Question;
                q.Rank               = question.Rank + rank; // Ajouter le Biais
                q.Societe            = question.Societe;
                q.Obligatoire        = question.Obligatoire;
                q.Fin                = question.Fin;
                q.ChoixMultiple      = question.ChoixMultiple;
                q.ChoixMultipleMin   = question.ChoixMultipleMin; //BUG20100330
                q.ChoixMultipleMax   = question.ChoixMultipleMax;
                q.CreationDate       = DateTime.Now;
                q.Instruction        = question.Instruction;
                q.Message            = question.Message;
                q.MessageHaut        = question.MessageHaut;
                q.SautPage           = question.SautPage;
                q.Tableau            = question.Tableau;
                q.AlignementQuestion = question.AlignementQuestion;
                q.AlignementReponse  = question.AlignementReponse;
                q.QuestionnaireID    = newquestionnaire.QuestionnaireID;
                q.MembreGUID         = membre.MembreGUID;

                // Tester les limitations avant d'ajouter la question
                if (SessionState.Limitations.LimiteQuestions)
                {
                    Tools.PageValidation("La limite du nombre de Questions : " + SessionState.Limitations.NombreQuestions + " est atteinte.<br/>Contactez l'administrateur.");
                }

                status = PollQuestion.Create(q);
                ValidationMessage.Text += "    status : " + status + "<br/>";
                SessionState.Limitations.AjouterQuestion();

                PollAnswerCollection reponses = PollAnswerCollection.GetByPollQuestionID(question.PollQuestionId);
                foreach (PollAnswer reponse in reponses)
                {
                    Reporter.Trace("PollAnswer.Create()");

                    ValidationMessage.Text += "----Création de la Réponse : " + reponse.Answer + "<br />";
                    PollAnswer a = new PollAnswer();
                    a.PollQuestionId = q.PollQuestionId;
                    a.Answer         = reponse.Answer;
                    a.TypeReponse    = reponse.TypeReponse;
                    a.Width          = reponse.Width;
                    a.Rows           = reponse.Rows;
                    a.AlignLeft      = reponse.AlignLeft;
                    a.Horizontal     = reponse.Horizontal;
                    a.Obligatoire    = reponse.Obligatoire;
                    a.Rank           = reponse.Rank;
                    a.Score          = reponse.Score;

                    status = PollAnswer.Create(a);
                    ValidationMessage.Text += "    status : " + status.ToString() + "<br />";
                }
            } //foreach ( PollQuestion question in questions )

            // Ne laisser faire qu'une copie
            ButtonCopier.Visible = false;

            // BUG05062010
            // NE PAS FAIRE ICI
            //// Creation d'un nouveau Questionnaire
            //// Prendre en compte le nouveau Questionnaire
            //if ( ( int )Cache[ "QuestionnaireExistantID" ] == 0 )
            //{
            //    SessionState.Questionnaires.Add( newquestionnaire );
            //    SessionState.Questionnaire = newquestionnaire;
            //}

            Cache["QuestionnaireID "]        = 0; // fermer le formulaire
            Cache["QuestionnaireExistantID"] = 0;

            // Attention c'est faux Questionnaire.Create() retourn 1 si OK
            if (status != 0)
            {
                ValidationMessage.Text += "Erreur à la copie du Questionnaire status : " + status.ToString() + "<br />";
            }

            Reporter.Trace("Questionnaire copier fin");

            ButtonAjouterQuestion.Visible = true;
        }
    }
    /// <summary>
    /// !!!!!!!!!!!!!
    /// Attention !!!
    /// !!!!!!!!!!!!!
    /// Je ne peux pas utiliser cette fonction pour copier un questionnaire pour un utilisateur non authentifie
    /// On ne peut pas utiliser SessionState pour un utilisateur non authentifie
    /// lorsque l'utilisateur s'enregsitre mais qu'il n'est pas encore totalement authentifié
    /// SessionSate crée des Erreurs d'un autre monde !!!
    /// Si je voulais réintrégrer ce code dans Questionnaire/Copier.aspx il faudrait prendre cette précaution
    /// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    /// Ce jour là il y a 5 nouveaux utilisateurs qui ce sont enregistrés !
    /// </summary>
    /// <param name="QuestionnaireID"></param>
    /// <param name="MembreGUID"></param>
    /// <param name="QuestionnaireExistantID"></param>
    /// <returns></returns>
    public static string CopierQuestionnaire(int QuestionnaireID, Guid MembreGUID, int QuestionnaireExistantID)
    {
        string message = "";
        string msg     = "";

        if (QuestionnaireID == 0)
        {
            message += "Choisir un questionnaire à copier.<br/>";
        }
        else
        {
            int           status           = 0;
            MemberInfo    membre           = MemberInfo.GetMemberInfo(MembreGUID);
            Questionnaire questionnaire    = Questionnaire.GetQuestionnaire(QuestionnaireID);
            Questionnaire newquestionnaire = new Questionnaire();

            // Calculer un nouveau CodeAcces avant de pouvoir Copier le Questionnaire
            ArrayList codes     = QuestionnaireDAL.GetCodeAccessAll();
            string    codeAcces = Tools.CalculCodeAcces(membre.MembreID, codes).ToString();

            // Creation d'un nouveau Questionnaire
            if (QuestionnaireExistantID == 0)
            {
                newquestionnaire.Description  = questionnaire.Description;
                newquestionnaire.Style        = questionnaire.Style;
                newquestionnaire.Valider      = questionnaire.Valider;
                newquestionnaire.Fin          = questionnaire.Fin;
                newquestionnaire.Anonyme      = questionnaire.Anonyme;
                newquestionnaire.Compteur     = questionnaire.Compteur;
                newquestionnaire.DateCreation = DateTime.Now;
                newquestionnaire.MembreGUID   = MembreGUID;
                newquestionnaire.CodeAcces    = int.Parse(codeAcces);

                message += "<br />Création du Questionnaire : " + newquestionnaire.Description + ":" + newquestionnaire.CodeAcces + "<br />";
                if (HttpContext.Current.User.IsInRole("Administrateur"))
                {
                    message += "Pour le membre : " + membre.NomUtilisateur + "/" + membre.Nom + "/" + membre.Prenom + "<br />";
                }

                //BUG00020100215
                //if ( SessionState.Limitations.LimiteQuestionnaires )
                //{
                //    Tools.PageValidation( "La limite du nombre de Questionnaires : " + SessionState.Limitations.NombreQuestionnaires + " est atteinte.<br/>Contactez l'administrateur." );
                //}

                status = Questionnaire.Create(newquestionnaire);
                if (status == 1)
                {
                    msg     += "Copie du questionnaire d'exemple.<br/>";
                    message += "Questionnaire créé correctement.<br/>";
                    //BUG00020100215
                    //SessionState.Limitations.AjouterQuestionnaire();
                }
                else if (status == 2)
                {
                    msg     += "Erreur à la copie du questionnaire exemple.<br/>";
                    message += "Le Questionnaire existe déjà.<br/>";
                }
                else
                {
                    msg     += "Erreur à la copie du questionnaire exemple.<br/>";
                    message += "Erreur sur la création du Questionnaire<br/>";
                }
            }
            else // Questionnaire existant
            {
                newquestionnaire = Questionnaire.GetQuestionnaire(QuestionnaireExistantID);

                message += "<br />Copie du Questionnaire : " + newquestionnaire.Description + ":" + newquestionnaire.CodeAcces + "<br />";
                message += "Pour le membre : " + membre.NomUtilisateur + "/" + membre.Nom + "/" + membre.Prenom + "<br />";
            }

            int rank = 0;
            // Conserver le rang des Questions avec un biais MaxRank
            if (QuestionnaireExistantID != 0)
            {
                PollQuestionCollection questionsExistantes = PollQuestionCollection.GetByQuestionnaire(QuestionnaireExistantID);
                rank = questionsExistantes.MaxRank() + 1;
            }

            PollQuestionCollection questions = PollQuestionCollection.GetByQuestionnaire(QuestionnaireID);
            foreach (PollQuestion question in questions)
            {
                message += "----Création de la Question : " + question.Question + "<br />";
                PollQuestion q = new PollQuestion();
                q.Question           = question.Question;
                q.Rank               = question.Rank + rank; // Ajouter le Biais
                q.Societe            = question.Societe;
                q.Obligatoire        = question.Obligatoire;
                q.Fin                = question.Fin;
                q.ChoixMultiple      = question.ChoixMultiple;
                q.ChoixMultipleMin   = question.ChoixMultipleMin; //BUG20100330
                q.ChoixMultipleMax   = question.ChoixMultipleMax;
                q.CreationDate       = DateTime.Now;
                q.Instruction        = question.Instruction;
                q.Message            = question.Message;
                q.MessageHaut        = question.MessageHaut;
                q.SautPage           = question.SautPage;
                q.Tableau            = question.Tableau;
                q.AlignementQuestion = question.AlignementQuestion;
                q.AlignementReponse  = question.AlignementReponse;
                q.QuestionnaireID    = newquestionnaire.QuestionnaireID;
                q.MembreGUID         = membre.MembreGUID;

                //BUG00020100215
                //// Tester les limitations avant d'ajouter la question
                //if ( SessionState.Limitations.LimiteQuestions )
                //{
                //    Tools.PageValidation( "La limite du nombre de Questions : " + SessionState.Limitations.NombreQuestions + " est atteinte.<br/>Contactez l'administrateur." );
                //}

                status   = PollQuestion.Create(q);
                message += "    status : " + status + "<br/>";
                //BUG00020100215
                //SessionState.Limitations.AjouterQuestion();

                PollAnswerCollection reponses = PollAnswerCollection.GetByPollQuestionID(question.PollQuestionId);
                foreach (PollAnswer reponse in reponses)
                {
                    message += "----Création de la Réponse : " + reponse.Answer + "<br />";
                    PollAnswer a = new PollAnswer();
                    a.PollQuestionId = q.PollQuestionId;
                    a.Answer         = reponse.Answer;
                    a.TypeReponse    = reponse.TypeReponse;
                    a.Width          = reponse.Width;
                    a.Rows           = reponse.Rows;
                    a.AlignLeft      = reponse.AlignLeft;
                    a.Horizontal     = reponse.Horizontal;
                    a.Obligatoire    = reponse.Obligatoire;
                    a.Rank           = reponse.Rank;
                    a.Score          = reponse.Score;

                    status   = PollAnswer.Create(a);
                    message += "    status : " + status.ToString() + "<br />";
                }
            } //foreach ( PollQuestion question in questions )

            // Ne laisser faire qu'une copie
            //ButtonCopier.Visible = false;

            //
            // Attention BUG l'acces a SessionState cree un BUG d'un autre monde
            //
            // peut pas evaluer l'exepression car trop en haut de la pile
            //SessionState.Questionnaire = newquestionnaire;

            // Creation d'un nouveau Questionnaire
            //if ( QuestionnaireExistantID == 0 )
            //{
            //    SessionState.Questionnaires.Add( newquestionnaire );
            //}

            QuestionnaireID         = 0; // fermer le formulaire
            QuestionnaireExistantID = 0;

            // Attention c'est faux Questionnaire.Create() retourn 1 si OK
            if (status != 0)
            {
                message += "Erreur à la copie du Questionnaire status : " + status.ToString() + "<br />";
            }

            //ButtonAjouterQuestion.Visible = true;
        }

        //return message;
        return(msg);
    }
Exemple #5
0
    protected void ButtonAjouterQuestion_Click(object sender, EventArgs e)
    {
        LabelValidationMessage.Text = "";
        for (int i = 1; i <= NombreQuestionEnchainee; i++)
        {
            string tableQuestionEnchaineeID   = "TableQuestionEnchainee" + i.ToString();
            string userControlID              = "Question" + i.ToString();
            System.Web.UI.UserControl control = (System.Web.UI.UserControl)PanelQuestions.FindControl(userControlID);
            Table tableQuestionEnchainee      = ( Table )control.FindControl(tableQuestionEnchaineeID);

            // Petite precaution toujours aussi dur d'ecrire ce code
            if (tableQuestionEnchainee == null)
            {
                break;
            }

            TextBox textBox = ( TextBox )tableQuestionEnchainee.FindControl("TextBoxQuestionEnchainee");
            if (string.IsNullOrEmpty(textBox.Text.Trim()))
            {
                LabelValidationMessage.Visible = true;
                LabelValidationMessage.Text   += "Donner un libellé pour la Question : " + i.ToString() + "<br/>";
                continue;
            }

            DropDownList dropDownList = ( DropDownList )tableQuestionEnchainee.FindControl("DropDownListTypeQuestionReponse");
            if (dropDownList.SelectedValue == "-1")
            {
                LabelValidationMessage.Visible = true;
                LabelValidationMessage.Text   += "Choisir un type de Question pour la Question : " + textBox.Text + "<br/>";
                continue;
            }

            CheckBox checkBox = ( CheckBox )tableQuestionEnchainee.FindControl("CheckBoxQuestionObligatoire");

            PollQuestion question = new PollQuestion();

            // Premiere Question, est-ce un tableau ?
            if (i == 1)
            {
                if (TextBoxTitreTableau.Text.Trim() != "")
                {
                    question.Tableau = TextBoxTitreTableau.Text.Trim();
                }
                if (TextBoxPageTableau.Text.Trim() != "")
                {
                    question.SautPage = TextBoxPageTableau.Text.Trim();
                }
            }

            // Derniere Question, terminer le tableau
            if (i == NombreQuestionEnchainee)
            {
                if (TextBoxTitreTableau.Text.Trim() != "")
                {
                    question.Tableau = Tableau.Fin;
                }
            }

            question.CreationDate    = DateTime.Now;
            question.Question        = textBox.Text.Trim();
            question.Obligatoire     = checkBox.Checked;
            question.ChoixMultiple   = TypeQuestionReponse.GetTypeQuestion(dropDownList.SelectedValue);
            question.QuestionnaireID = SessionState.Questionnaire.QuestionnaireID;
            question.MembreGUID      = SessionState.Questionnaire.MembreGUID;
            question.Societe         = String.Empty;
            question.Instruction     = String.Empty;
            question.Message         = String.Empty;
            PollQuestionCollection pollQuestions = PollQuestionCollection.GetByQuestionnaire(SessionState.Questionnaire.QuestionnaireID);
            question.Rank = pollQuestions.MaxRank() + 1;

            // Tester les limitations avant d'ajouter la question
            if (SessionState.Limitations.LimiteQuestions)
            {
                Tools.PageValidation("La limite du nombre de Questions : " + SessionState.Limitations.NombreQuestions + " est atteinte.<br/>Contactez l'administrateur.");
            }

            int status = PollQuestion.Create(question);
            if (status != 0)
            {
                LabelValidationMessage.Visible = true;
                LabelValidationMessage.Text   += "Erreur à la création de la Question.<br/>";
            }
            else
            {
                SessionState.Limitations.AjouterQuestion();

                LabelValidationMessage.Visible = true;
                LabelValidationMessage.Text   += "Question crée correctement : " + question.Question + "<br/>";
            }

            // Creer les Reponses a la Question
            TextBox textBoxReponses = ( TextBox )tableQuestionEnchainee.FindControl("TextBoxReponses");
            if (string.IsNullOrEmpty(textBoxReponses.Text.Trim()) == false)
            {
                int      rank          = 1;
                string[] reponsesSplit = textBoxReponses.Text.Trim().Split(';');
                foreach (string rep in reponsesSplit)
                {
                    PollAnswer reponse = new PollAnswer(rep.Trim());
                    reponse.PollQuestionId = question.PollQuestionId;
                    reponse.TypeReponse    = TypeQuestionReponse.GetTypeReponse(dropDownList.SelectedValue);
                    //reponse.Obligatoire = cbxObligatoire.Checked; on ne sait pas faire
                    reponse.Rank = rank;

                    int status2 = PollAnswer.Create(reponse);
                    rank += 1;
                    if (status2 != 0)
                    {
                        LabelValidationMessage.Visible = true;
                        LabelValidationMessage.Text   += "Erreur à la création de la Réponse : " + rep + "<br/>";
                    }
                    else
                    {
                        LabelValidationMessage.Visible = true;
                        LabelValidationMessage.Text   += "  Réponse crée correctement : " + rep + "<br/>";
                    }
                }
            }
        }
    }