/// <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);
        }
Example #2
0
        /// <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; }
        }