//Calcul du résultats des élèves // il s'agit du calcul de la note des élèves à une séquence pour une année donnée, en prenant en compte les notes // de l'élève sur toutes les évaluations des différentes matières ainsi que de leurs coéfficient //il s'agit de remplir la table "Annuelles" public void calculerResultatsAnnuelles(String codeClasse, int annee) { // calcul de la moyenne trimestrielle des élèves sur chacune des matières individuellement List <String[]> List = resultatAnnuelDA.calculResultatAnnuels(codeClasse, annee); if (List != null && List.Count != 0) { //on fabrique les objets de type ResultatAnnuelBE et on les mets dans le BD List <ResultatAnnuelBE> LResultatAnnuelBE = new List <ResultatAnnuelBE>(); for (int i = 0; i < List.Count; i++) { /* * List.ElementAt(i)[0] : matricule; * List.ElementAt(i)[1] : annee; * List.ElementAt(i)[2] : totalPoint; // le total des points de l'élève * List.ElementAt(i)[3] : moyenne; // la moyenne de l'élève * List.ElementAt(i)[4] : coef; // la somme des coeficients */ ResultatAnnuelBE resultatAnnuel = new ResultatAnnuelBE(); resultatAnnuel.matricule = List.ElementAt(i)[0]; resultatAnnuel.point = Convert.ToDouble(List.ElementAt(i)[2]); resultatAnnuel.coef = Convert.ToInt16(List.ElementAt(i)[4]); resultatAnnuel.moyenne = Convert.ToDouble(List.ElementAt(i)[3]); resultatAnnuel.annee = annee; resultatAnnuel.rang = 0; resultatAnnuel.moyenneclasse = 0; if (getMention(resultatAnnuel.moyenne) != null) { resultatAnnuel.mention = getMention(resultatAnnuel.moyenne); } else { resultatAnnuel.mention = ""; } resultatAnnuel.remarque = ""; if (resultatAnnuel.moyenne >= 10) { resultatAnnuel.decision = "Admis"; } else { resultatAnnuel.decision = "Echec"; } EleveBE eleve = new EleveBE(); eleve.matricule = resultatAnnuel.matricule; if (resultatAnnuel.moyenne >= 10) { if (eleveDA.rechercherNiveau(eleve, annee) != -1) { resultatAnnuel.newNiveau = eleveDA.rechercherNiveau(eleve, annee) + 1; } else { resultatAnnuel.newNiveau = eleveDA.rechercherNiveau(eleve, annee); } } else { resultatAnnuel.newNiveau = eleveDA.rechercherNiveau(eleve, annee); } //resultatAnnuel.moyenneMin = 0; //resultatAnnuel.moyenneMax = 0; LResultatAnnuelBE.Add(resultatAnnuel); } //-------------- on calcule le rang, la moyenne générale de la classe, les moyennes min et max double moyenneDeLaClasse = 0; // moyenne générale de la classe //double moyenneMin = LResultatTrimestriels.ElementAt(0).moyenne; // moyenne mininale des élèves de la classe //double moyenneMax = LResultatTrimestriels.ElementAt(0).moyenne; // moyenne maximale des élèves de la classe //on trie la liste LResultatAnnuelBE = LResultatAnnuelBE.OrderByDescending(o => o.moyenne).ToList(); ResultatAnnuelBE resultatPrecedent = new ResultatAnnuelBE(); for (int i = 0; i < LResultatAnnuelBE.Count; i++) { // ------------------- DEBUT détermination du rang if (i == 0) { // on est sur le premier (celui qui a la plus grande note) ResultatAnnuelBE oldResultat = LResultatAnnuelBE.ElementAt(i); // l'ancienne version de la moyenne (sera utilisé pour la modification) LResultatAnnuelBE.ElementAt(i).rang = 1; // le premier pour cette séquence et cette matière //on met à jour le rang dans la BD //modifierMoyenne(oldResultat, ResultatAnnuelBE.ElementAt(j)); resultatPrecedent = LResultatAnnuelBE.ElementAt(i); } else { if (LResultatAnnuelBE.ElementAt(i).moyenne == resultatPrecedent.moyenne) { ResultatAnnuelBE oldResultat = LResultatAnnuelBE.ElementAt(i); // l'ancienne version de la moyenne (sera utilisé pour la modification) //alors on a un ex éco (ils ont le même rang) LResultatAnnuelBE.ElementAt(i).rang = resultatPrecedent.rang; //on met à jour le rang dans la BD //modifierMoyenne(oldResultat, LResultatAnnuelBE.ElementAt(j)); } else { ResultatAnnuelBE oldResultat = LResultatAnnuelBE.ElementAt(i); // l'ancienne version de la moyenne (sera utilisé pour la modification) //alors l'élève prend le rend suivant //LResultatAnnuelBE.ElementAt(j).rang = moyennePrecedente.rang + 1; LResultatAnnuelBE.ElementAt(i).rang = i + 1; //on met à jour le rang dans la BD //modifierMoyenne(oldResultat, LResultatAnnuelBE.ElementAt(j)); } resultatPrecedent = LResultatAnnuelBE.ElementAt(i); } // ------------------- FIN détermination du rang // ------------------- DEBUT détermination de la moyenne de la classe moyenneDeLaClasse = moyenneDeLaClasse + LResultatAnnuelBE.ElementAt(i).moyenne; // ------------------- FIN détermination de la moyenne de la classe //// ------------------- DEBUT détermination des moyennes minimales et maximales //if (LResultatAnnuelBE.ElementAt(i).moyenne < moyenneMin) // moyenneMin = LResultatAnnuelBE.ElementAt(i).moyenne; //if (LResultatAnnuelBE.ElementAt(i).moyenne > moyenneMax) // moyenneMax = LResultatAnnuelBE.ElementAt(i).moyenne; //// ------------------- FIN détermination des moyennes minimales et maximales } moyenneDeLaClasse = moyenneDeLaClasse / LResultatAnnuelBE.Count; //------------------- DEBUT mise à jour des moyennes avec les infos telles que : moyenneClasse, mention, moyenneMin, moyenneMax for (int i = 0; i < LResultatAnnuelBE.Count; i++) { LResultatAnnuelBE.ElementAt(i).moyenneclasse = moyenneDeLaClasse; //LResultatAnnuelBE.ElementAt(i).moyenneMin = moyenneMin; //LResultatAnnuelBE.ElementAt(i).moyenneMax = moyenneMax; //on met à jour le rang dans la BD if (resultatAnnuelDA.rechercher(LResultatAnnuelBE.ElementAt(i)) != null) { resultatAnnuelDA.supprimer(LResultatAnnuelBE.ElementAt(i)); } resultatAnnuelDA.ajouter(LResultatAnnuelBE.ElementAt(i)); //modifierMoyenneTrimestriel(LResultatAnnuelBE.ElementAt(i), LResultatAnnuelBE.ElementAt(i)); } //------------------- FIN mise à jour des moyennes avec les infos telles que : moyenneClasse, mention, moyenneMin, moyenneMax } journalDA.journaliser("Calcul des résultats annuelles des élèves de la classe " + codeClasse + ", année " + annee); }
public BulletinAnnuel(EleveBE eleve, ClasseBE classe, int annee, int nbTrimestre, int nbSequence, List <LigneBulletinAnnuel> listLigneBulletinAnnuel, ResultatAnnuelBE resultatannuel, List <SanctionnerBE> ListSanction) { this.eleve = null; this.classe = null; this.annee = annee; this.nbTrimestre = nbTrimestre; this.nbSequence = nbSequence; this.listLigneBulletinAnnuel = listLigneBulletinAnnuel; this.resultatannuel = resultatannuel; this.ListSanction = ListSanction; }
private void actionToExcecuteOnClick() { int annee = notificationBL.anneeEnCours(); List <EleveBE> eleves = new List <EleveBE>(); nb = 0; nbreussi = 0; echecs = new List <Adresse>(); Dictionary <string, string> mappage = new Dictionary <string, string>(); Dictionary <string, string> mappageNumero = new Dictionary <string, string>(); switch (action) { case CONVOCATION_PARENT: EleveBE eleve = new EleveBE(); eleve.matricule = convocationParent.matricule; eleve = notificationBL.rechercherEleve(eleve); nb = 1; nbreussi = 0; string[] adresse = new string[2] { eleve.matricule, eleve.telParent }; Dictionary <string, int> result = new Dictionary <string, int>(); if (Tools.format_number(eleve.telParent) == "") { echecs.Add(new Adresse(eleve.telParent, eleve.nom)); } else { nbreussi++; result = notificationBL.envoiSMS(adresse, convocationParent.message); } break; case CONVOCATION_PERSONNEL: EnseignantBE prof = new EnseignantBE(); prof.codeProf = convocationPersonnel.matricule; prof = notificationBL.rechercherEnseignant(prof); nb = 1; nbreussi = 0; adresse = new string[2] { prof.codeProf, prof.tel }; result = new Dictionary <string, int>(); if (Tools.format_number(prof.tel) == "") { echecs.Add(new Adresse(prof.tel, prof.nomProf)); } else { nbreussi++; result = notificationBL.envoiSMS(adresse, convocationPersonnel.message); } break; case ENVOI_RESULTAT: List <string> sequences = notificationBL.listerValeurColonneSequence("codeseq"); List <string> trimestres = notificationBL.listerValeurColonneTrimestre("codetrimestre"); List <string[]> destinataireSMS = new List <string[]>(); mappage = new Dictionary <string, string>(); mappageNumero = new Dictionary <string, string>(); if (envoiResultat.classe == EnvoyerResultatUC.TOUTE) { eleves = notificationBL.listeEleveDuneAnnee(annee); } else { eleves = notificationBL.listeEleveDuneClasse(envoiResultat.classe, annee); } string message = ""; if (eleves != null) { nb = eleves.Count; nbreussi = 0; if (sequences.Contains(envoiResultat.periode)) { ResultatBE resultat; foreach (EleveBE e in eleves) { resultat = new ResultatBE(); resultat = notificationBL.resultatSequentielleEleve(e.matricule, annee, envoiResultat.periode); if (Tools.format_number(e.telParent) == "") { echecs.Add(new Adresse(e.telParent, e.nom)); } else { nbreussi++; message = "L'élève " + e.nom + " a obtenu la note de " + resultat.moyenne + " pour le compte de la Séquence " + envoiResultat.periode + " Rang " + resultat.rang + " Moyenne générale " + resultat.moyenneclasse; destinataireSMS.Add(new string[3] { e.matricule, e.telParent, message }); mappage.Add(e.matricule, e.nom); mappageNumero.Add(e.matricule, e.telParent); } } } if (trimestres.Contains(envoiResultat.periode)) { ResultatTrimestrielBE resultat; foreach (EleveBE e in eleves) { resultat = new ResultatTrimestrielBE(); resultat = notificationBL.resultatTrimestrielEleve(e.matricule, annee, envoiResultat.periode); if (Tools.format_number(e.telParent) == "") { echecs.Add(new Adresse(e.telParent, e.nom)); } else { nbreussi++; message = "L'élève " + e.nom + " a obtenu la note de " + resultat.moyenne + " pour le compte du Trimestre " + envoiResultat.periode + " Rang " + resultat.rang + " Moyenne générale " + resultat.moyenneclasse; destinataireSMS.Add(new string[3] { e.matricule, e.telParent, message }); mappage.Add(e.matricule, e.nom); mappageNumero.Add(e.matricule, e.telParent); } } } if (EnvoyerResultatUC.ANNUEL == envoiResultat.periode) { ResultatAnnuelBE resultat; foreach (EleveBE e in eleves) { resultat = new ResultatAnnuelBE(); resultat = notificationBL.resultatAnnuelDunEleve(e.matricule, annee); if (Tools.format_number(e.telParent) == "") { echecs.Add(new Adresse(e.telParent, e.nom)); } else { nbreussi++; message = "L'élève " + e.nom + " a obtenu la note annuelle de " + resultat.moyenne + " pour le compte de l'année académique : " + (annee - 1) + "/" + annee + " Rang " + resultat.rang + " Moyenne générale " + resultat.moyenneclasse; destinataireSMS.Add(new string[3] { e.matricule, e.telParent, message }); mappage.Add(e.matricule, e.nom); mappageNumero.Add(e.matricule, e.telParent); } } } } result = new Dictionary <string, int>(); result = notificationBL.envoiSMS(destinataireSMS); //if (result != null) //{ // foreach (KeyValuePair<string, string> element in mappage) // { // if (result[element.Key] != 0) // echecs.Add(new Adresse(mappageNumero[element.Key], element.Value)); // } // nbreussi = nb - echecs.Count; //} //else //{ // foreach (KeyValuePair<string, string> element in mappage) // { // echecs.Add(new Adresse(mappageNumero[element.Key], element.Value)); // } //} break; case REUNION: destinataireSMS = new List <string[]>(); mappage = new Dictionary <string, string>(); mappageNumero = new Dictionary <string, string>(); nbreussi = 0; nb = 0; if (ReunionUC.ENSEIGNANT == reunion.concerne) { List <EnseignantBE> liste = new List <EnseignantBE>(); liste = notificationBL.listerToutEnseignants(); if (liste != null) { nb = liste.Count; foreach (EnseignantBE e in liste) { if (Tools.format_number(e.tel) == "") { echecs.Add(new Adresse(e.tel, e.nomProf)); } else { nbreussi++; destinataireSMS.Add(new string[2] { e.codeProf, e.tel }); mappage.Add(e.codeProf, e.nomProf); mappageNumero.Add(e.codeProf, e.tel); } } } } else if (ReunionUC.PARENT == reunion.concerne) { List <EleveBE> list = new List <EleveBE>(); list = notificationBL.listeEleveDuneAnnee(annee); if (list != null) { nb = list.Count; foreach (EleveBE e in list) { if (Tools.format_number(e.telParent) == "") { echecs.Add(new Adresse(e.telParent, e.nom)); } else { nbreussi++; destinataireSMS.Add(new string[2] { e.matricule, e.telParent }); mappage.Add(e.matricule, e.nom); mappageNumero.Add(e.matricule, e.telParent); } } } } else if (ReunionUC.MIXTE == reunion.concerne) { List <EnseignantBE> liste = new List <EnseignantBE>(); liste = notificationBL.listerToutEnseignants(); if (liste != null) { nb = liste.Count; foreach (EnseignantBE e in liste) { if (Tools.format_number(e.tel) == "") { echecs.Add(new Adresse(e.tel, e.nomProf)); } else { nbreussi++; destinataireSMS.Add(new string[2] { e.codeProf, e.tel }); mappage.Add(e.codeProf, e.nomProf); mappageNumero.Add(e.codeProf, e.tel); } } } List <EleveBE> list = new List <EleveBE>(); list = notificationBL.listeEleveDuneAnnee(annee); if (list != null) { nb += list.Count; foreach (EleveBE e in list) { if (Tools.format_number(e.telParent) == "") { echecs.Add(new Adresse(e.telParent, e.nom)); } else { nbreussi++; destinataireSMS.Add(new string[2] { e.matricule, e.telParent }); mappage.Add(e.matricule, e.nom); mappageNumero.Add(e.matricule, e.telParent); } } } } message = reunion.message; result = new Dictionary <string, int>(); result = notificationBL.envoiSMS(destinataireSMS, message); //if (result != null) //{ // foreach (KeyValuePair<string, string> element in mappage) // { // if (result[element.Key] != 0) // echecs.Add(new Adresse(mappageNumero[element.Key], element.Value)); // } // nbreussi = nb - echecs.Count; //} //else // foreach (KeyValuePair<string, string> element in mappage) // { // echecs.Add(new Adresse(mappageNumero[element.Key], element.Value)); // } break; case REUNION_ELEVE: destinataireSMS = new List <string[]>(); eleves = new List <EleveBE>(); mappage = new Dictionary <string, string>(); mappageNumero = new Dictionary <string, string>(); nbreussi = 0; if (ReunionEleveUC.SERIE == reunionEleve.concerne) { eleves = notificationBL.listeEleveDuneSerie(reunionEleve.code, annee); if (eleves != null) { foreach (EleveBE e in eleves) { if (Tools.format_number(e.telParent) == "") { echecs.Add(new Adresse(e.telParent, e.nom)); } else { nbreussi++; destinataireSMS.Add(new string[2] { e.matricule, e.telParent }); mappage.Add(e.matricule, e.nom); mappageNumero.Add(e.matricule, e.telParent); } } } } else if (ReunionEleveUC.CYCLE == reunionEleve.concerne) { eleves = notificationBL.listeEleveDunCycle(reunionEleve.code, annee); if (eleves != null) { foreach (EleveBE e in eleves) { if (Tools.format_number(e.telParent) == "") { echecs.Add(new Adresse(e.telParent, e.nom)); } else { nbreussi++; destinataireSMS.Add(new string[2] { e.matricule, e.telParent }); mappage.Add(e.matricule, e.nom); mappageNumero.Add(e.matricule, e.telParent); } } } } else if (ReunionEleveUC.NIVEAU == reunionEleve.concerne) { eleves = notificationBL.listeEleveDunNiveau(reunionEleve.code, annee); if (eleves != null) { foreach (EleveBE e in eleves) { if (Tools.format_number(e.telParent) == "") { echecs.Add(new Adresse(e.telParent, e.nom)); } else { nbreussi++; destinataireSMS.Add(new string[2] { e.matricule, e.telParent }); mappage.Add(e.matricule, e.nom); mappageNumero.Add(e.matricule, e.telParent); } } } } else if (ReunionEleveUC.CLASSE == reunionEleve.concerne) { eleves = notificationBL.listeEleveDuneClasse(reunionEleve.code, annee); if (eleves != null) { foreach (EleveBE e in eleves) { if (Tools.format_number(e.telParent) == "") { echecs.Add(new Adresse(e.telParent, e.nom)); } else { nbreussi++; destinataireSMS.Add(new string[2] { e.matricule, e.telParent }); mappage.Add(e.matricule, e.nom); mappageNumero.Add(e.matricule, e.telParent); } } } } else if (ReunionEleveUC.MIXTE == reunionEleve.concerne) { eleves = notificationBL.listeEleveDuneAnnee(annee); if (eleves != null) { foreach (EleveBE e in eleves) { if (Tools.format_number(e.telParent) == "") { echecs.Add(new Adresse(e.telParent, e.nom)); } else { nbreussi++; destinataireSMS.Add(new string[2] { e.matricule, e.telParent }); mappage.Add(e.matricule, e.nom); mappageNumero.Add(e.matricule, e.telParent); } } } } nb = eleves.Count; result = new Dictionary <string, int>(); result = notificationBL.envoiSMS(destinataireSMS, reunionEleve.message); //if (result != null) //{ // foreach (KeyValuePair<string, string> element in mappage) // { // if (result[element.Key] != 0) // echecs.Add(new Adresse(mappageNumero[element.Key], element.Value)); // } // nbreussi = nb - echecs.Count; //} //else // foreach (KeyValuePair<string, string> element in mappage) // { // echecs.Add(new Adresse(mappageNumero[element.Key], element.Value)); // } break; default: break; } }