/// <summary> /// Processus Threadé /// </summary> public void Process() { _frmAttente = new frmWaiting(); Log.Debug("Début Process"); initialisation = new InitialisationHandler(loadPhotos); IAsyncResult res = this.BeginInvoke(initialisation); Log.Debug("Fin Process"); this.EndInvoke(res); }
/// <summary> /// Exporte les fichiers /// </summary> public void doExportFiles() { Log.Info("Exportation du LAB ..."); string txtAno = ""; int _nbAno = 0; txtLog.Text = String.Empty; this.addMessage("************ DEBUT EXPORT ************"); frmWaiting _frmAttente = new frmWaiting(); _frmAttente.MaxValue = p_applClass.SessionInfoList.Count; _frmAttente.Show(this); // On balaye toutes les sessions for (int _indSession = 0; _indSession < p_applClass.SessionInfoList.Count; _indSession++) { _frmAttente.Value = _indSession; // On charge le fichier de la session correspondante this.addMessage("*** " + _indSession.ToString("D3") + " - Chargement de la session : " + p_applClass.SessionInfoList[_indSession].SessionName); this.loadSessionFile(p_applClass.SessionInfoList[_indSession].SessionFileName); // Pour chaque élément en Session, on effectue le traitement foreach (IElement _element in p_sessionContent.ListElement.Where(e => e.Passed)) { string _className; // On recherche le vrai nom de la classe InfosClasse _infoClass = p_applClass.School.GetClasse(_element.ClassId); // Si on le trouve, on prend l'info dans l'objet InfosClasse (c'est celle qui prime) // Si on ne le trouve pas, deux solutions // - Soit un bug dans ce cas, on garde le nom de la class de l'élément // - Soit c'est une Fratries (identifiable par un Id = 9999), dans ce cas, on grde le nom de l'élément if (_infoClass == null) { _className = _element.Class; } else { _className = _infoClass.nameClass; } string _prefixeGroup = String.Empty; if (_infoClass != null) { _prefixeGroup = p_applClass.School.GetClasse(_element.ClassId).PrefixeGroup; } string _srcDirectory = p_applClass.RootDir + "\\" + p_applClass.Param.ExportDirectory + "\\" + _className; string _destDirectory = p_applClass.RootDir + "\\" + p_applClass.Param.SelectDirectory ; string _profDirectory = p_applClass.RootDir + "\\" + p_applClass.Param.SelectDirectory + "\\Equipe_Enseignante"; this.addMessage("*** " + _indSession.ToString("D3") + " --- Traitement : " + _element.ToString()); // On lit les photos stockées string _destName = ""; _nbTotalFiles += _element.Photos.Count(); foreach (FilePhoto _filePhoto in _element.Photos.Where(f => f.Selected)) { string _photoName = _srcDirectory + "\\" + _filePhoto.TypeDirectory + "\\" + _filePhoto.FileName; // Si la photo est sélectionnée, on la copie dans le répertoire qui correspond à la session FileInfo _file = new FileInfo(_photoName); try { string _destDir; if (_element.TypeElement.Equals(Constantes.cstGroup)) { _destName = ClassOutils.GetFileNameForGroupe(p_applClass.School.SchoolName, p_applClass.School.City, _className, _prefixeGroup, _element, _filePhoto); _destDir = _destDirectory + "\\" + _filePhoto.TypeDirectory + "\\" + _className; } else { string _prefFichier; // Si c'est une Fratrie on change le nom (on remplace le nom de la classe par FS) if (_element.ClassId.Equals(99999)) { _prefFichier = "FS"; } else { _prefFichier = _className; } if ((_element as Person).TypePerson.Equals(Constantes.cstEleve)) { // Routine pour les élèves _destName = ClassOutils.GetFileNameForPerson(p_applClass.School.SchoolName, p_applClass.School.City, _prefFichier, _element, _filePhoto); _destDir = _destDirectory + "\\" + _filePhoto.TypeDirectory + "\\" + _className; } else { // Routine pour les Profs _destName = ClassOutils.GetFileNameForPerson(p_applClass.School.SchoolName, p_applClass.School.City, _className, _element, _filePhoto); _destDir = _profDirectory; } } this.addMessage("*** " + _indSession.ToString("D3") + " -------- Copie photo : " + _file.Name + " --> " + _destName); if (!ClassOutils.CopyFile(_photoName, _destDir, _destName)) { this.addAnomalie("ANOMALIE COPIE : " + _photoName + " --> Dest = " + _destDirectory + "\\" + _filePhoto.TypeDirectory + "\\" + _className ?? "NULL" + " + " + _destName ?? "NULL"); this.addAnomalie("----------> Anomalie lors de la COPIE du fichier..."); txtAno += "Classe : " + _className + " - Photo : " + _photoName + " - DEST : " + _destName + Environment.NewLine; _nbAno++; } else { _nbcopiedFiles++; } } catch (Exception exc) { this.addAnomalie("ANOMALIE : " + _photoName + " --> Dest = " + _destDirectory + "\\" + _filePhoto.TypeDirectory + "\\" + _className ?? "NULL" + " + " + _destName ?? "NULL"); this.addAnomalie("----------> " + exc.Message); _nbAno++; } } } } this.addMessage("************ FIN EXPORT ************"); // Affichage du TreeView this.doDisplay(); _frmAttente.Close(); if (_nbAno > 0) { string _msgAnnomalie = "Une ou plusieurs anomalies se sont produites..." + Environment.NewLine + "---> Contrôler le détail ci-dessous, " + Environment.NewLine + "---> Puis refaire un nouveau LAB !"; MessageBox.Show(_msgAnnomalie, "Anomalies détectées...", MessageBoxButtons.OK, MessageBoxIcon.Stop); this.createAnomalieFile(txtAno); } if (Directory.Exists(p_applClass.RootDir + "\\" + p_applClass.Param.SelectDirectory)) { btnExplore.Enabled = true; } }