/// <summary> /// instancie les objets MStagiaires spécialisés correspondants aux Entities du dbSet /// </summary> /// <param name="laSection">la ref de la section qui gère la collection de ces stagiaires</param> public static void InstancieStagiairesSection(MSection laSection) { // instancier le dbContext au besoin if (DonneesDAO.DbContextFormation == null) { DonneesDAO.DbContextFormation = new FormationsContainer(); } var query = from a in DonneesDAO.DbContextFormation.StagiairesSet where a.Sections.Idsection == laSection.CodeSection select a; // ref d'objet générique (pour la collection) MStagiaire leStagiaire; // parcourt les lignes de la requête foreach (Stagiaires item in query) { // instancie et renseigne l'objet MStagiaire spécialisé if (item is StagiaireCIF) { // cas d'un CIF : objet MStagiaireCIF leStagiaire = new MStagiaireCIF(item.NumOsia, item.NomStagiaire.Trim(), item.PrenomStagiaire.Trim(), item.rueStagiaire, item.VilleStagiaire.Trim(), item.CodePostalStagiaire, ((StagiaireCIF)item).Fongecif, ((StagiaireCIF)item).TypeCIF.Trim() ); } else { // cas d'un DE : objet MStagiaireDE leStagiaire = new MStagiaireDE(item.NumOsia, item.NomStagiaire.Trim(), item.PrenomStagiaire.Trim(), item.rueStagiaire, item.VilleStagiaire.Trim(), item.CodePostalStagiaire.Trim(), ((StagiaireDE)item).RemuAfpa ); } // affecter points et notes // on ne peut affecter directement Pointsnotes et NbreNotes // dans MStagiaire que si le demandeur est de ce type MStagiaireDAOEFStatic leStagiaire.SetPoints(Convert.ToDouble(item.PointsNotes), (int)item.NbreNotes, typeof(MStagiaireDAOEFStatic).ToString()); // ajoute le Stagiaire à la collection de la section laSection.Ajouter(leStagiaire); } }
/// <summary> /// fonction qui instancie un nouvel objet MStagiaire spécialisé /// puis tente d'affecter ses membres (attributs ou prop.) /// avec interception erreur éventuelle levée par la classe MStagiaire /// et ajoute la référence de ce stagiaire dans la collection de sa section /// </summary> /// <returns>Boolean : true = OK, false = erreur</returns> private Boolean instancie() { // créer une référence d'objet MStagiaire MStagiaire nouveauStagiaire; try { if (this.rbtDE.Checked) // c'est un DE { // instancier un stagiaire spécialisé DE et lui affecter toutes ses propriétés Int32 numOsia; if (Int32.TryParse(txtOSIA.Text, out numOsia)) { nouveauStagiaire = new MStagiaireDE(numOsia, txtNom.Text, txtPrenom.Text, txtAdresse.Text, txtVille.Text, txtCodePostal.Text, false); } else { throw new Exception("The Osia Number is incorrect, type of Int32"); } } else // c'est un CIF { // déterminer le type de CIF TypeCifEnum leTypeCIF; if (this.rbtCDD.Checked) { leTypeCIF = TypeCifEnum.CDD; } else if (this.rbtCDI.Checked) { leTypeCIF = TypeCifEnum.CDI; } else { leTypeCIF = TypeCifEnum.TT; } // instancier un stagiaire spécialisé CIF et lui affecter toutes ses propriétés Int32 numOsia; if (Int32.TryParse(txtOSIA.Text, out numOsia)) { nouveauStagiaire = new MStagiaireCIF(numOsia, txtNom.Text, txtPrenom.Text, txtAdresse.Text, txtVille.Text, txtCodePostal.Text, txtFongecif.Text, leTypeCIF); } else { throw new Exception("The Osia Number is incorrect, type of Int32"); } } // dans tous les cas, ajouter la référence d'objet MStagiaire dans la collection de sa section laSection.Ajouter(nouveauStagiaire); Console.WriteLine(laSection.Identifiant + " ajout nouveau stagiaire "); return(true); } catch (Exception ex) { nouveauStagiaire = null; MessageBox.Show("Erreur : \n" + ex.Message, "Ajout de stagiaire"); return(false); } }