Exemplo n.º 1
0
    protected void DropDownListMembre_SelectedIndexChanged(object sender, EventArgs e)
    {
        if (DropDownListMembre.SelectedIndex != 0)
        {
            string     selected = DropDownListMembre.SelectedMembre;
            string[]   sel      = selected.Split('/');
            string     nom      = sel[0];
            string     prenom   = sel[1];
            MemberInfo membre   = MemberInfo.GetMemberInfo(nom, prenom);

            LabelMembre.Text  = membre.Nom + "/" + membre.Prenom + "/" + membre.Societe;
            LabelNom.Text     = membre.Nom;
            LabePrenom.Text   = membre.Prenom;
            LabelSociete.Text = membre.Societe;

            ArrayList codes     = QuestionnaireDAL.GetCodeAccessAll();
            string    codeAcces = Tools.CalculCodeAcces(membre.MembreID, codes).ToString();
            HiddenFieldMembreGUID.Value = membre.MembreGUID.ToString();

            LabelCodeAcces.Text = codeAcces;

            LabelDateCreation.Text = DateTime.Now.ToString();

            SqlDataSourceMembreQuestionnaire.SelectCommand = SelectCommand();
            SqlDataSourceMembreQuestionnaire.DataBind();
        }
    }
Exemplo n.º 2
0
    protected void ButtonCopier_Click(object sender, EventArgs e)
    {
        if (SessionState.MemberInfo != null)
        {
            if (DropDownListQuestionnaire.SelectedQuestionnaire != "-1")
            {
                // Calculer un nouveau CodeAcces avant de pouvoir Copier le Questionnaire
                ArrayList codes     = QuestionnaireDAL.GetCodeAccessAll();
                string    codeAcces = Tools.CalculCodeAcces(SessionState.MemberInfo.MembreID, codes).ToString();

                Response.Redirect("~/Questionnaire/Copier.aspx?QuestionnaireID=" + SessionState.Questionnaire.QuestionnaireID.ToString() + "&MembreGUID=" + SessionState.MemberInfo.MembreGUID.ToString() + "&CodeAcces=" + codeAcces);
            }
        }
    }
