Пример #1
0
        /// <summary>
        /// Création du Feuillet des Individuels
        /// </summary>
        /// <param name="_sessionContent"></param>
        public void createTrombiFratrieSeules(SessionContent _sessionContent)
        {
            Log.Debug("createTrombiGroup ." + _sessionContent.InfoClass.nameClass + " " + _sessionContent.InfoClass.PrefixeGroup);
            PdfPage page = p_pdfDocument.AddPage();
            page.Size = PageSize.A4;
            page.Orientation = PageOrientation.Landscape;
            XGraphics gfx = XGraphics.FromPdfPage(page);
            this.createSchoolName(gfx, p_appClass.School.SchoolName + " " + p_appClass.School.City);
            this.createClassName(gfx, "Fratries");

            // Maintenant il faut balayer tous les élèves
            int _indRow = 0;
            int _indCol = 0;

            foreach (Person _person in _sessionContent.ListElement)
            {
                if (_indCol == 10) { _indRow++; _indCol = 0; }
                if (_person.Passed)
                {
                    foreach (FilePhoto _photo in _person.Photos)
                    {
                        if (_photo.Selected)
                        {
                            string _thumbDir = p_appClass.RootDir + "\\" + p_appClass.Param.ExportDirectory + "\\" + _photo.ClassName + "\\Thumbnails\\" + _photo.FileName;

                            this.DrawPng(gfx, _indRow, _indCol, _thumbDir);
                            this.drawName(gfx, _indRow, _indCol, _person.ToString());
                            _indCol++;
                        }
                    }
                }
            }
        }
Пример #2
0
 /// <summary>
 /// Retourne la liste des individus
 /// </summary>
 /// <param name="_sessionContent"></param>
 /// <returns></returns>
 private static List<IElement> getListIndiv(SessionContent _sessionContent)
 {
     List<IElement> p_listElement = new List<IElement>();
     foreach (Person _person in _sessionContent.ListElement)
     {
         if (!_person.PoseB)
         {
             p_listElement.Add(_person);
         }
     }
     return p_listElement;
 }
Пример #3
0
 /// <summary>
 /// Retourne la liste des individus passés
 /// </summary>
 /// <param name="_sessionContent"></param>
 /// <returns></returns>
 private static List<IElement> getListIndivPassed(SessionContent _sessionContent)
 {
     List<IElement> p_listElement = new List<IElement>();
     foreach (Person _person in _sessionContent.ListElement)
     {
         if (!_person.PoseB
             && (_person.Absent.Equals(Constantes.cstNon))
             && (_person.InfosPDV.NbExemplaires >= 1))
         {
             p_listElement.Add(_person);
         }
     }
     return p_listElement;
 }
Пример #4
0
 /// <summary>
 /// Chargement du fichier Session
 /// </summary>
 /// <param name="_fileName"></param>
 private static SessionContent loadSessionFile(string _fileName)
 {
     SessionContent p_sessionContent = new SessionContent();
     Log.Debug("--- FileInfo : " + _fileName);
     FileInfo _file = new FileInfo(_fileName);
     if (_file.Exists)
     {
         try
         {
             Log.Debug("--- Désérialization : " + _fileName);
             Stream stream = File.Open(_fileName, FileMode.Open);
             BinaryFormatter bFormatter = new BinaryFormatter();
             p_sessionContent = (SessionContent)bFormatter.Deserialize(stream);
             stream.Close();
             Log.Debug("--- Fin Désérialization : " + _fileName);
         }
         catch (Exception e)
         {
             System.Windows.Forms.MessageBox.Show("Une erreur est survenue lors du chargement de la Session de Base.\r\nMessage : " + e.Message, "Anomalie lors du chargement !", System.Windows.Forms.MessageBoxButtons.OK, System.Windows.Forms.MessageBoxIcon.Error);
             throw;
         }
     }
     return p_sessionContent;
 }
