using System; using System.Collections.Generic; using System.Text; namespace CG67.FicheCollege.Domaine { public delegate IList dlgLoadRestaurationExterne(string codeRNE, int annee); [Serializable] public class Restauration { private dlgLoadRestaurationExterne LoaderRestaurationExterne; private string mCodeRNE; private int mAnnee; /// /// Nombre total de rationnaire. /// private int mNbrPersonnes; /// /// Liste de restaurations externes, /// si cette liste à pour valeur null, c'est que l'établissement dispose d'une cantine /// sinon cette liste regroupera tous les types de restauration externes utilisés /// (télérestauration, hébergement, ...) /// private IList mLstRestaurationExterne; /// /// Obtient ou définit le nombre total de rationnaire. /// public int NbrPersonnes { get { return mNbrPersonnes; } set { mNbrPersonnes = value; } } /// /// Obtient ou définit la liste de restaurations externes. /// public IList LstRestaurationExterne { get { if (mLstRestaurationExterne == null) mLstRestaurationExterne = this.LoaderRestaurationExterne(mCodeRNE, mAnnee); return mLstRestaurationExterne; } set { mLstRestaurationExterne = value; } } public Restauration(int annee, string codeRNE, int nbrPersonnes, dlgLoadRestaurationExterne loaderRestaurationExterne) { this.mAnnee = annee; this.mNbrPersonnes = nbrPersonnes; this.mCodeRNE = codeRNE; this.LoaderRestaurationExterne = loaderRestaurationExterne; } public override string ToString() { string retour = NbrPersonnes + " rationnaires"; if (LstRestaurationExterne.Count == 0) retour += ". \nL'établissement dispose d'une restauration interne."; else { int nbrAide = 0; string retourAide = string.Empty; foreach (RestaurationExterne restaur in LstRestaurationExterne) { retourAide += "\n - " + restaur.NbrPersonnes + " " + restaur.TypeRestauration + " par l'établissement " + restaur.NomCollege + "."; nbrAide += restaur.NbrPersonnes; } retour += " : "; int difference = NbrPersonnes - nbrAide; if (difference != 0) retour += "\n - L'établissement ne dispose pas d'une restauration suffisante, de ce fait uniquement " + difference + " élèves sont réstaurés en interne."; retour += retourAide; } return retour; } } }