AnnuaireController.cs 3.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  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. [Authorize]
  11. public class AnnuaireController : Controller {
  12. private AnnuaireEntities _DC = null;
  13. private AnnuaireEntities DC {
  14. get {
  15. if( _DC == null ) {
  16. _DC = new AnnuaireEntities();
  17. _DC.Configuration.LazyLoadingEnabled = false;
  18. }
  19. return _DC;
  20. }
  21. }
  22. public ActionResult Index() {
  23. ViewBag.Titres = Utilitaires.Titres;
  24. return View();
  25. }
  26. public ActionResult Rechercher( Personne filtre, short? titreId ) {
  27. string clé = Request.Url.Query.Replace( " ", string.Empty ).ToUpper();
  28. var resultats = (IEnumerable<Personne>)HttpContext.Cache[clé];
  29. if( resultats == null ) {
  30. IQueryable<Personne> requete = DC.Personnes.AsNoTracking();
  31. if( titreId.HasValue )
  32. requete = requete.Where( p => p.TitreId == titreId.Value );
  33. if( !string.IsNullOrWhiteSpace( filtre.Nom ) ) {
  34. filtre.Nom = filtre.Nom.Trim();
  35. requete = requete.Where( p => p.Nom.Contains( filtre.Nom ) );
  36. }
  37. if( !string.IsNullOrWhiteSpace( filtre.Prenom ) ) {
  38. filtre.Prenom = filtre.Prenom.Trim();
  39. requete = requete.Where( p => p.Prenom.Contains( filtre.Prenom ) );
  40. }
  41. if( !string.IsNullOrWhiteSpace( filtre.Telephone ) ) {
  42. filtre.Telephone = filtre.Telephone.Trim();
  43. requete = requete.Where( p => p.Telephone.Contains( filtre.Telephone ) );
  44. }
  45. resultats = requete.ToList();
  46. HttpContext.Cache.Add( clé, resultats, null, DateTime.Now.AddMinutes( 10 ), Cache.NoSlidingExpiration, CacheItemPriority.Default, null );
  47. ViewBag.Message = "Requête exécutée";
  48. }
  49. else
  50. ViewBag.Message = "Données en cache";
  51. ViewBag.personnes = resultats;
  52. ViewBag.Titres = Utilitaires.Titres;
  53. return View( "Index" );
  54. }
  55. public PartialViewResult Edition( Guid id ) {
  56. if( Request.Form.AllKeys.Contains( "Edit" ) ) { // Bt pour passer une ligne en mode édition
  57. var personne = DC.Personnes.First( p => p.Id == id );
  58. ViewBag.Titres = Utilitaires.Titres.Values;
  59. return PartialView( "LigneEnEdition", personne );
  60. }
  61. else if( Request.Form.AllKeys.Contains( "Cancel" ) ) {
  62. var personne = DC.Personnes.First( p => p.Id == id );
  63. ViewBag.Titres = Utilitaires.Titres;
  64. return PartialView( "LigneEnLecture", personne );
  65. }
  66. else if( Request.Form.AllKeys.Contains( "Update" ) ) {
  67. Personne maj = new Personne();
  68. if( TryUpdateModel( maj ) ) {
  69. DC.Entry( maj ).State = System.Data.Entity.EntityState.Modified;
  70. DC.SaveChanges();
  71. ViewBag.Titres = Utilitaires.Titres;
  72. return PartialView( "LigneEnLecture", maj );
  73. }
  74. else {
  75. ViewBag.Titres = Utilitaires.Titres.Values;
  76. return PartialView( "LigneEnEdition", maj );
  77. }
  78. }
  79. throw new ArgumentException( "Hein ? Kéchécha ?" );
  80. }
  81. protected override void Dispose( bool disposing ) {
  82. if( _DC != null ) {
  83. _DC.Dispose();
  84. }
  85. base.Dispose( disposing );
  86. }
  87. }
  88. }