using System; using System.Collections.Generic; using System.Text; using System.Xml.Serialization; namespace CG67.FicheCollege.Domaine { // pointeurs de fonction, lasy-loading. public delegate IList dlgLoadActionEducative(string codeRNE, int annee); public delegate IList dlgLoadClasseDecouverte(string codeRNE, int annee); public delegate IList dlgLoadATC(string codeRNE); public delegate IList dlgLoadContratAide(string codeRNE); public delegate IList dlgLoadBilinguisme(string codeRNE, int annee); public delegate Commentaires dlgLoadCommentaires(string codeRNE, int annee); public delegate IList dlgLoadContact(string codeRNE); public delegate Dotation dlgLoadDotation(string codeRNE, int annee); public delegate IList dlgLoadEquipement(string codeRNE, int annee); public delegate IList dlgLoadInvestissement(string codeRNE, int annee); public delegate MCG dlgLoadMCG(string codeRNE); public delegate Logement dlgLoadLogement(string codeRNE); public delegate IList dlgLoadProgTravaux(string codeRNE, int annee); public delegate IList dlgLoadProjetPilote(string codeRNE, int annee); public delegate Restauration dlgLoadRestauration(string codeRNE, int annee); [Serializable] public class Etablissement { #region Propriétés #region Loaders private dlgLoadActionEducative LoaderActionEducative; private dlgLoadClasseDecouverte LoaderClasseDecouverte; private dlgLoadATC LoaderATC; private dlgLoadContratAide LoaderContratAide; private dlgLoadBilinguisme LoaderBilinguisme; private dlgLoadCommentaires LoaderCommentaires; private dlgLoadContact LoaderContact; private dlgLoadDotation LoaderDotation; private dlgLoadEquipement LoaderEquipement; private dlgLoadInvestissement LoaderInvestissement; private dlgLoadMCG LoaderMCG; private dlgLoadLogement LoaderLogement; private dlgLoadProgTravaux LoaderProgTravaux; private dlgLoadProjetPilote LoaderProjetPilote; private dlgLoadRestauration LoaderRestauration; #endregion /// /// Code RNE de l'établissement. /// private string mCodeRNE; /// /// annee de generation de la fiche. /// private int mAnnee; /// /// Nom de l'établissement. /// private string mNom; /// /// Type de l'établissement de l'établissement. /// private string mTypeEtablissement; /// /// Année de contruction de l'établissement. /// private int mAnneConstruction; /// /// Telephone de l'établissement. /// private string mTelephone; /// /// E-Mail de l'établissement. /// private string mEmail; /// /// Fax de l'établissement. /// private string mFax; /// /// Nom du propriétaire de l'établissement. /// private string mNomProprietaire; /// /// Valeur théorique ETP (Equivalent Temps Plein) de l'établissement. /// private double mValeurETPTheorique; /// /// Montant de la réserve monétaire de l'établissement. /// private double mReserve; /// /// IListe des actions éducatives dont l'établissement participe. /// private IList mLstClasseDecouverte; /// /// IListe des actions éducatives dont l'établissement participe. /// private IList mLstActionEducatives; /// /// IListe des projets pilotes dont l'établissement participe. /// private IList mLstProjetPilote; /// /// Dotation à l'année N de l'établissement. /// private Dotation mDotationAnneeN; /// /// Dotation à l'année N - 1 de l'établissement. /// private Dotation mDotationAnneeNmoins1; /// /// IListe des investissements de l'établissement. /// private IList mLstInvestissement; /// /// IListe du nombre d'effectif collégien sur les 10 dernières années /// private IList mLstEffectif; /// /// Surface d'emprise de l'établissement /// private double mSurface; /// /// IListe des années de restructuration /// private IList mLstRestructuration; /// /// Principal, gesionnaire et conseiller general de l'établissement (Civilité, Nom, Prénom) /// private IList mContacts; /// /// MCG de rattachement de l'établissement /// private MCG mMcgRattachement; /// /// Logement de fonction /// private Logement mLogementFonction; /// /// IListe d'ATC /// private IList mLstATC; /// /// IListe des contrats Aidés /// private IList mLstContratAide; /// /// IListe des équipements /// private IList mLstEquipements; /// /// Le(s) secteur(s) de recrutement de l'établissement. /// private IList mLstSecteurRecrutement; /// /// adresse de l'établissement. /// private string mAdresse; /// /// complément de l'adresse. /// private string mComplementAdresse; /// /// ville de l'établissement. /// private string mVille; /// /// Contient les commentaires utiles à différents moments de la fiche. /// private Commentaires mCommentairesGeneraux; /// /// Liste de travaux de n-1 à n+1 /// private IList mLstTravaux; /// /// objet restauration /// private Restauration mRestaurer; /// /// Bilinguisme /// private IList mBilingue; /// /// Code postal du l'établissement /// private int mCodePostal; /// /// Lien vers la photo du collège. /// private string mLienPhoto; /// /// nombre total de remplacements d'ATC /// private int mNbrRemplacementsATC; private int mNbrRemplacementsContratAide; private bool mIsRestautant; private bool mIsInternat; private int mEffectifTheorique; #endregion #region méthodes get/set /// /// Obtient ou définit le Code RNE de l'établissement. /// public string CodeRNE { get { return mCodeRNE; } set { mCodeRNE = value; } } /// /// Obtient ou définit le Nom de l'établissement. /// public string Nom { //si le collège n'a pas de nom, on retourne la ville du collège (ex : collège de truchtersheim) get { if (mNom == string.Empty) return "de " + mVille; return mNom; } set { mNom = value; } } /// /// Obtient ou définit le Type de l'établissement. /// public string TypeEtablissement { get { return mTypeEtablissement; } set { mTypeEtablissement = value; } } /// /// Obtient ou définit l'année de construction de l'établissement. /// public int AnneeConstruction { get { return mAnneConstruction; } set { mAnneConstruction = value; } } /// /// Obtient ou définit le téléphone de l'établissement. /// public string Telephone { get { return mTelephone; } set { mTelephone = value; } } /// /// Obtient ou définit l'email de l'établissement. /// public string Email { get { return mEmail; } set { mEmail = value; } } /// /// Obtient ou définit le fax de l'établissement. /// public string Fax { get { return mFax; } set { mFax = value; } } /// /// Obtient ou définit le Nom du propriétaire de l'établissement. /// public string NomProprietaire { get { return mNomProprietaire; } set { mNomProprietaire = value; } } /// /// Obtient ou définit la valeur ETP Théorique de l'établissement. /// public double ValeurETPTheorique { get { return mValeurETPTheorique; } set { mValeurETPTheorique = value; } } /// /// Obtient ou définit la réserve monétaire de l'établissement. /// public double Reserve { get { return mReserve; } set { mReserve = value; } } /// /// Obtient ou définit la IListe des Classes de découvertes auxquels l'établissement participe. /// public IList LstClasseDecouverte { get { if (mLstClasseDecouverte == null) mLstClasseDecouverte = this.LoaderClasseDecouverte(mCodeRNE, mAnnee); return mLstClasseDecouverte; } set { mLstClasseDecouverte = value; } } /// /// Obtient ou définit la IListe des actions éducatives auxquels l'établissement participe. /// public IList LstActionEducatives { get { if (mLstActionEducatives == null) mLstActionEducatives = this.LoaderActionEducative(mCodeRNE, mAnnee); return mLstActionEducatives; } set { mLstActionEducatives = value; } } /// /// Obtient ou définit la IListe des projets pilotes auxquels l'établissement participe. /// public IList LstProjetPilote { get { if (mLstProjetPilote == null) mLstProjetPilote = this.LoaderProjetPilote(mCodeRNE, mAnnee); return mLstProjetPilote; } set { mLstProjetPilote = value; } } /// /// Obtient ou définit la dotation à l'année N de l'établissement. /// public Dotation DotationAnneeN { get { if (mDotationAnneeN == null) mDotationAnneeN = this.LoaderDotation(mCodeRNE, mAnnee); return mDotationAnneeN; } set { mDotationAnneeN = value; } } /// /// Obtient ou définit la dotation à l'année N - 1 de l'établissement. /// public Dotation DotationAnneeNmoins1 { get { if (mDotationAnneeNmoins1 == null) mDotationAnneeNmoins1 = this.LoaderDotation(mCodeRNE, mAnnee - 1); return mDotationAnneeNmoins1; } set { mDotationAnneeNmoins1 = value; } } /// /// Obtient ou définit la IListe des investissements de l'établissement. /// public IList LstInvestissement { get { if (mLstInvestissement == null) mLstInvestissement = this.LoaderInvestissement(mCodeRNE, mAnnee); return mLstInvestissement; } set { mLstInvestissement = value; } } /// /// Obtient ou définit la IListe du nombre d'effectif collégien sur les 10 dernières années /// public IList LstEffectif { get { return mLstEffectif; } set { mLstEffectif = value; } } /// /// Obtient ou définit la surface d'emprise de l'établissement /// public double Surface { get { return mSurface; } set { mSurface = value; } } /// /// Obtient ou définit le IListe des années de restructuration /// public IList LstRestructuration { get { return mLstRestructuration; } set { mLstRestructuration = value; } } /// /// Obtient au définit le principal de l'établissement (Civilité, Nom, Prénom) /// public IList Contacts { get { if (mContacts == null) mContacts = this.LoaderContact(mCodeRNE); return mContacts; } set { mContacts = value; } } /// /// Obtient ou définit la MCG re rattachement de l'établissement. /// public MCG McgRattachement { get { if (mMcgRattachement == null) mMcgRattachement = this.LoaderMCG(mCodeRNE); return mMcgRattachement; } set { mMcgRattachement = value; } } /// /// Obtient ou définit un objet Logement /// public Logement LogementDeFonction { get { if (mLogementFonction == null) mLogementFonction = this.LoaderLogement(mCodeRNE); return mLogementFonction; } set { mLogementFonction = value; } } /// /// Obtient ou définit la IListe d'ATC /// public IList LstATC { get { if (mLstATC == null) mLstATC = this.LoaderATC(mCodeRNE); return mLstATC; } set { mLstATC = value; } } /// /// Obtient ou définit la IListe d'ATC /// public IList LstContratAide { get { if (mLstContratAide == null) mLstContratAide = this.LoaderContratAide(mCodeRNE); return mLstContratAide; } set { mLstContratAide = value; } } /// /// Obtient ou définit la IListe des équipements obtenus. /// public IList LstEquipements { get { if (mLstEquipements == null) mLstEquipements = this.LoaderEquipement(mCodeRNE, mAnnee); return mLstEquipements; } set { mLstEquipements = value; } } /// /// Obtient ou définit le(s) secteur(s) de recrutement de l'établissement. /// public IList LstSecteurRecrutement { get { return mLstSecteurRecrutement; } set { mLstSecteurRecrutement = value; } } public string Adresse { get { return mAdresse; } set { mAdresse = value; } } public string ComplementAdresse { get { return mComplementAdresse; } set { mComplementAdresse = value; } } public string Ville { get { return mVille; } set { mVille = value; } } public Commentaires CommentaireGeneraux { get { if (mCommentairesGeneraux == null) mCommentairesGeneraux = this.LoaderCommentaires(mCodeRNE, mAnnee); return mCommentairesGeneraux; } set { mCommentairesGeneraux = value; } } public IList LstTravaux { get { if (mLstTravaux == null) mLstTravaux = this.LoaderProgTravaux(mCodeRNE, mAnnee); return mLstTravaux; } set { mLstTravaux = value; } } public Restauration Restaurer { get { if (mRestaurer == null) mRestaurer = this.LoaderRestauration(mCodeRNE, mAnnee); return mRestaurer; } set { mRestaurer = value; } } public IList LstBilingue { get { if (mBilingue == null) mBilingue = this.LoaderBilinguisme(mCodeRNE, mAnnee); return mBilingue; } set { mBilingue = value; } } public int CodePostal { get { return mCodePostal; } set { mCodePostal = value; } } /// /// sera utilisé pour l'affichage sur la première page. /// public string NomCollegePourPresentation { get { return mVille + " - Collège " + Nom; } } public string LienPhoto { get { return mLienPhoto; } set { mLienPhoto = value; } } public int NbrRemplacementsATC { get { return mNbrRemplacementsATC; } set { mNbrRemplacementsATC = value; } } public int NbrRemplacementsContratAide { get { return mNbrRemplacementsContratAide; } set { mNbrRemplacementsContratAide = value; } } #endregion #region autres méthodes /// /// retourne le principal de l'établissement /// public string Principal { get { string retour = string.Empty; foreach (Contact cont in Contacts) if (cont.Fonction.ToLower() == "principal") retour = cont.Civilite + " " + Utile.formatStringPrenom(cont.Prenom) + " " + cont.Nom.ToUpper(); return retour; } } /// /// retourne le gestionnaire de l'établissement /// public string Gestionnaire { get { string retour = string.Empty; foreach (Contact cont in Contacts) if (cont.Fonction.ToLower() == "gestionnaire") retour = cont.Civilite + " " + Utile.formatStringPrenom(cont.Prenom) + " " + cont.Nom.ToUpper(); return retour; } } /// /// retourne le conseiller general de l'établissement /// public string ConseillerGeneral { get { string retour = string.Empty; foreach (Contact cont in Contacts) if (cont.Fonction.ToLower() == "conseiller général") retour = cont.Civilite + " " + Utile.formatStringPrenom(cont.Prenom) + " " + cont.Nom.ToUpper(); return retour; } } /// /// retourne la phrase decrivant l'effectif de l'établissement /// public string Effectif { get { int nbrElevesReel = 0; //le dernier enregistrement de cette liste est l'effectif actuel. foreach (Effectif effectif in LstEffectif) if (effectif.TypeEffectif == "R") nbrElevesReel = effectif.EffectifTotal; string retour = nbrElevesReel + " élèves"; return retour; } } /// /// retourne la phrase concernant le(s) restructurations de l'établissement /// public string PhraseRestructuration { get { string retour = string.Empty; foreach (int anneeRestruct in LstRestructuration) { if (LstRestructuration.Count == 1) { retour = Convert.ToString(anneeRestruct); break; } else { if (retour == string.Empty) retour = "Plusieurs restructurations lourdes ont été effectuées, les années de celles-ci sont les suivantes : "; retour += "\n - " + anneeRestruct; } } if (retour == string.Empty) retour = "Néant"; return retour; } } /// /// retourne le commentaire concernant le(s) aménagement(s) particulier(s) de l'établissement /// public string CommentaireAmenagementParticulier { get { return CommentaireGeneraux == null ? string.Empty : CommentaireGeneraux.AmenagementsParticuliers; } } /// /// retourne le commentaire concernant la programmation des travaux de l'établissement /// public string CommentaireProgTravaux { get { return CommentaireGeneraux == null ? string.Empty : CommentaireGeneraux.ProgrammationTravaux; } } /// /// retourne le commentaire concernant le secteur de recrutement de l'établissement /// public string CommentaireSecteurRecrutement { get { return CommentaireGeneraux == null ? string.Empty : CommentaireGeneraux.SecteurRecrutement; } } /// /// retourne le commentaire concernant le graphique d'évolution des effectifs de l'établissement /// public string CommentaireGraphique { get { return CommentaireGeneraux == null ? string.Empty : CommentaireGeneraux.TableauEffectif; } } /// /// retourne le commentaire concernant les prévisions d'éffectifs ATC de l'établissement /// public string CommentairePrevisionEffectifATC { get { return CommentaireGeneraux == null ? string.Empty : CommentaireGeneraux.PrevisionEffectifATC; } } /// /// retourne la phrase concernant la programmation des travaux de l'établissement /// //public string PhraseProgTravaux //{ // get // { // string retour = string.Empty; // string type = string.Empty; // //la requete trie déja par ordre de type d'opération. // foreach (ProgTravaux prog in LstTravaux) // { // if (prog.TypeOperation == type) // { // retour += "\n\n" + prog.TypeOperation + " :"; // } // retour += "\n" + prog.Annee + " : " + prog.Libelle; // type = prog.TypeOperation; // } // if (retour == string.Empty) // retour = "néant"; // return retour; // } //} /// /// retourne la phrase concernant le secteur de recrutement de l'établissement /// public string PhraseSecteurRecrutement { get { string retour = string.Empty; int i=0; foreach (EtablissementRecrutement com in LstSecteurRecrutement) { if (i == 0) { retour = com.Libelle; i++; } else { retour += ", " + com.Libelle; } } if (retour == string.Empty) retour = "l'information n'est actuellement pas disponible"; return retour; } } /// /// retourne la phrase concernant les prévisions sur 5 ans de l'établissement /// public string PhrasePrevision5Ans { get { int nbrActuel = 0; int nbrPrev = 0; int nbrEvolution = 0; string retour; foreach (Effectif effectif in LstEffectif) { if (effectif.TypeEffectif =="P") nbrPrev = effectif.EffectifTotal; if (effectif.TypeEffectif == "R") nbrActuel = effectif.EffectifTotal; } nbrEvolution = nbrPrev - nbrActuel; if (nbrActuel == 0) { return "calcul impossible, nbrActuelle =0"; } double pourcentageEvol = (double) nbrEvolution * 100 / (double)nbrActuel; if (nbrEvolution < 0) { retour = string.Format("Diminution de {0} élèves, soit {1:##0.00}% sur les cinq prochaines années.", (nbrActuel - nbrPrev), pourcentageEvol); } else if (nbrEvolution == 0) { retour = "néant"; } else { retour = string.Format("Augmentation de {0} élèves, soit +{1:##0.00}% sur les cinq prochaines années.",nbrEvolution,pourcentageEvol); } return retour; } } /// /// retourne la phrase concernant le total d'ATC de l'établissement /// // public string PhraseTotalATC // { // get // { // int nbr = 0; // foreach (ATC adjoint in LstATC) // if (adjoint.ValeurETP < 1) // nbr++; // if (nbr != 0) // //return LstATC.Count + " agents , dont " + nbr + " à temps partiel."; // return LstATC.Count + " agents."; // else // return LstATC.Count + " agents."; // } // } /// /// retourne la phrase concernant la valeur ETP totale des ATC de l'établissement /// // public string PhraseValeurETP // { // get // { // double valeurReel = 0; // foreach (ATC adjoint in LstATC) // valeurReel += adjoint.ValeurETP; // string retour = "ETP réels : " + valeurReel + "\nEtp Barème : " + ValeurETPTheorique + "\nEcart : "; // double ecart = valeurReel - ValeurETPTheorique; // if (ecart >= 0) // retour += ecart; // else // retour += (ecart - ecart * 2); // return retour; // } // } /// /// retourne la phrase concernant le nombre de jours de formation des ATC de l'établissement /// // public string PhraseNombreJoursFormation // { // get // { // int valeur = 0; // foreach (ATC adjoint in LstATC) // valeur += adjoint.NbJoursFormation; // return valeur + " jours."; // } // } /// /// retourne la phrase concernant le(s) remplacement(s) de l'établissement /// /// public string PhraseRemplacements { get { if (NbrRemplacementsATC == 0) return "néant"; else if (NbrRemplacementsATC == 1) return "Le remplacement d'un agent à été assuré"; else return "Le remplacement de " + NbrRemplacementsATC + " à été assuré"; } } /// /// retourne la phrase concernant le total de contrat aidé /// public string PhraseTotalContratAide { get { int nbr = 0; foreach (ContratAide adjoint in LstContratAide) if (adjoint.ValeurETP < 1) nbr++; if (nbr != 0) //return LstATC.Count + " agents , dont " + nbr + " à temps partiel."; return LstContratAide.Count + " agents."; else return LstContratAide.Count + " agents."; } } /// /// retourne la phrase concernant la valeur ETP totale des ATC de l'établissement /// public string PhraseValeurETPContratAide { get { double valeurReel = 0; foreach (ContratAide adjoint in LstContratAide) valeurReel += adjoint.ValeurETP; string retour = "ETP réels : " + valeurReel + "\nEtp Barème : " + ValeurETPTheorique + "\nEcart : "; double ecart = valeurReel - ValeurETPTheorique; if (ecart >= 0) retour += ecart; else retour += (ecart - ecart * 2); return retour; } } /// /// retourne la phrase concernant le nombre de jours de formation des ATC de l'établissement /// // public string PhraseNombreJoursFormationContratAide // { // get // { // int valeur = 0; // foreach (ContratAide adjoint in LstContratAide) // valeur += adjoint.NbJoursFormation; // return valeur + " jours."; // } // } /// /// retourne la phrase concernant le(s) remplacement(s) de l'établissement /// // public string PhraseRemplacementsContratAide // { // get // { // if (NbrRemplacementsContratAide == 0) // return "néant"; // else if (NbrRemplacementsContratAide == 1) // return "Le remplacement d'un agent à été assuré"; // else // return "Le remplacement de " + NbrRemplacementsContratAide + " à été assuré"; // } // } public bool IsRestaurant { get { return mIsRestautant; } set { mIsRestautant = value; } } public bool IsInternat { get { return mIsInternat; } set { mIsInternat = value; } } public int EffectifTheorique { get { return mEffectifTheorique; } set { mEffectifTheorique = value; } } #endregion #region Constructeurs /// /// constructeur minimal d'établissement, sera utilisé au chargement de l'application. /// /// /// /// public Etablissement(string codeRNE, string nom, string ville) { this.mCodeRNE = codeRNE; this.mNom = nom; this.mVille = ville; } public Etablissement(string codeRNE, int annee, string nom, string typeEtablissement, int anneeConstruction, string telephone, string email, string fax, string nomProprietaire, string adresse, string complementAdresse, int codePostal, string ville, string lienPhoto, bool isRestaurant,bool isInternat,int effectifTheorique, dlgLoadActionEducative loaderActionEducative, dlgLoadClasseDecouverte loaderClasseDecouverte, dlgLoadATC loaderATC, dlgLoadContratAide loaderContratAide, dlgLoadBilinguisme loaderBilinguisme, dlgLoadCommentaires loaderCommentaires, dlgLoadContact loaderContact, dlgLoadDotation loaderDotation, dlgLoadEquipement loaderEquipement, dlgLoadInvestissement loaderInvestissement, dlgLoadMCG loaderMCG, dlgLoadLogement loaderLogement, dlgLoadProgTravaux loaderProgTravaux, dlgLoadProjetPilote loaderProjetPilote, dlgLoadRestauration loaderRestauration) { this.mCodeRNE = codeRNE; this.mAnnee = annee; this.mNom = nom; this.mTypeEtablissement = typeEtablissement; this.mAnneConstruction = anneeConstruction; this.mTelephone = telephone; this.mEmail = email; this.mFax = fax; this.mNomProprietaire = nomProprietaire; this.mAdresse = adresse; this.mComplementAdresse = complementAdresse; this.mVille = ville; this.mCodePostal = codePostal; this.mLienPhoto = lienPhoto; this.mIsRestautant = isRestaurant; this.mIsInternat = isInternat; this.mEffectifTheorique = effectifTheorique; this.LoaderActionEducative = loaderActionEducative; this.LoaderClasseDecouverte = loaderClasseDecouverte; this.LoaderATC = loaderATC; this.LoaderContratAide = loaderContratAide; this.LoaderBilinguisme = loaderBilinguisme; this.LoaderCommentaires = loaderCommentaires; this.LoaderContact = loaderContact; this.LoaderDotation = loaderDotation; this.LoaderEquipement = loaderEquipement; this.LoaderInvestissement = loaderInvestissement; this.LoaderMCG = loaderMCG; this.LoaderLogement = loaderLogement; this.LoaderProgTravaux = loaderProgTravaux; this.LoaderProjetPilote = loaderProjetPilote; this.LoaderRestauration = loaderRestauration; } public Etablissement() { } #endregion } }