Exemplo n.º 3
0
    protected void ButtonCopier_Click(object sender, EventArgs e)
    {
        MemberInfo membre = new MemberInfo();

        // Pour l'Admin uniquement, copier un Questionnaire pour un autre Membre
        if (DropDownListMembre.SelectedMembre != "-1" && DropDownListMembre.SelectedMembre != LabelMembre.Text)
        {
            string   selected = DropDownListMembre.SelectedMembre;
            string[] sel      = selected.Split('/');
            string   nom      = sel[0];
            string   prenom   = sel[1];

            membre = MemberInfo.GetMemberInfo(nom, prenom);
        }
        else
        {
            membre = MemberInfo.GetMemberInfo(LabelNom.Text, LabePrenom.Text);
        }

        ArrayList codes     = QuestionnaireDAL.GetCodeAccessAll();
        string    codeAcces = Tools.CalculCodeAcces(membre.MembreID, codes).ToString();

        Response.Redirect("~/Questionnaire/Copier.aspx?QuestionnaireID=" + QuestionnaireID.ToString() + "&MembreGUID=" + membre.MembreGUID.ToString() + "&CodeAcces=" + codeAcces);
    }
    private void ImporterFichier()
    {
        DateTime dateDebutAnalyse = DateTime.Now;

        if (User.IsInRole("Administrateur") && MemberInfoData == null)
        {
            MessageAnalyse = "Désolé Admin, sélectionnez un Membre pour importer des données.";
            EventFinImport.Set();
            FinTraitement = true;
            return;
        }

        if (DocumentNom.PostedFile.FileName == "")
        {
            MessageAnalyse = "Choisissez un fichier à importer. ";
            EventFinImport.Set();
            FinTraitement = true;
            return;
        }

        if (CheckBoxImportVotes.Checked && CheckBoxImportInterviewes.Checked == false)
        {
            CheckBoxExportIntervieves.Checked = true;
            MessageAnalyse = "Vous ne pouvez pas importer les votes sans exporter les interviewés. ";
            EventFinImport.Set();
            FinTraitement = true;
            return;
        }

        HttpPostedFile file = DocumentNom.PostedFile;
        int            size = file.ContentLength;

        if (size <= 0)
        {
            MessageAnalyse = "Un problème est survenu avec le téléchargement du fichier sur le serveur, le fichier n'est pas disponible. ";
            EventFinImport.Set();
            FinTraitement = true;
            return;
        }

        String virtualPath = "~/MemberDataFiles/";
        string filePath    = virtualPath;

        virtualPath += Path.GetFileName(DocumentNom.PostedFile.FileName);
        String physicalDir  = Server.MapPath(filePath);
        String physicalPath = Server.MapPath(virtualPath);

        // Sauver le fichier
        try
        {
            int tailleMax = 10 * 1024 * 1024; // 10 Mo
            if (DocumentNom.PostedFile.ContentLength >= tailleMax)
            {
                MessageAnalyse += "Error taille du fichier : " + Tools.FileSizeFormat(DocumentNom.PostedFile.ContentLength, "N");
                MessageAnalyse += " supérieure à la taille maximum : " + Tools.FileSizeFormat(tailleMax, "N");
                EventFinImport.Set();
                FinTraitement = true;
                return;
            }
            DocumentNom.PostedFile.SaveAs(physicalPath);
        }
        catch (Exception ex)
        {
            MessageAnalyse += ex.Message;
            EventFinImport.Set();
            FinTraitement = true;
            return;
        }

        DataSet dataSet = new DataSet();

        try
        {
            XmlReader xmlr = XmlReader.Create(physicalPath);
            dataSet.ReadXml(xmlr);
            xmlr.Close();
        }
        catch
        {
            MessageAnalyse += "Fichier non valide. ";
            File.Delete(physicalPath);
            EventFinImport.Set();
            FinTraitement = true;
            return;
        }

        // Dans le cadre d'un Tread on ne peut pas utiliser SessionState
        Limitation limitations = new Limitation(MemberInfoData.MembreGUID);

        //
        // Creer les Questionnaires
        //
        foreach (DataTable dt in dataSet.Tables)
        {
            if (dt.TableName.Contains("Questionnaire"))
            {
                // Tester les limitations avant d'ajouter le questionnaire
                if (limitations.LimiteQuestionnaires)
                {
                    MessageAnalyse += "La limite du nombre de Questionnaires : " + limitations.NombreQuestionnaires + " est atteinte.";
                    File.Delete(physicalPath);
                    EventFinImport.Set();
                    FinTraitement = true;
                    return;
                }

                Questionnaire questionnaire      = Questionnaire.FillFromXML(dt.Rows[0]);
                int           oldQuestionnaireID = questionnaire.QuestionnaireID;
                string        oldCodeAcces       = questionnaire.CodeAcces.ToString();

                questionnaire.MembreGUID   = MemberInfoData.MembreGUID;
                questionnaire.DateCreation = DateTime.Now; // Modifier la date de creation a maintenant

                ArrayList codes     = QuestionnaireDAL.GetCodeAccessAll();
                string    codeAcces = Tools.CalculCodeAcces(MemberInfoData.MembreID, codes).ToString();
                questionnaire.CodeAcces = int.Parse(codeAcces);

                int status = Questionnaire.Create(questionnaire);
                if (status == 1)
                {
                    MessageAnalyse += "Questionnaire : " + questionnaire.Description + " créé correctement.<br/>";
                    limitations.AjouterQuestionnaire();
                }
                else if (status == 2)
                {
                    MessageAnalyse += "Le Questionnaire : " + questionnaire.Description + " existe déjà.<br>";
                    File.Delete(physicalPath);
                    EventFinImport.Set();
                    FinTraitement = true;
                    return;
                }
                else
                {
                    MessageAnalyse += "Erreur sur la création du Questionnaire : " + questionnaire.Description + " <br/>";
                    File.Delete(physicalPath);
                    EventFinImport.Set();
                    FinTraitement = true;
                    return;
                }

                //
                // Tagger les Objets du Questionnaire avec le nouvel ID
                //
                int    newQuestionnaireID = questionnaire.QuestionnaireID;
                string newCodeAcces       = codeAcces;

                // Questions
                TaggerObjet(ref dataSet, "QQuestion", "QuestionnaireID", oldQuestionnaireID.ToString(), newQuestionnaireID.ToString());

                // Interviewe
                TaggerObjet(ref dataSet, "Personne", "QuestionnaireID", oldQuestionnaireID.ToString(), newQuestionnaireID.ToString());
                TaggerObjet(ref dataSet, "Personne", "PersonneCode", oldCodeAcces, newCodeAcces);

                // Votes
                TaggerObjet(ref dataSet, "Vote", "QuestionnaireID", oldQuestionnaireID.ToString(), newQuestionnaireID.ToString());

                // Score
                TaggerObjet(ref dataSet, "Score", "ScoreQuestionnaireID", oldQuestionnaireID.ToString(), newQuestionnaireID.ToString());
            }
            if (dt.TableName.Contains("QQuestion"))
            {
                // On passe aux Questions
                break;
            }
        }

        //
        // Creer les Questions
        //
        int nbQuestions = 0;

        foreach (DataTable dt in dataSet.Tables)
        {
            if (dt.TableName.Contains("QQuestion"))
            {
                // Tester les limitations avant d'ajouter la question
                if (limitations.LimiteQuestions)
                {
                    MessageAnalyse += "La limite du nombre de Questions : " + limitations.NombreQuestions + " est atteinte.";
                    File.Delete(physicalPath);
                    EventFinImport.Set();
                    FinTraitement = true;
                    return;
                }

                PollQuestion question      = PollQuestion.FillFromXML(dt.Rows[0]);
                string       oldQuestionID = question.PollQuestionId.ToString();
                question.MembreGUID = MemberInfoData.MembreGUID;
                int status = PollQuestion.Create(question);
                if (status != 0)
                {
                    MessageAnalyse += "Erreur à la création de la Question : " + question.Question + "<br/>";
                    File.Delete(physicalPath);
                    EventFinImport.Set();
                    FinTraitement = true;
                    return;
                }
                else
                {
                    nbQuestions += 1;
                    limitations.AjouterQuestion();
                }

                //
                // Tagger les Objets de la Question avec le nouvel ID
                //
                string newQuestionID = question.PollQuestionId.ToString();

                // Reponse
                TaggerObjet(ref dataSet, "Reponse", "PollQuestionId", oldQuestionID, newQuestionID);

                // Votes
                TaggerObjet(ref dataSet, "Vote", "PollQuestionId", oldQuestionID, newQuestionID);
            }
            if (dt.TableName.Contains("Reponse"))
            {
                // On passe aux Reponses
                break;
            }
        }
        MessageAnalyse += "Question créées : " + nbQuestions.ToString() + "<br/>";

        int nbReponses = 0;

        foreach (DataTable dt in dataSet.Tables)
        {
            if (dt.TableName.Contains("Reponse"))
            {
                PollAnswer reponse         = PollAnswer.FillFromXML(dt.Rows[0]);
                string     oldPollAnswerID = reponse.PollAnswerId.ToString();
                int        status          = PollAnswer.Create(reponse);
                if (status == 0)
                {
                    nbReponses += 1;
                }
                else
                {
                    MessageAnalyse += "Erreur à la création de la réponse : " + reponse.Answer;
                    File.Delete(physicalPath);
                    EventFinImport.Set();
                    FinTraitement = true;
                    return;
                }

                //
                // Tagger les Objets de la Reponse avec le nouvel ID
                //
                string newPollAnswerID = reponse.PollAnswerId.ToString();

                // Votes
                TaggerObjet(ref dataSet, "Vote", "PollAnswerId", oldPollAnswerID, newPollAnswerID);
            }
            if (dt.TableName.Contains("Personne"))
            {
                break;
            }
        }
        MessageAnalyse += "Réponses créés : " + nbReponses.ToString() + "<br/>";

        int nbInterviewes = 0;

        if (CheckBoxImportInterviewes.Checked)
        {
            foreach (DataTable dt in dataSet.Tables)
            {
                if (dt.TableName.Contains("Personne"))
                {
                    string   message         = "";
                    Personne personne        = Personne.FillFromXML(dt.Rows[0]);
                    string   oldPersonneGUID = personne.PersonneGUID.ToString();

                    // Trouver si l'utilisateur de ce questionnaire est limite
                    if (limitations.LimitesInterviewes)
                    {
                        MessageAnalyse += "La limite du nombre d'Interviewés : " + limitations.NombreInterviewes + " est atteinte.";
                        File.Delete(physicalPath);
                        EventFinImport.Set();
                        FinTraitement = true;
                        return;
                    }

                    int retCode = Personne.Create(personne, true, ref message);
                    if (retCode == 1)
                    {
                        nbInterviewes += 1;
                        limitations.AjouterInterviewes(1);
                    }
                    else
                    {
                        MessageAnalyse += message;
                        File.Delete(physicalPath);
                        EventFinImport.Set();
                        FinTraitement = true;
                        return;
                    }

                    //
                    // Tagger les Objets de la Reponse avec le nouvel ID
                    //
                    string newPersonneGUID = personne.PersonneGUID.ToString();

                    // Votes
                    TaggerObjet(ref dataSet, "Vote", "UserGUID", oldPersonneGUID, newPersonneGUID);
                }
                if (dt.TableName.Contains("Vote"))
                {
                    break;
                }
            }
        }
        MessageAnalyse += "Interviewés créés : " + nbInterviewes.ToString() + "<br/>";

        int nbVotes = 0;

        if (CheckBoxImportVotes.Checked)
        {
            foreach (DataTable dt in dataSet.Tables)
            {
                if (dt.TableName.Contains("Vote"))
                {
                    PollVote vote = PollVote.FillFromXML(dt.Rows[0]);

                    int status = PollVote.Create(vote);
                    if (status == 2)
                    {
                        MessageAnalyse += "Vote existe déjà";
                        File.Delete(physicalPath);
                        EventFinImport.Set();
                        FinTraitement = true;
                        return;
                    }
                    else
                    {
                        nbVotes += 1;
                    }
                }
                if (dt.TableName.Contains("Score"))
                {
                    break;
                }
            }

            if (limitations.LimitesReponses)
            {
                MessageAnalyse += "La limite du nombre de Réponses : " + limitations.NombreReponses + " est atteinte.";
                File.Delete(physicalPath);
                EventFinImport.Set();
                FinTraitement = true;
                return;
            }
        }
        MessageAnalyse += "Votes créés : " + nbVotes.ToString() + "<br/>";

        int nbScore = 0;

        foreach (DataTable dt in dataSet.Tables)
        {
            if (dt.TableName.Contains("Score"))
            {
                Score score  = Score.FillFromXML(dt.Rows[0]);
                int   status = Score.Create(score);
                if (status != 1)
                {
                    MessageAnalyse += "Erreur à la création du Score .<br/>";
                }
                else
                {
                    nbScore += 1;
                }
            }
        }
        MessageAnalyse += "Score créés : " + nbScore.ToString() + "<br/>";

        if (CheckBoxImportServeurSmtp.Checked)
        {
            foreach (DataTable dt in dataSet.Tables)
            {
                if (dt.TableName.Contains("SmtpServeur"))
                {
                    SmtpServer smtp = SmtpServer.FillFromXML(dt.Rows[0]);
                    smtp.UserGUID = MemberInfoData.MembreGUID;
                    int status = SmtpServer.Create(smtp);
                    if (status == 2)
                    {
                        MessageAnalyse += "Smtp : " + smtp.Email + " existe déjà.<br/>";
                        File.Delete(physicalPath);
                        EventFinImport.Set();
                        FinTraitement = true;
                        return;
                    }
                    else
                    {
                        MessageAnalyse += "Smtp crée correctement : " + smtp.Email + "<br/>";
                    }
                }
            }
        }

        DateTime dateFinAnalyse  = DateTime.Now;
        TimeSpan tempsTraitement = dateFinAnalyse - dateDebutAnalyse;

        MessageAnalyse += "- Taille du fichier : " + Tools.FileSizeFormat(DocumentNom.PostedFile.ContentLength, "N") + "<br/>";
        MessageAnalyse += "- Temps d'import : " + Tools.FormatTimeSpan(tempsTraitement) + "<br/>";

        File.Delete(physicalPath);
        EventFinImport.Set();
        FinTraitement = 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);
    }
