/// <summary> /// Evénement lors du clic sur le bouton Ajout Prof /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void btnAddProf_Click(object sender, EventArgs e) { int _lastSelected = 0; InfosClasse _infoClass = (InfosClasse)cmbClasse.SelectedItem; // Si la classe est nulle on est dans le cas d'une création sans liste if (_infoClass == null) { _infoClass = new InfosClasse(); } // On ajoute une Person Person _newPerson = new Person(); _newPerson.Class = _infoClass.nameClass; _newPerson.ClassId = _infoClass.idClass; _newPerson.TypePerson = Constantes.cstProf; // on crée un Prof int _maxId = ClassOutils.getMaxId(p_applClass.School.getListFromType(Constantes.cstIndividu)); _newPerson.NumElement = ClassOutils.getMaxNumElement(p_SessionBase.Content.ListElement); _newPerson.Name = "P" + _newPerson.NumElement.ToString("D4"); _newPerson.FirstName = String.Empty; _newPerson.Id = _maxId.ToString("D4"); _newPerson.InfosPDV.IsGratis = true; // Pour les PROFS, la photo est gratuite par défaut ListePersons.frmEditIndividu frmEdit = new ListePersons.frmEditIndividu(_newPerson, p_applClass.School, ModeAppel.Create); if (frmEdit.ShowDialog(this) == DialogResult.OK) { // On ajoute le Groupe dans la Session. // Il faut aussi l'ajouter dans la liste des éléments p_applClass.School.ListElement.Add(_newPerson); p_applClass.School.IsChanged = true; ClassOutils.saveSchoolFile(p_applClass); p_SessionBase.Content.ListElement.Add(_newPerson); // Dans le cas où on est en double vue on duplique l'élément if (p_applClass.School.DoubleView && p_SessionBase.Content.TypeSession == Constantes.cstIndividu) { IElement _newElement = (IElement)_newPerson.Clone(); _newElement.Id = _newPerson.Id + "B"; _newElement.FirstName += "(BIS)"; _newElement.Photos = new List<FilePhoto>(); p_SessionBase.Content.ListElement.Add(_newElement); } // Il faut trier la liste pour etre cohérent à la liste affichée p_SessionBase.Content.ListElement = p_SessionBase.Content.ListElement.OrderBy(o => o.KeyAsc).ToList(); _lastSelected = this.searchElement(_newPerson); this.ClearListe(); this.ChargeListe(p_SessionBase.Content.ListElement); } if (lstPupils.Items.Count > 0) { lstPupils.Items[_lastSelected].Selected = true; lstPupils.Items[_lastSelected].EnsureVisible(); } this.actualiseCompteurs(); }
/// <summary> /// Evénement lors du clic sur le bouton Ajout Eleve /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void btnAddEleve_Click(object sender, EventArgs e) { int _numElement; int _lastSelected = 0; InfosClasse _infoClass = (InfosClasse)cmbClasse.SelectedItem; // Si la classe est nulle on est dans le cas d'une création sans liste if (_infoClass == null) { _infoClass = new InfosClasse(); } switch (tabPriseDeVue.SelectedIndex) { case 0: // On ajoute une Person Person _newPerson = new Person(); _newPerson.Class = _infoClass.nameClass; _newPerson.ClassId = _infoClass.idClass; // Si la classe est toppé come gratuite, on ajoute tous les éléments en Gratuit if (_infoClass.allGratis) { _newPerson.InfosPDV.IsGratis = true; } _newPerson.TypePerson = Constantes.cstEleve; // Par défaut, on crée un élève int _maxId = ClassOutils.getMaxId(p_applClass.School.getListFromType(Constantes.cstIndividu)); _newPerson.Id = _maxId.ToString("D4"); _numElement = ClassOutils.getMaxNumElement(p_SessionBase.Content.ListElement); _newPerson.NumElement = _numElement; _newPerson.Name = "E" + _numElement.ToString("D4"); _newPerson.FirstName = String.Empty; ListePersons.frmEditIndividu frmEdit = new ListePersons.frmEditIndividu(_newPerson, p_applClass.School, ModeAppel.Create); if (frmEdit.ShowDialog(this) == DialogResult.OK) { // On ajoute le Groupe dans la Session. // Il faut aussi l'ajouter dans la liste des éléments p_applClass.School.ListElement.Add(_newPerson); p_applClass.School.IsChanged = true; ClassOutils.saveSchoolFile(p_applClass); p_SessionBase.Content.ListElement.Add(_newPerson); // Dans le cas où on est en double vue on duplique l'élément if (p_applClass.School.DoubleView && p_SessionBase.Content.TypeSession == Constantes.cstIndividu) { _maxId++; IElement _newElement = (IElement)_newPerson.Clone(); _newElement.Id = _newPerson.Id + "B"; _newElement.FirstName += "(BIS)"; _newElement.Photos = new List<FilePhoto>(); _newElement.InfosPDV = new InfoPdV(); p_SessionBase.Content.ListElement.Add(_newElement); } // Il faut trier la liste pour etre cohérent à la liste affichée p_SessionBase.Content.ListElement = p_SessionBase.Content.ListElement.OrderBy(o => o.KeyAsc).ToList(); _lastSelected = this.searchElement(_newPerson); this.ClearListe(); this.ChargeListe(p_SessionBase.Content.ListElement); } break; case 1: // On ajoute un Group Group _newGroup = new Group(); _newGroup.Class = _infoClass.nameClass; _newGroup.ClassId = _infoClass.idClass; // Si la classe est toppé come gratuite, on ajoute tous les éléments en Gratuit if (_infoClass.allGratis) { _newGroup.InfosPDV.IsGratis = true; } _newGroup.TypePerson = Constantes.cstGroup; // Par défaut, on crée un élève int _maxGrpId = ClassOutils.getMaxId(p_SessionBase.Content.ListElement); _newGroup.NumElement = ClassOutils.getMaxNumElement(p_SessionBase.Content.ListElement); _newGroup.Id = _maxGrpId.ToString("D4"); _newGroup.Name = "G" + _newGroup.NumElement.ToString("D4"); _newGroup.FirstName = String.Empty; ListePersons.frmEditGroupe frmEditGrp = new ListePersons.frmEditGroupe(_newGroup, p_applClass.School, ModeAppel.Create); if (frmEditGrp.ShowDialog(this) == DialogResult.OK) { // On ajoute le Groupe dans la Session. // Il faut aussi l'ajouter dans la liste des éléments p_applClass.School.ListElement.Add(_newGroup); p_applClass.School.IsChanged = true; ClassOutils.saveSchoolFile(p_applClass); p_SessionBase.Content.ListElement.Add(_newGroup); // Il faut trier la liste pour etre cohérent à la liste affichée p_SessionBase.Content.ListElement = p_SessionBase.Content.ListElement.OrderBy(o => o.KeyAsc).ToList(); _lastSelected = this.searchElement(_newGroup); this.ClearListe(); this.ChargeListe(p_SessionBase.Content.ListElement); } break; case 2: // On ajoute une Fratrie Person _newFratrie = new Person(); _newFratrie.Class = Constantes.cstFratrie; _newFratrie.ClassId = 99999; _newFratrie.TypePerson = Constantes.cstEleve; // Une Fratrie est un Elève int _maxFraId = ClassOutils.getMaxId(p_SessionBase.Content.ListElement); _newFratrie.NumElement = ClassOutils.getMaxNumElement(p_SessionBase.Content.ListElement); _newFratrie.Id = _maxFraId.ToString("D4"); _newFratrie.Name = "F" + _newFratrie.NumElement.ToString("D4"); _newFratrie.FirstName = String.Empty; ListePersons.frmEditGroupe frmEditFratrie = new ListePersons.frmEditGroupe(_newFratrie, p_applClass.School, ModeAppel.Create); if (frmEditFratrie.ShowDialog(this) == DialogResult.OK) { // On ajoute le Groupe dans la Session. // Il faut aussi l'ajouter dans la liste des éléments p_applClass.School.ListElement.Add(_newFratrie); p_applClass.School.IsChanged = true; ClassOutils.saveSchoolFile(p_applClass); p_SessionBase.Content.ListElement.Add(_newFratrie); // Il faut trier la liste pour etre cohérent à la liste affichée p_SessionBase.Content.ListElement = p_SessionBase.Content.ListElement.OrderBy(o => o.KeyAsc).ToList(); _lastSelected = this.searchElement(_newFratrie); this.ClearListe(); this.ChargeListe(p_SessionBase.Content.ListElement); } break; } if (lstPupils.Items.Count > 0) { lstPupils.Items[_lastSelected].Selected = true; lstPupils.Items[_lastSelected].EnsureVisible(); } this.actualiseCompteurs(); }
private string getPhotoName(IElement _element, InfosClasse _infoClass) { return getPhotoName(_element, _infoClass.nameClass); }
/// <summary> /// Création du Feuillet pour ProdLab /// </summary> /// <param name="_sessionContent"></param> public void createReportProdLab(List<IElement> _listElement, InfosClasse _infoClass) { Log.Debug("createReportProdLab ." + PIVOT_SHEETNAME); // Getting the worksheet by its name... p_sheet = p_templateWorkbook.GetSheet(PIVOT_SHEETNAME); // Maintenant il faut balayer tous les élèves foreach (Person _person in _listElement) { if (_person.Passed) { HSSFRow dataOrder = (HSSFRow)p_sheet.CreateRow(p_numRow); ICell _newCell = dataOrder.CreateCell(0); _newCell.SetCellValue(this.getPhotoName(_person, _infoClass)); _newCell = dataOrder.CreateCell(1); // PhotoID _newCell.SetCellValue("00000000"); _newCell = dataOrder.CreateCell(2); // Classe _newCell.SetCellValue(_person.Class); _newCell = dataOrder.CreateCell(3); // Pochette Complète _newCell.SetCellValue(_person.InfosPDV.NbExemplaires.ToString()); p_numRow++; } } }
/// <summary> /// Met à jour la classe /// </summary> /// <param name="_oldName"></param> /// <param name="_newName"></param> public void updateClass(InfosClasse _objectClass, string _newName, string _prefixeName, bool _allGratis, bool _isIgnore) { // On recherche l'objet InfoClasse correspondant à la classe à modifier // On vérifie que la nouvelle classe saisie n'existe pas déjà if (!this.IsClassExist(_newName)) { _objectClass.nameClass = _newName; _objectClass.PrefixeGroup = _prefixeName; } if (!_objectClass.PrefixeGroup.Equals(_prefixeName)) { _objectClass.PrefixeGroup = _prefixeName; } _objectClass.allGratis = _allGratis; _objectClass.isIgnore = _isIgnore; p_currentIdClass = _objectClass.idClass; }
/// <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 }