Пример #5
0
 /// <summary>
 /// Chargement du fichier Session
 /// </summary>
 /// <param name="_fileName"></param>
 private void loadSessionFile(string _fileName)
 {
     Log.Info("Chargement du fichier de Session {" + _fileName + "}");
     FileInfo _file = new FileInfo(_fileName);
     if (_file.Exists)
     {
         try
         {
             Stream stream = File.Open(_fileName, FileMode.Open);
             BinaryFormatter bFormatter = new BinaryFormatter();
             p_sessionContent = (SessionContent)bFormatter.Deserialize(stream);
             stream.Close();
         }
         catch (Exception e)
         {
             Log.Error("Erreur lors du chargement de la Session", e);
             System.Windows.Forms.MessageBox.Show("Une erreur est survenue lors du chargement de la Session de Base.\r\nMessage : " + e.Message, "Anomalie lors du chargement !", System.Windows.Forms.MessageBoxButtons.OK, System.Windows.Forms.MessageBoxIcon.Error);
             throw;
         }
     }
 }
Пример #6
0
        /// <summary>
        /// Création du Feuillet GROUPES PNG
        /// </summary>
        /// <param name="_sessionContent"></param>
        public void createReportGroup(SessionContent _sessionContent) 
        {
            #region DEFINITION DE LA LIGNE DE RUPTURE
            HSSFCellStyle cellRuptStyle = (HSSFCellStyle)p_templateWorkbook.CreateCellStyle();
            cellRuptStyle.BorderTop = NPOI.SS.UserModel.BorderStyle.Thin;
            cellRuptStyle.BorderBottom = NPOI.SS.UserModel.BorderStyle.Thin;
            cellRuptStyle.BorderLeft = NPOI.SS.UserModel.BorderStyle.Thin;
            cellRuptStyle.BorderRight = NPOI.SS.UserModel.BorderStyle.Thin;
            cellRuptStyle.FillBackgroundColor = HSSFColor.Green.Index;
            cellRuptStyle.FillPattern = NPOI.SS.UserModel.FillPattern.SolidForeground;

            HSSFFont _font = (HSSFFont)p_templateWorkbook.CreateFont();
            _font.FontName = "Segoe UI";
            _font.FontHeightInPoints = 12;
            _font.Color = HSSFColor.White.Index;
            cellRuptStyle.SetFont(_font);
            #endregion

            // Getting the worksheet by its name... 
            HSSFSheet sheet = (HSSFSheet)p_templateWorkbook.GetSheet("Groupes PNG");

            // On fait une Ligne de rupture pour la Classe
            HSSFRow dataRow = (HSSFRow)sheet.CreateRow(p_numRow);
            this.createCell(dataRow, cellRuptStyle, 0, _sessionContent.InfoClass.nameClass + " " + _sessionContent.InfoClass.PrefixeGroup);       // Nom de la Classe
            sheet.AddMergedRegion(new CellRangeAddress(p_numRow, p_numRow, 0, 4));
            p_numRow++;
            // Maintenant il faut balayer tous les élèves
            foreach (Group _group in _sessionContent.ListElement)
            {
                HSSFRow dataGroup = (HSSFRow)sheet.CreateRow(p_numRow);
                HSSFCellStyle cellStyle = this.getStyleFromRowNum(p_numRow);
                this.createCell(dataGroup, cellStyle, 0, _group.Class);    // Nom de la Classe
                this.createCell(dataGroup, cellStyle, 1, _group.Name);     // Nom du Groupe

                if (_group.Passed)
                {
                    // Photo Gratuite
                    if (_group.InfosPDV.IsGratis) { this.createCell(dataGroup, cellStyle, 2, Constantes.cstOui); }
                    else { this.createCell(dataGroup, cellStyle, 2, String.Empty); }

                    this.createCell(dataGroup, cellStyle, 3, _group.InfosPDV.NbExemplaires);   // Nombre d'exemplaires
                    this.createCell(dataGroup, cellStyle, 4, _group.InfosPDV.Commentaires);
                }
                else
                {
                    this.createCell(dataGroup, cellStyle, 2, String.Empty);
                    this.createCell(dataGroup, cellStyle, 3, String.Empty);
                    this.createCell(dataGroup, cellStyle, 4, _group.InfosPDV.Commentaires);
                }
                p_numRow++;
            }
            this.definePrintSetup(sheet, "Bon de Production : Groupes PNG.", (short)90);
        }