Exemplo n.º 6
0
    protected void Page_Load(object sender, System.EventArgs e)
    {
        if (IsPostBack == false)
        {
            // Edition d'un Questionnaire existant
            if (Request.QueryString["QuestionnaireID"] != null || Request.QueryString["Edition"] != null)
            {
                Questionnaire questionnaire = new Questionnaire();

                if (Request.QueryString["Edition"] != null)
                {
                    // Choisir le premier Questionnaire a la place de l'utilisateur
                    if (SessionState.Questionnaire == null && SessionState.Questionnaires.Count > 0)
                    {
                        SessionState.Questionnaire = SessionState.Questionnaires[0];
                    }
                    if (SessionState.Questionnaire == null)
                    {
                        // Formulaire en mode creation
                        Response.Redirect("~/Questionnaire/Edit.aspx");
                    }

                    QuestionnaireID = SessionState.Questionnaire.QuestionnaireID;
                    questionnaire   = Questionnaire.GetQuestionnaire(QuestionnaireID);
                }

                if (Request.QueryString["QuestionnaireID"] != null)
                {
                    QuestionnaireID            = int.Parse(Request.QueryString["QuestionnaireID"]);
                    questionnaire              = Questionnaire.GetQuestionnaire(QuestionnaireID);
                    SessionState.Questionnaire = questionnaire;
                }

                LabelTitre.Text    = "Editer un Questionnaire";
                ButtonSave.Text    = "Sauver";
                ButtonSave.ToolTip = "Sauvegarder les modifications";

                MemberInfo membre = MemberInfo.Get(questionnaire.MembreGUID);
                HiddenFieldMembreGUID.Value = membre.MembreGUID.ToString();
                string lien = "";

                // Invitation vers le formulaire Contact/Register.aspx Mode.Complet "1"
                HyperLinkInvitationEnregistrementComplet.NavigateUrl = "~/Contact/Register.aspx?uid=" + membre.MembreGUID + "&qid=" + questionnaire.QuestionnaireID.ToString() + "&mod=1";
                HyperLinkInvitationEnregistrementComplet.Visible     = true; // Global.SettingsXml.EnregistrerContactAnonyme;
                lien = Utils.WebSiteUriWhithOutQuery.ToLower() + "/contact/register.aspx?uid=" + membre.MembreGUID + "&qid=" + questionnaire.QuestionnaireID.ToString() + "&mod=1";
                TextBoxInvitationEnregistrementComplet.Text = string.Format("<a href=\"{0}\" target=\"_blank\">{1}</a>", lien, "Accès au Questionnaire");

                // Invitation vers le formulaire Contact/Register.aspx Mode.CompletEmail mais pas de Telephone "2" mode par defaut
                HyperLinkInvitationEnregistrementCompletEmail.NavigateUrl = "~/Contact/Register.aspx?uid=" + membre.MembreGUID + "&qid=" + questionnaire.QuestionnaireID.ToString();
                HyperLinkInvitationEnregistrementCompletEmail.Visible     = true; // Global.SettingsXml.EnregistrerContactAnonyme;
                lien = Utils.WebSiteUriWhithOutQuery.ToLower() + "/contact/register.aspx?uid=" + membre.MembreGUID + "&qid=" + questionnaire.QuestionnaireID.ToString();
                TextBoxInvitationEnregistrementCompletEmail.Text = string.Format("<a href=\"{0}\" target=\"_blank\">{1}</a>", lien, "Accès au Questionnaire");

                // Invitation vers le formulaire Contact/Register.aspx Mode.Email "4"
                HyperLinkInvitationEnregistrementEmail.NavigateUrl = "~/Contact/Register.aspx?uid=" + membre.MembreGUID + "&qid=" + questionnaire.QuestionnaireID.ToString() + "&mod=4";
                HyperLinkInvitationEnregistrementEmail.Visible     = true; // Global.SettingsXml.EnregistrerContactAnonyme;
                lien = Utils.WebSiteUriWhithOutQuery.ToLower() + "/contact/register.aspx?uid=" + membre.MembreGUID + "&qid=" + questionnaire.QuestionnaireID.ToString() + "&mod=4";
                TextBoxInvitationEnregistrementEmail.Text = string.Format("<a href=\"{0}\" target=\"_blank\">{1}</a>", lien, "Accès au Questionnaire");

                // Invitation vers le formulaire Contact/Register.aspx Mode.Telephone "5"
                HyperLinkInvitationEnregistrementTelephone.NavigateUrl = "~/Contact/Register.aspx?uid=" + membre.MembreGUID + "&qid=" + questionnaire.QuestionnaireID.ToString() + "&mod=5";
                HyperLinkInvitationEnregistrementTelephone.Visible     = true; // Global.SettingsXml.EnregistrerContactAnonyme;
                lien = Utils.WebSiteUriWhithOutQuery.ToLower() + "/contact/register.aspx?uid=" + membre.MembreGUID + "&qid=" + questionnaire.QuestionnaireID.ToString() + "&mod=5";
                TextBoxInvitationEnregistrementTelephone.Text = string.Format("<a href=\"{0}\" target=\"_blank\">{1}</a>", lien, "Accès au Questionnaire");

                // Inviation vers le formulaire authentification Contact/Login.aspx
                HyperLinkInvitationEmailCodeAcces.NavigateUrl = "~/Contact/Login.aspx"; //?guid=" + membre.MembreGUID;
                HyperLinkInvitationEmailCodeAcces.Visible     = true;                   // Global.SettingsXml.EnregistrerContactAnonyme;
                lien = Utils.WebSiteUriWhithOutQuery.ToLower() + "/contact/login.aspx";
                TextBoxInvitationEmailCodeAcces.Text = string.Format("<a href=\"{0}\" target=\"_blank\">{1}</a>", lien, "Accès au Questionnaire");

                // Inviation vers le formulaire authentificationContact/Login.aspx Mode.Telephone "2"
                HyperLinkInvitationTelephoneCodeAcces.NavigateUrl = "~/Contact/Login.aspx?mod=2"; //?guid=" + membre.MembreGUID;
                HyperLinkInvitationTelephoneCodeAcces.Visible     = true;                         // Global.SettingsXml.EnregistrerContactAnonyme;
                lien = Utils.WebSiteUriWhithOutQuery.ToLower() + "/contact/login.aspx?mod=2";
                TextBoxInvitationTelehponeCodeAcces.Text = string.Format("<a href=\"{0}\" target=\"_blank\">{1}</a>", lien, "Accès au Questionnaire");

                // Lien vers les statistiques du questionnaire en cas de publication
                HyperLinkPublication.NavigateUrl = "~/Questionnaire/Publication.aspx?CodeAcces=" + questionnaire.CodeAcces.ToString();
                lien = Utils.WebSiteUriWhithOutQuery.ToLower() + "/questionnaire/publication.aspx?codeacces=" + questionnaire.CodeAcces.ToString();
                TextBoxPublication.Text = string.Format("<a href=\"{0}\" target=\"_blank\">{1}</a>", lien, "Accès au Statistiques");

                TextBoxDescription.Text = questionnaire.Description;
                CheckBoxValider.Checked = questionnaire.Valider;
                CheckBoxFin.Checked     = questionnaire.Fin;
                CheckBoxAnonyme.Checked = questionnaire.Anonyme;
                CheckBoxBloque.Checked  = questionnaire.Bloque;
                CheckBoxPublierQuestionnaire.Checked = questionnaire.Publier;
                CheckBoxAfficherCompteur.Checked     = questionnaire.Compteur;
                LabelDateCreation.Text            = questionnaire.DateCreation.ToString();
                LabelCodeAcces.Text               = questionnaire.CodeAcces.ToString();
                LabelNom.Text                     = membre.Nom;
                LabePrenom.Text                   = membre.Prenom;
                LabelSociete.Text                 = membre.Societe;
                DropDownListMembre.SelectedMembre = membre.Nom + "/" + membre.Prenom + "/" + membre.Societe;
                LabelMembre.Text                  = membre.Nom + "/" + membre.Prenom + "/" + membre.Societe;

                HtmlInputCheckBox checkBox = ( HtmlInputCheckBox )PopupLabelAnonymat.FindControl("CheckBoxToggleLabel");
                checkBox.Checked  = questionnaire.Anonymat;
                checkBox.Disabled = questionnaire.Anonymat;

                TrVoletCodeAcces.Visible        = true;
                PanelModeEnregistrement.Visible = true;
                PanelInviationFormulaireEnregistrement.Visible   = true;
                PanelInviationFormulaireAuthentification.Visible = true;
                PanelPublication.Visible           = true;
                PanelCloture.Visible               = true;
                PanelCompteurQuestion.Visible      = true;
                ImageButtonExpandQuestion.ImageUrl = "~/Images/collapse.jpg";
            }
            // Creation d'un nouveau Questionnaire
            else
            {
                LabelTitre.Text             = "Créer un Questionnaire";
                QuestionnaireID             = 0;
                HiddenFieldMembreGUID.Value = "";
                ButtonCopier.Visible        = false;
                ButtonSupprimer.Visible     = false;
                ButtonSave.Text             = "Créer";
                ButtonSave.ToolTip          = "Créer le Questionnaire";

                TrVoletCodeAcces.Visible        = false;
                PanelPublication.Visible        = false;
                PanelCompteurQuestion.Visible   = false;
                PanelModeEnregistrement.Visible = false;
                PanelInviationFormulaireEnregistrement.Visible   = false;
                PanelInviationFormulaireAuthentification.Visible = false;
                PanelCloture.Visible = false;

                // On ne peut pas ajouter des Questions
                ButtonAjouterQuestion.Visible = false;

                // Creation d'un questionnaire par un Client
                if (User.IsInRole("Client"))
                {
                    HiddenFieldMembreGUID.Value = SessionState.MemberInfo.MembreGUID.ToString();
                    MemberInfo membre = SessionState.MemberInfo;
                    LabelMembre.Text = membre.Nom + "/" + membre.Prenom + "/" + membre.Societe;

                    // Afficher une heure approximative de creation
                    LabelDateCreation.Text = DateTime.Now.ToString();

                    ArrayList codes = QuestionnaireDAL.GetCodeAccessAll();
                    LabelCodeAcces.Text = Tools.CalculCodeAcces(membre.MembreID, codes).ToString();

                    LabelNom.Text     = membre.Nom;
                    LabePrenom.Text   = membre.Prenom;
                    LabelSociete.Text = membre.Societe;
                }
            }

            TrVoletListQuestionnaire.Visible = false;
            ValidationMessage.Text           = "";
        }

        if (User.IsInRole("Administrateur"))
        {
            PanelAdmin.Visible = true;
            // Detourner Bloque pour cloture du questionnaire
            //LabelBloque.Visible = true;
            //CheckBoxBloque.Visible = true;

            // Pour Creer un Questionnaire, l'Admin doit choisir un Membre
            if (QuestionnaireID == 0)
            {
                DropDownListMembre.AutoPostBack          = true;
                DropDownListMembre.SelectedIndexChanged += new EventHandler(DropDownListMembre_SelectedIndexChanged);
            }
        }

        TableLienEnregistrement.Visible = CheckBoxAnonyme.Checked;
        TableLienPublication.Visible    = CheckBoxPublierQuestionnaire.Checked;

        SqlDataSourceMembreQuestionnaire.SelectCommand = SelectCommand();
    }