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; }
public void ButtonSave_OnClick(object sender, EventArgs e) { string user = DropDownListMembre.SelectedValue.ToString(); if (ValiderFormulaire() == false || user == "-1") { return; } SmtpServer serveur = new SmtpServer(); Guid membreGUID = new Guid(); if (User.IsInRole("Administrateur")) { string[] userName = user.Split('/'); MemberInfo member = MemberInfo.GetMemberInfo(userName[0], userName[1]); serveur = SmtpServer.Get(member.MembreGUID); membreGUID = member.MembreGUID; } else { serveur = SmtpServer.Get(SessionState.MemberInfo.MembreGUID); membreGUID = SessionState.MemberInfo.MembreGUID; } if (serveur == null) // C'est une creation { serveur = new SmtpServer(); serveur.UserGUID = membreGUID; serveur.UserName = TextBoxUserName.Text; serveur.UserPassWord = TextBoxPassWord.Text; serveur.ServerName = TextBoxServerName.Text; try { int port = int.Parse(TextBoxServerPort.Text); serveur.ServerPort = port; } catch { ValidationMessage.Text = "Le numéro de port est un entier"; serveur.ServerPort = 25; } serveur.Email = TextBoxEmail.Text; serveur.EmailSubject = TextBoxEmailSubject.Text; serveur.EmailBody = ""; //FCKeditor1.Value; ne sert plus c'est une WebContent CorpsEmail serveur.EnableSSL = CheckBoxEnableSSL.Checked; int status = SmtpServer.Create(serveur); } else // C'est une mise a jour { serveur.UserName = TextBoxUserName.Text; serveur.UserPassWord = TextBoxPassWord.Text; serveur.ServerName = TextBoxServerName.Text; try { int port = int.Parse(TextBoxServerPort.Text); serveur.ServerPort = port; } catch { ValidationMessage.Text = "Le numéro de port est un entier"; serveur.ServerPort = 25; } serveur.Email = TextBoxEmail.Text; serveur.EmailSubject = TextBoxEmailSubject.Text; serveur.EmailBody = ""; //FCKeditor1.Value; ne sert plus c'est une WebContent CorpsEmail serveur.EnableSSL = CheckBoxEnableSSL.Checked; SmtpServer.Update(serveur); } }