Пример #7
0
 /// <summary>
 /// Retourne la liste des individus Absents
 /// </summary>
 /// <param name="_sessionContent"></param>
 /// <returns></returns>
 private static List<IElement> getListIndivMissed(SessionContent _sessionContent)
 {
     List<IElement> p_listElement = new List<IElement>();
     foreach (Person _person in _sessionContent.ListElement)
     {
         if (!_person.PoseB && (_person.Absent.Equals(Constantes.cstOui)))
         {
             p_listElement.Add(_person);
         }
     }
     return p_listElement;
 }
Пример #8
0
        /// <summary>
        /// Création du Feuillet FRATRIES Seules
        /// </summary>
        /// <param name="_sessionContent"></param>
        public void createReportFratrieSeules(SessionContent _sessionContent)
        {
            // Maintenant il faut balayer tous les élèves
            foreach (Person _person in _sessionContent.ListElement)
            {
                if (_person.Passed && (_person.InfosPDV.ListClassID.Count == 0))
                {
                    HSSFRow dataOrder = (HSSFRow)p_sheet.CreateRow(p_numRow);
                    ICell _newCell = dataOrder.CreateCell(0);
                    _newCell.SetCellValue(this.getPhotoName(_person, "FS"));

                    _newCell = dataOrder.CreateCell(1);     // PhotoID
                    _newCell.SetCellValue("00000000");

                    _newCell = dataOrder.CreateCell(2);     // Classe
                    _newCell.SetCellValue(_person.Class);

                    _newCell = dataOrder.CreateCell(4);     // Pochette Complète
                    _newCell.SetCellValue(_person.InfosPDV.NbExemplaires.ToString());

                    p_numRow++;
                }
            }
        }
Пример #9
0
        /// <summary>
        /// Création du Feuillet FRATRIES Seules
        /// </summary>
        /// <param name="_sessionContent"></param>
        public void createReportFratrieProdLab(SessionContent _sessionContent)
        {
            // Getting the worksheet by its name... 
            HSSFSheet sheet = (HSSFSheet)p_templateWorkbook.GetSheet("ProdLab");

            // Maintenant il faut balayer tous les élèves
            foreach (Person _person in _sessionContent.ListElement)
            {
                if (_person.Passed)
                {
                    HSSFRow dataGroup = (HSSFRow)sheet.CreateRow(p_numRowProdLab);
                    HSSFCellStyle cellStyle = this.getStyleFromRowNum(p_numRowProdLab);
                    this.createCell(dataGroup, cellStyle, 0, _person.Class);     // Classe de la Fratrie
                    this.createCell(dataGroup, cellStyle, 1, _person.Name);     // Nom de la Fratrie
                    this.createCell(dataGroup, cellStyle, 2, _person.FirstName);     // Prénom de la Fratrie

                    p_numRowProdLab++;
                }
            }
        }
Пример #10
0
        /// <summary>
        /// Création du Feuillet FRATRIES Seules
        /// </summary>
        /// <param name="_sessionContent"></param>
        public void createReportFratrieSeules(SessionContent _sessionContent)
        {
            // Getting the worksheet by its name... 
            HSSFSheet sheet = (HSSFSheet)p_templateWorkbook.GetSheet("Fratries Seules");

            // On met à jour les infos Sur les FS rattachées dans chaque classe
            foreach (InfosClasse _infoClass in p_appClass.School.ListClass) { _infoClass.Counters.NbRattFS = 0; }

            // Maintenant il faut balayer tous les élèves
            foreach (Person _person in _sessionContent.ListElement)
            {
                if (_person.Passed && (_person.InfosPDV.ListClassID.Count == 0))
                {
                    HSSFRow dataGroup = (HSSFRow)sheet.CreateRow(p_numRow);
                    HSSFCellStyle cellStyle = this.getStyleFromRowNum(p_numRow);
                    this.createCell(dataGroup, cellStyle, 0, _person.Name);     // Nom de la Fratrie

                    // Photo Gratuite
                    if (_person.InfosPDV.IsGratis) { this.createCell(dataGroup, cellStyle, 1, Constantes.cstOui); }
                    else { this.createCell(dataGroup, cellStyle, 1, String.Empty); }

                    this.createCell(dataGroup, cellStyle, 2, _person.InfosPDV.NbExemplaires);   // Nombre d'exemplaires
                    this.createCell(dataGroup, cellStyle, 3, _person.InfosPDV.Commentaires);
                    p_numRow++;
                }
            }
            this.definePrintSetup(sheet, "Bon de Production : Fratries Seules.", (short)90);
        }
