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; }
protected void AnalyserFichier() { DateTime dateDebutAnalyse = DateTime.Now; if (DocumentNom.PostedFile.FileName == "") { MessageAnalyse = "Choisissez un fichier à analyser. "; EventFinAnalyse.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."; EventFinAnalyse.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."; EventFinAnalyse.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 += "Erreur taille du fichier : " + Tools.FileSizeFormat(DocumentNom.PostedFile.ContentLength, "N"); MessageAnalyse += " supérieure à la taille maximum : " + Tools.FileSizeFormat(tailleMax, "N"); EventFinAnalyse.Set(); FinTraitement = true; return; } DocumentNom.PostedFile.SaveAs(physicalPath); } catch (Exception ex) { MessageAnalyse += ex.Message; EventFinAnalyse.Set(); FinTraitement = true; return; } DataSet dataSet = new DataSet(); try { XmlReader xmlr = XmlReader.Create(physicalPath); dataSet.ReadXml(xmlr); xmlr.Close(); } catch { MessageAnalyse += "Fichier non valide."; EventFinAnalyse.Set(); FinTraitement = true; return; } // Infos du Membre pour l'administrateur if (User.IsInRole("Administrateur")) { DataTable dt = dataSet.Tables[0]; MessageAnalyse += "Infos du membre :<br/>"; MessageAnalyse += "Nom d'utilisateur : " + dt.Rows[0]["NomUtilisateur"].ToString() + "<br/>"; MessageAnalyse += "Mot de passe : " + dt.Rows[0]["MotDePasse"].ToString() + "<br/>"; MessageAnalyse += "Nom : " + dt.Rows[0]["Nom"].ToString() + "<br/>"; MessageAnalyse += "Prénom : " + dt.Rows[0]["Prenom"].ToString() + "<br/>"; MessageAnalyse += "Adresse : " + dt.Rows[0]["Adresse"].ToString() + "<br/>"; MessageAnalyse += "Téléphone : " + dt.Rows[0]["Telephone"].ToString() + "<br/>"; MessageAnalyse += "Société : " + dt.Rows[0]["Societe"].ToString() + "<br/>"; MessageAnalyse += "LimiteQuestionnaires : " + dt.Rows[0]["LimiteQuestionnaires"].ToString() + "<br/>"; MessageAnalyse += "LimiteQuestions : " + dt.Rows[0]["LimiteQuestions"].ToString() + "<br/>"; MessageAnalyse += "LimiteInterviewes : " + dt.Rows[0]["LimiteInterviewes"].ToString() + "<br/>"; MessageAnalyse += "LimiteReponses : " + dt.Rows[0]["LimiteReponses"].ToString() + "<br/>"; MessageAnalyse += "Date fin d'Abonnement : " + dt.Rows[0]["DateFinAbonnement"].ToString() + "<br/>"; MessageAnalyse += "<br/>"; } // // Questionnaires // int nbQuestionnaires = 0; bool entete = true; foreach (DataTable dt in dataSet.Tables) { if (dt.TableName.Contains("Questionnaire")) { if (entete) { MessageAnalyse += "Questionnaire(s) :<br/>"; entete = false; } Questionnaire questionnaire = Questionnaire.FillFromXML(dt.Rows[0]); MessageAnalyse += questionnaire.Description + " date de création : " + questionnaire.DateCreation.ToShortDateString() + "<br/>"; nbQuestionnaires += 1; } if (dt.TableName.Contains("QQuestion")) { // On passe aux Questions break; } } // // Questions // int nbQuestions = 0; foreach (DataTable dt in dataSet.Tables) { if (dt.TableName.Contains("QQuestion")) { nbQuestions += 1; } if (dt.TableName.Contains("Reponse")) { break; } } int nbReponses = 0; foreach (DataTable dt in dataSet.Tables) { if (dt.TableName.Contains("Reponse")) { nbReponses += 1; } if (dt.TableName.Contains("Personne")) { break; } } int nbInterviewes = 0; foreach (DataTable dt in dataSet.Tables) { if (dt.TableName.Contains("Personne")) { nbInterviewes += 1; } if (dt.TableName.Contains("Vote")) { break; } } int nbVotes = 0; foreach (DataTable dt in dataSet.Tables) { if (dt.TableName.Contains("Vote")) { nbVotes += 1; } if (dt.TableName.Contains("Score")) { break; } } int nbScores = 0; foreach (DataTable dt in dataSet.Tables) { if (dt.TableName.Contains("Score")) { nbScores += 1; } } MessageAnalyse += "<br/>"; MessageAnalyse += "Données membre :<br/>"; MessageAnalyse += "Questionnaires : " + nbQuestionnaires.ToString() + "<br/>"; MessageAnalyse += " Questions : " + nbQuestions.ToString() + "<br/>"; MessageAnalyse += " Réponses : " + nbReponses.ToString() + "<br/>"; MessageAnalyse += " Interviewes : " + nbInterviewes.ToString() + "<br/>"; MessageAnalyse += " Votes : " + nbVotes.ToString() + "<br/>"; if (nbScores > 0) { MessageAnalyse += " Scores : " + nbScores.ToString() + "<br/>"; } MessageAnalyse += "<br/>"; bool smtpPresent = false; foreach (DataTable dt in dataSet.Tables) { if (dt.TableName.Contains("SmtpServeur")) { SmtpServer smtp = SmtpServer.FillFromXML(dt.Rows[0]); MessageAnalyse += "Stmp serveur :<br/>"; MessageAnalyse += " nom d'utilisateur : " + smtp.UserName + "<br/>"; MessageAnalyse += " mot de passe : " + smtp.UserPassWord + "<br/>"; MessageAnalyse += " adresse email : " + smtp.Email + "<br/>"; MessageAnalyse += " nom du serveur : " + smtp.ServerName + "<br/>"; smtpPresent = true; } } if (smtpPresent) { MessageAnalyse += "<br/>"; } ValidationMessage.Visible = true; File.Delete(physicalPath); DateTime dateFinAnalyse = DateTime.Now; TimeSpan tempsTraitement = dateFinAnalyse - dateDebutAnalyse; MessageAnalyse += "- Taille du fichier : " + Tools.FileSizeFormat(DocumentNom.PostedFile.ContentLength, "N") + "<br/>"; MessageAnalyse += "- Temps d'analyse : " + Tools.FormatTimeSpan(tempsTraitement) + "<br/>"; EventFinAnalyse.Set(); FinTraitement = true; }