using AppliWebANA.Models; using DAL; using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Caching; using System.Web.Mvc; namespace AppliWebANA.Controllers { public class AnnuaireController : Controller { private AnnuaireEntities _DC = null; private AnnuaireEntities DC { get { if( _DC == null ) { _DC = new AnnuaireEntities(); _DC.Configuration.LazyLoadingEnabled = false; } return _DC; } } public ActionResult Index() { ViewBag.Titres = Utilitaires.Titres; return View(); } public ActionResult Rechercher( Personne filtre, short? titreId ) { string clé = Request.Url.Query.Replace( " ", string.Empty ).ToUpper(); var resultats = (IEnumerable)HttpContext.Cache[clé]; if( resultats == null ) { var requete = DC.Personnes.AsQueryable(); if( titreId.HasValue ) requete = requete.Where( p => p.TitreId == titreId.Value ); if( !string.IsNullOrWhiteSpace( filtre.Nom ) ) { filtre.Nom = filtre.Nom.Trim(); requete = requete.Where( p => p.Nom.Contains( filtre.Nom ) ); } if( !string.IsNullOrWhiteSpace( filtre.Prenom ) ) { filtre.Prenom = filtre.Prenom.Trim(); requete = requete.Where( p => p.Prenom.Contains( filtre.Prenom ) ); } if( !string.IsNullOrWhiteSpace( filtre.Telephone ) ) { filtre.Telephone = filtre.Telephone.Trim(); requete = requete.Where( p => p.Telephone.Contains( filtre.Telephone ) ); } resultats = requete.ToList(); HttpContext.Cache.Add( clé, resultats, null, DateTime.Now.AddMinutes(10), Cache.NoSlidingExpiration, CacheItemPriority.Default, null ); ViewBag.Message = "Requête exécutée"; } else ViewBag.Message = "Données en cache"; ViewBag.personnes = resultats; ViewBag.Titres = Utilitaires.Titres; return View("Index"); } protected override void Dispose( bool disposing ) { if( _DC != null ) { _DC.Dispose(); } base.Dispose( disposing ); } } }