Пример #11
0
        /// <summary>
        /// Création du Feuillet FRATRIES Rattachées
        /// </summary>
        /// <param name="_sessionContent"></param>
        public void createReportFratrieRatt(SessionContent _sessionContent)
        {
            // Getting the worksheet by its name... 
            HSSFSheet sheet = (HSSFSheet)p_templateWorkbook.GetSheet("Fratries Rattachées");

            // On met à jour les infos Sur les FS rattachées dans chaque classe
            foreach (InfosClasse _infoClass in p_appClass.School.ListClass) { _infoClass.Counters.NbRattFS = 0; }

            // Maintenant il faut balayer tous les élèves
            foreach (Person _person in _sessionContent.ListElement)
            {
                if (_person.Passed && (_person.InfosPDV.ListClassID.Count > 0))
                {
                    HSSFRow dataGroup = (HSSFRow)sheet.CreateRow(p_numRow);
                    HSSFCellStyle cellStyle = this.getStyleFromRowNum(p_numRow);
                    this.createCell(dataGroup, cellStyle, 0, _person.Name);     // Nom de la Fratrie

                    // Photo Gratuite
                    if (_person.InfosPDV.IsGratis) { this.createCell(dataGroup, cellStyle, 1, Constantes.cstOui); }
                    else { this.createCell(dataGroup, cellStyle, 1, String.Empty); }

                    this.createCell(dataGroup, cellStyle, 2, _person.InfosPDV.NbExemplaires);   // Nombre d'exemplaires

                    StringBuilder _cellClassName = new StringBuilder();
                    foreach (string _class in _person.InfosPDV.ListClassID)
                    {
                        if (!String.IsNullOrEmpty(_class))
                        {
                            int _classID;
                            if (int.TryParse(_class, out _classID))
                            {
                                InfosClasse _infoClass = p_appClass.School.GetClasse(_classID);
                                _infoClass.Counters.NbRattFS++;
                                _cellClassName.AppendLine("{" + _infoClass.nameClass + "}");
                            }
                        }
                    }
                    string _valueOfCell = String.Empty;
                    if (_cellClassName.Length > 0) { _valueOfCell = _cellClassName.ToString().Substring(0, _cellClassName.Length- 2); }
                    this.createCellRichText(dataGroup, cellStyle, 3, _valueOfCell);
                    this.createCell(dataGroup, cellStyle, 4, _person.InfosPDV.Commentaires);
                    p_numRow++;
                }
            }
            this.definePrintSetup(sheet, "Bon de Production : Fratries Rattachées.", (short)90);
        }
