AnnuaireController.cs 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. using AppliWebANA.Models;
  2. using DAL;
  3. using System;
  4. using System.Collections.Generic;
  5. using System.Linq;
  6. using System.Web;
  7. using System.Web.Caching;
  8. using System.Web.Mvc;
  9. namespace AppliWebANA.Controllers {
  10. public class AnnuaireController : Controller {
  11. private AnnuaireEntities _DC = null;
  12. private AnnuaireEntities DC {
  13. get {
  14. if( _DC == null ) {
  15. _DC = new AnnuaireEntities();
  16. _DC.Configuration.LazyLoadingEnabled = false;
  17. }
  18. return _DC;
  19. }
  20. }
  21. public ActionResult Index() {
  22. ViewBag.Titres = Utilitaires.Titres;
  23. return View();
  24. }
  25. public ActionResult Rechercher( Personne filtre, short? titreId ) {
  26. string clé = Request.Url.Query.Replace( " ", string.Empty ).ToUpper();
  27. var resultats = (IEnumerable<Personne>)HttpContext.Cache[clé];
  28. if( resultats == null ) {
  29. var requete = DC.Personnes.AsQueryable();
  30. if( titreId.HasValue )
  31. requete = requete.Where( p => p.TitreId == titreId.Value );
  32. if( !string.IsNullOrWhiteSpace( filtre.Nom ) ) {
  33. filtre.Nom = filtre.Nom.Trim();
  34. requete = requete.Where( p => p.Nom.Contains( filtre.Nom ) );
  35. }
  36. if( !string.IsNullOrWhiteSpace( filtre.Prenom ) ) {
  37. filtre.Prenom = filtre.Prenom.Trim();
  38. requete = requete.Where( p => p.Prenom.Contains( filtre.Prenom ) );
  39. }
  40. if( !string.IsNullOrWhiteSpace( filtre.Telephone ) ) {
  41. filtre.Telephone = filtre.Telephone.Trim();
  42. requete = requete.Where( p => p.Telephone.Contains( filtre.Telephone ) );
  43. }
  44. resultats = requete.ToList();
  45. HttpContext.Cache.Add( clé, resultats, null, DateTime.Now.AddMinutes(10), Cache.NoSlidingExpiration, CacheItemPriority.Default, null );
  46. ViewBag.Message = "Requête exécutée";
  47. }
  48. else
  49. ViewBag.Message = "Données en cache";
  50. ViewBag.personnes = resultats;
  51. ViewBag.Titres = Utilitaires.Titres;
  52. return View("Index");
  53. }
  54. protected override void Dispose( bool disposing ) {
  55. if( _DC != null ) {
  56. _DC.Dispose();
  57. }
  58. base.Dispose( disposing );
  59. }
  60. }
  61. }