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); }
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/>"; } } } } }