Пример #12
0
        /// <summary>
        /// Initialisation de la Session Individuelle
        /// </summary>
        public void InitSession(ApplClass _applClass, InfosClasse _classSession, string _typeSession, DateTime _dateSession)
        {
            Log.Debug("Initialisation de la Session : " + _classSession.nameClass + " {" + _typeSession + "}");
            p_typeSession = _typeSession;
            #region Gestion du fichier
            FileInfo _file = this.getFileName(p_typeSession, _classSession.idClass, _applClass.DataDir, _dateSession);
            _fileName = _file.FullName;
            // Si le fichier de la session existe, on le lit
            // Sinon, on le créé
            if (_file.Exists)
            {
                #region Chargement Fichier session
                try
                {
                    Stream stream = File.Open(_fileName, FileMode.Open);
                    BinaryFormatter bFormatter = new BinaryFormatter();
                    p_sessionContent = (SessionContent)bFormatter.Deserialize(stream);
                    stream.Close();
                }
                catch (Exception e)
                {
                    Log.Error("Erreur chargement de la Session", e);
                    System.Windows.Forms.MessageBox.Show("Une erreur est survenue lors du chargement de la Session de Base.\r\nMessage : " + e.Message, "Anomalie lors du chargement !", System.Windows.Forms.MessageBoxButtons.OK, System.Windows.Forms.MessageBoxIcon.Error, System.Windows.Forms.MessageBoxDefaultButton.Button1, System.Windows.Forms.MessageBoxOptions.RightAlign);
                    throw;
                }
                #endregion
            }
            else
            {
                #region Création de la Session
                Log.Info("Création de la Session");
                p_sessionContent = new SessionContent();
                p_sessionContent.InfoClass = _classSession;
                p_sessionContent.Effectif = 0;
                // On crée la liste des éléments à partir de la liste des élèves (et Profs)
                p_sessionContent.DateSession = _dateSession.ToString("dd-MM-yyyy");
                p_sessionContent.TypeSession = p_typeSession;
                p_sessionContent.ListElement = new List<IElement>();
                // On balaye l'ensemble des Individus
                int _newId = ClassOutils.getMaxId(_applClass.School.getListFromType(Constantes.cstIndividu));

                // A ce niveau-ci, dans le cadre d'une session Fratrie, il faut initialiser la liste avec la liste des noms des élèves
                if (_typeSession.Equals(Constantes.cstFratrie))
                {
                    Log.Info("Session FRATRIE");
                    _newId = 1;
                    // On créé une liste triée... et on renomme les doublons façon Windows
                    List<IElement> __sortedList = new List<IElement>(_applClass.School.getListFromType(Constantes.cstIndividu).Count);

                    _applClass.School.getListFromType(Constantes.cstIndividu).ForEach(item => { __sortedList.Add((IElement)item.Clone()); });

                    __sortedList = __sortedList.OrderBy(o => o.Name).ToList();
                    string _nameKey = "";
                    int numDoub = 0;
                    for (int _ind = 0; _ind <= __sortedList.Count - 1; _ind++)
                    {
                        if (_nameKey != __sortedList[_ind].Name)
                        {
                            numDoub = 0;
                            _nameKey = __sortedList[_ind].Name;
                        }
                        else
                        {
                            numDoub++;
                            __sortedList[_ind].Name += " (" + numDoub.ToString() + ")";
                        }
                    }

                    // On récupère l'ensemble des élèves
                    foreach (IElement _element in __sortedList)
                    {
                        if (!((Person)_element).TypePerson.Equals(Constantes.cstProf))
                        {
                            Person _newElement = (Person)_element.Clone();
                            _newElement.FirstName = String.Empty;
                            _newElement.Id = _newId.ToString("D4");
                            _newElement.Photos = new List<FilePhoto>();
                            _newElement.InfosPDV = new InfoPdV();
                            _newElement.NumElement = _newId;
                            _newElement.Passed = false;
                            _newElement.Absent = Constantes.cstNon;
                            _newElement.Class = _classSession.nameClass;
                            _newElement.ClassId = _classSession.idClass;
                            // Il faut vérifier que l'élément n'existe pas déjà (en cas de doublons)
                            // Si il existe, on flag le second...
                            p_sessionContent.ListElement.Add(_newElement);
                            _newId++;
                        }
                    }
                }
                else
                {
                    Log.Info("Session Individuels");
                    foreach (IElement _element in _applClass.School.getListFromType(p_typeSession))
                    {
                        if (_element.ClassId.Equals(_classSession.idClass))
                        {
                            _element.Passed = false;
                            _element.Photos = new List<FilePhoto>();
                            _element.Class = _classSession.nameClass;
                            p_sessionContent.ListElement.Add(_element);
                            // Dans le cas où on est en double vue on duplique l'élément
                            if (_applClass.School.DoubleView && p_sessionContent.TypeSession == Constantes.cstIndividu)
                            {
                                IElement _newElement = (IElement)_element.Clone();
                                //_newElement.Id = (_newId++).ToString("D4");
                                _newElement.Id = _newElement.Id + "B";
                                //_newElement.Name += "_BIS";
                                _newElement.FirstName += "(BIS)";
                                _newElement.Photos = new List<FilePhoto>();
                                _newElement.InfosPDV = new InfoPdV();
                                p_sessionContent.ListElement.Add(_newElement);
                            }
                        }
                    }
                }
                Log.Debug("Nb Eléments dans la nouvelle session = ");
                #endregion
            }

            if (p_sessionContent.InfoClass == null) { p_sessionContent.InfoClass = _classSession; }
            // On met à jour les infos Class
            p_sessionContent.InfoClass.PrefixeGroup = _classSession.PrefixeGroup;

            p_sessionContent.InfoClass = _classSession;

            // En cas de renumérotation de la classe on modifie les noms de classe
            foreach (IElement _element in p_sessionContent.ListElement)
            {
                // On met à jour le nom de la classe si elle a changé...
                if (!_element.Class.Equals(_classSession.nameClass))
                {
                    _element.Class = _classSession.nameClass;
                    foreach (FilePhoto _photo in _element.Photos) { _photo.ClassName = _classSession.nameClass; }
                }

            }

            // Il faut maintenant fusionner la liste des individus de la session avec celle de l'école pour resynchroniser les deux...
            // On balaye l'ensemble des Individus
            // pour les fratries, on fait un traitement spécifique
            // Il faut balayer tous les élèves et si le nom n'esxiste pas dans la liste des fratries, on l'ajoute
            Log.Info("Fusion des individus de la session avec la liste des élèves de l'école ...");
            if (_typeSession.Equals(Constantes.cstFratrie))
            {
                #region Synchronisation Fratries
                foreach (IElement _element in _applClass.School.getListPerson(Constantes.cstEleve))
                {
                    if (!this.IsFratrieExist(_element))
                    {
                        Person _newElement = (Person)_element.Clone();
                        int _maxFraId = ClassOutils.getMaxId(p_sessionContent.ListElement);
                        _newElement.Id = _maxFraId.ToString("D4");
                        _newElement.FirstName = String.Empty;
                        _newElement.Photos = new List<FilePhoto>();
                        _newElement.InfosPDV = new InfoPdV();
                        _newElement.NumElement = _maxFraId;
                        _newElement.Class = _classSession.nameClass;
                        _newElement.ClassId = _classSession.idClass;
                        _newElement.Passed = false;
                        _newElement.Absent = Constantes.cstNon;
                        p_sessionContent.ListElement.Add(_newElement);
                    }
                }
                #endregion
            }
            else
            {
                #region Synchronisation Individus

                foreach (IElement _element in _applClass.School.getListFromType(p_typeSession))
                {
                    if (_element.ClassId.Equals(_classSession.idClass))
                    {
                        if (!this.IsElementExist(_element))
                        {
                            _element.Passed = false;
                            _element.Photos = new List<FilePhoto>();
                            _element.Class = _classSession.nameClass;
                            p_sessionContent.ListElement.Add(_element);
                            // Dans le cas où on est en double vue on duplique l'élément
                            if (_applClass.School.DoubleView && p_sessionContent.TypeSession == Constantes.cstIndividu)
                            {
                                IElement _newElement = (IElement)_element.Clone();
                                int _maxId = ClassOutils.getMaxId(p_sessionContent.ListElement);
                                _maxId++;
                                //_newElement.Id = _maxId.ToString("D4");
                                _newElement.Id = _element.Id + "B";
                                //_newElement.Name += "_BIS";
                                _newElement.FirstName += "(BIS)";
                                _newElement.Photos = new List<FilePhoto>();
                                _newElement.InfosPDV = new InfoPdV();
                                p_sessionContent.ListElement.Add(_newElement);
                            }
                        }
                        else
                        {
                            // On met à jour le nom de la classe si elle a changé...
                            if (!_element.Class.Equals(_classSession.nameClass)) { _element.Class = _classSession.nameClass; }
                        }
                    }
                }
                #endregion
            }
            Log.Info("Nb total Eléments = ");
            // On trie la liste finale
            p_sessionContent.ListElement = p_sessionContent.ListElement.OrderBy(o => o.KeyAsc).ToList();
            #endregion
        }
Пример #13
0
 /// <summary>
 /// Sauvegarde la session en cours
 /// </summary>
 protected void SaveSession(SessionContent _sessionContent)
 {
     Log.Info("Sauvegarde de la Session");
     Stream stream = File.Open(_fileName, FileMode.Create);
     BinaryFormatter bf = new BinaryFormatter();
     bf.Serialize(stream, _sessionContent);
     stream.Close();
 }