protected void Button_Creer_UV_Click(object sender, EventArgs e) { List <Panel> panes = new List <Panel>(); //On va parcourir chaque panel de question foreach (Control ctrl in panel_Questions_Container.Controls) { if (ctrl.ID != null) { if (ctrl.ID.Contains("Panel_Question_")) // on a à faire a un panel contenant questions + Réponses { Panel pane = (Panel)ctrl; if (!panes.Contains(pane)) { panes.Add(pane); } } } } // on a récupéré les panels des questions/réponses // on va les parcourir, pour créer en même temps question ET réponse int id = -1; bool hasOne = false; UVDb uvs = new UVDb(); int selectedUv = uvs.UVs.First(u => u.Denomination == this.RadioButtonList_ChoixUV.SelectedItem.Value).IdUv; Quizz q = new Quizz(QuizzName.Text.Trim(), selectedUv); List <Question> questions = new List <Question>(); foreach (Panel p in panes) { string questionID = p.ID.Substring(15); int.TryParse(questionID, out id); // On a récupéré l'id de la question //la textbox de la question TextBox tbQuestion = p.FindControl("TextBox_Question" + id) as TextBox; // On va créer des questions et des réponses Question question = new Question(q, tbQuestion.Text, AnswereType.QCM); // les textbox / checkbox des réponses : // C est ce panel qui contient les questions Panel pReps = p.FindControl("Reponses_Question_" + id) as Panel; List <TextBox> answers = new List <TextBox>(); List <CheckBox> isAnswer = new List <CheckBox>(); // On va le parcourir, et trouver les textbox réponses contenues qui ne sont pas "hidden" // Ainsi que les checkBox "bonne rép" foreach (Control ctrl in pReps.Controls) { if (ctrl.ID != null) { // On récupère par l'ID // tRep.ID = "TextBox_Question_Reponse_" + questionId + "_" + answerId; if (ctrl.ID.Contains("TextBox_Question_Reponse_" + id)) { // C est une des réponses TextBox tRep = (TextBox)ctrl; if (tRep.Visible) { if (!answers.Contains(tRep)) { answers.Add(tRep); } } } else if (ctrl.ID.Contains("chb_isGood_" + id)) { // C est une checkbox CheckBox cbRep = (CheckBox)ctrl; if (cbRep.Visible) { if (!isAnswer.Contains(cbRep)) { isAnswer.Add(cbRep); } } } } } // On a maintenant toutes les réponses pour la question en cours // il faut vérifier qu'on a au moins une "bonne réponse" pour la dite question en cours hasOne = false; foreach (CheckBox cb in isAnswer) { if (cb.Checked) { hasOne = true; break; } } // On a au moins une bonne rép if (hasOne) { foreach (TextBox rep in answers) { // on récupére l'id de la réponse // tRep.ID = "TextBox_Question_Reponse_" + questionId + "_" + answerId; int offset = 25 + id.ToString().Length + 1; int reponseId = -1; string answerId = rep.ID.Substring(offset); int.TryParse(answerId, out reponseId); // Ensuite on regarde si c est une bonne réponse ou non bool isGoodAnswer = isAnswer.First(cb => cb.ID.Equals("chb_isGood_" + id + "_" + answerId)).Checked; // Ce code est censé faire : // Parmi les checkbox je récupère le premier dont l'id vaut : cb.ID.Equals("chb_isGood_" + id + "_" + answerId // Et j'attribue sa valeur "Checked" à "isGoodAnswer" // On peut maintenant créer la réponse Answer answere = new Answer(rep.Text, isGoodAnswer); question.OtherAnsweres.Add(answere); } } else { Label_manqueRep.Visible = true; break; } questions.Add(question); } // end for each if (hasOne) { Label_manqueRep.Visible = false; q.Questions = questions; QuizzDb qdb = new QuizzDb(); qdb.Quizzes.Add(q); try { Console.WriteLine("-------------------- HEEEEEREEEEEEEEEE ------------------------"); qdb.Database.Log = Console.WriteLine; qdb.SaveChanges(); successDiv.Visible = true; clearUi(); } catch (System.Data.Entity.Infrastructure.DbUpdateException ex) { Response.Write(ex.ToString()); } } }
protected void UploadButton_Click(object sender, EventArgs e) { if (FileUploadControl.HasFile) { UVDb uvs = new UVDb(); int selectedUv = uvs.GetByDenomination(RadioButtonList_ChoixUV.SelectedItem.Value).IdUv; System.Diagnostics.Debug.WriteLine(RadioButtonList_ChoixUV.SelectedItem.Value); var manager = Context.GetOwinContext().GetUserManager <ApplicationUserManager>(); var signInManager = Context.GetOwinContext().Get <ApplicationSignInManager>(); string prenom = ""; string nom = ""; //string email; //string pwd; System.IO.StreamReader file; try { string filename = Path.GetFileName(FileUploadControl.FileName); FileUploadControl.SaveAs(Server.MapPath("~/") + filename); StatusLabel.Text = "Upload status: File uploaded!"; string line; file = new System.IO.StreamReader(Server.MapPath("~/") + filename); IdentityDb id = new IdentityDb(); //Regex rxc = new Regex(@"^([^.]+)(?=[.])"); //Match mc = rxc.Match(filename); //UVDb u = new UVDb(); //UV uv = u.GetByDenomination(mc.Value); while ((line = file.ReadLine()) != null) { //continue; Regex regex = new Regex(@"(?<=;)(\w*)(?=;)"); MatchCollection match = regex.Matches(line); if (match.Count != 2) { continue; } int i = 0; foreach (Match m in match) { if (i == 0) { prenom = m.Value; } if (i == 1) { nom = m.Value; } i++; } Regex rx = new Regex(@"(?:.(?<!;))+$"); Match mpwd = rx.Match(line); Regex rxemail = new Regex(@"^([^;]+)(?=;)"); Match memail = rxemail.Match(line); var user = new ApplicationUser(nom, prenom) { UserName = prenom + " " + nom, Email = memail.Value }; user.Role = "Etud"; if (id.Users.FirstOrDefault(usr => usr.UserName == user.UserName) == null) { IdentityResult result = manager.Create(user, mpwd.Value); if (result.Succeeded) { id.AddSharedUV(user.Id, selectedUv); } else { ErrorMessage.Text = result.Errors.FirstOrDefault(); } } else { ApplicationUser us = id.GetByEmailEager(user.Email); if (!us.HasAccessToUV(selectedUv)) { id.AddSharedUV(us.Id, selectedUv); } } } file.Close(); } catch (Exception ex) { StatusLabel.Text = "Upload status: The file could not be uploaded. The following error occured: " + ex.Message; } } }