using CD67.FicheCollege.Entity; using CD67.FicheCollege.Factory; using CD67.FicheCollege.MVC.Internal; using System.Collections.Generic; using System.Web.Mvc; namespace CD67.FicheCollege.MVC.Models { // Wrapper du modele qui permet d'emmener des informations supplementaires avec celui-ci. public abstract class TopModel { internal object _Obj; public abstract string Annee_Lib { get; } // (Facultatif) Mode d'accès à la page // Defaut: Lecture public ModeAcces Acces { get; set; } // (Facultatif) Permet d'emporter d'éventuelles données complémentaires // comme les listes qui serviront entre autre à peupler les listes déroulantes. public Dictionary Bag { get; set; } = new Dictionary(); // Utilisateur courant public UtilisateurConnecte User = CD67.FicheCollege.MVC.Internal.UtilisateurConnecteFactory.getUtilisateurConnecte(); // *************************** // Constructeur de base public TopModel(object model, ModeAcces acces = ModeAcces.Lecture, Dictionary bag = null) { _Obj = model; Acces = acces; if (bag != null) Bag = bag; } } public class AnneeViewModel : TopModel { public AnneeViewModel(object model, ModeAcces acces = ModeAcces.Lecture, Dictionary bag = null) : base(model, acces, bag) { } public Annee Obj { get { return (_Obj as Annee); } } public override string Annee_Lib { get { return Obj.Libelle; } } } public class CollegeViewModel : TopModel { private Entities db = new Entities(); public SelectList Sel_TypesCollege; public SelectList Sel_CodesPostaux; public CollegeViewModel(object model, ModeAcces acces = ModeAcces.Lecture, Dictionary bag = null) : base(model, acces, bag) { if (acces == ModeAcces.Creation | acces == ModeAcces.Modification) { TypeCollegeFactory fact = new TypeCollegeFactory(db); Sel_TypesCollege = new SelectList(fact.getAll(), "Id", "Libelle", Obj.TypeCollege_Id); Sel_CodesPostaux = new SelectList(Referentiel.GetCodesPostaux(Obj.Commune_Insee), Obj.Code_Postal); } } public College Obj { get { return (_Obj as College); } } public override string Annee_Lib { get { return Obj.Annee.Libelle; } } } }