FicheCollege.aspx.cs 3.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. using System;
  2. using System.Data;
  3. using System.Data.OleDb;
  4. using System.Configuration;
  5. using System.Collections;
  6. using System.IO;
  7. using System.Web;
  8. using System.Web.Security;
  9. using System.Web.UI;
  10. using System.Web.UI.WebControls;
  11. using System.Web.UI.WebControls.WebParts;
  12. using System.Web.UI.HtmlControls;
  13. using System.Xml;
  14. using CG67.FicheCollege.Service;
  15. using CG67.FicheCollege.Domaine;
  16. using System.Collections.Generic;
  17. using System.DirectoryServices;
  18. using System.Linq;
  19. using System.Text.RegularExpressions;
  20. //using System.DirectoryServices.AccountManagement;
  21. namespace CG67.FicheCollege
  22. {
  23. public partial class FicheCollege : System.Web.UI.Page
  24. {
  25. public string user;
  26. public string nomCollege;
  27. protected void Page_Load(object sender, EventArgs e)
  28. {
  29. //Intialisation des paramètres
  30. //l'année en cours est déclarée dans le fichier de configuration
  31. int annee = int.Parse(ConfigurationManager.AppSettings["AnneeEnCours"]);
  32. HttpContext.Current.Session["Annee"] = annee;
  33. HttpContext.Current.Session["AnneeMoins1"] = annee - 1;
  34. HttpContext.Current.Session["RNE"] = Request["RNE"];
  35. string domain = "DC=cg67,DC=fr";
  36. //Détermination de la mission ou du statut utilisateur pour les statistiques
  37. using (var rootEntry = new DirectoryEntry("LDAP://CG67/" + domain, null, null, AuthenticationTypes.Secure))
  38. {
  39. using (var directorySearcher = new DirectorySearcher(rootEntry, String.Format("(sAMAccountName={0})", HttpContext.Current.User.Identity.Name.Replace("CG67\\",""))))
  40. {
  41. var searchResult = directorySearcher.FindOne();
  42. if (searchResult != null)
  43. {
  44. using (var userEntry = searchResult.GetDirectoryEntry())
  45. {
  46. string cnUser = userEntry.Properties["distinguishedName"].Value.ToString();
  47. List<string> Groups = new List<string>();
  48. Groups = cnUser.Split(new[] {"," } , StringSplitOptions.None).ToList();
  49. var rx = new Regex("OU=[AEFGHIJKLMP]{1}\\-[A-Z]{3,5}", RegexOptions.IgnoreCase);
  50. user = "AUTRE";
  51. var mission = Groups.Where(x => rx.IsMatch(x)).FirstOrDefault();
  52. if (!string.IsNullOrEmpty(mission)) user = mission.Replace("OU=","");
  53. if (user == "P-CAB")
  54. {
  55. var elu = Groups.Where(x => x.Contains("OU=P2-ELUS")).FirstOrDefault();
  56. if (!string.IsNullOrEmpty(elu)) user = elu.Replace("OU=", "");
  57. }
  58. }
  59. }
  60. }
  61. }
  62. //Traitement
  63. XmlDocument entete = new XmlDocument();
  64. entete.Load(Server.MapPath(@"~/xml/entete.xml"));
  65. try
  66. {
  67. //modif car si code rne null provoque une erreur
  68. XmlNode xmlFicheCollege = ServiceFiche.GetFicheCollege(Session["RNE"].ToString(), int.Parse(Session["annee"].ToString()));
  69. //Enregistrement du nom du collège pour les statistiques
  70. nomCollege = xmlFicheCollege.SelectSingleNode("college/Etablissement/NomCollegePourPresentation").InnerText;
  71. //Affichage des données
  72. this.Title = nomCollege;
  73. xmlFicheCollege.SelectSingleNode("college").InnerXml += entete.DocumentElement.OuterXml;
  74. this.Xml1.DocumentContent = xmlFicheCollege.OuterXml;
  75. this.DataBind();
  76. }
  77. catch (NullReferenceException nre)
  78. {
  79. Console.WriteLine("Erreur de pointeur : null", nre.Message);
  80. }
  81. }
  82. }
  83. }