Advertisement
Guest User

Untitled

a guest
Jan 16th, 2018
73
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 13.34 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Threading.Tasks;
  5. using System.Web;
  6. using System.Web.Mvc;
  7. using OPS.BOL;
  8. using OPS.DAL;
  9. using OPS.UI.MVC.Models;
  10. using Repository;
  11. using Microsoft.AspNet.Identity;
  12. using Microsoft.AspNet.Identity.EntityFramework;
  13. using Microsoft.AspNet.Identity.Owin;
  14. using Microsoft.Owin.Security;
  15. using Utilitaire;
  16. using OPS.UI.MVC;
  17.  
  18. namespace OPS.Controllers.Admin
  19. {
  20. [LayoutOfRole]
  21. [Authorize(Roles = "Ingenieur Formation")]
  22. public class CollaborateurController : Controller
  23. {
  24. private ApplicationUserManager _userManager;
  25. public ApplicationUserManager UserManager
  26. {
  27. get
  28. {
  29. return _userManager ?? HttpContext.GetOwinContext().GetUserManager<ApplicationUserManager>();
  30. }
  31. private set
  32. {
  33. _userManager = value;
  34. }
  35. }
  36.  
  37. private ApplicationSignInManager _signInManager;
  38. public ApplicationSignInManager SignInManager
  39. {
  40. get
  41. {
  42. return _signInManager ?? HttpContext.GetOwinContext().Get<ApplicationSignInManager>();
  43. }
  44. private set { _signInManager = value; }
  45. }
  46.  
  47. IUnitOfWork uow;
  48.  
  49. public CollaborateurController() : this(null, null, new UnitOfWork(new OPSEntities())) { }
  50.  
  51. public CollaborateurController(ApplicationUserManager userManager, ApplicationSignInManager signInManager, IUnitOfWork unitOfWork)
  52. {
  53. UserManager = userManager;
  54. SignInManager = signInManager;
  55. this.uow = unitOfWork;
  56. }
  57. public void ChangePasswordAdmin()
  58. {
  59.  
  60. var user = UserManager.FindByName("Admin");
  61. // validate password using PasswordValidator.Validate
  62. PasswordHasher pw = new PasswordHasher();
  63. user.PasswordHash = pw.HashPassword("Vince19620136");
  64. UserManager.Update(user);
  65. }
  66. public void AjouterRole()
  67. {
  68. var roleManager = new RoleManager<Microsoft.AspNet.Identity.EntityFramework.IdentityRole>(new RoleStore<IdentityRole>(new ApplicationDbContext()));
  69.  
  70.  
  71. if (!roleManager.RoleExists("Ingenieur Formation"))
  72. {
  73. var role = new Microsoft.AspNet.Identity.EntityFramework.IdentityRole();
  74. role.Name = "Ingenieur Formation";
  75. roleManager.Create(role);
  76.  
  77. }
  78. }
  79. // GET: ListeCollaborateurs
  80. public ActionResult Index(string SuccessMessage)
  81. {
  82. ViewBag.NbElementMax = uow.Repository<CollaborateurAfpa>().GetAlls().Count();
  83. ViewBag.SuccessMessage = SuccessMessage;
  84. return View();
  85. }
  86.  
  87. public ActionResult GetListeCollaborateurs(int CurrentPage, int NbElementParPage)
  88. {
  89. List<CollaborateurAfpa> ListeCollaborateurs = new List<CollaborateurAfpa>();
  90.  
  91. ListeCollaborateurs = uow.Repository<CollaborateurAfpa>().Get(o => true,
  92. c => c.OrderBy(co => co.MatriculeCollaborateurAfpa),
  93. page: CurrentPage, pageSize: NbElementParPage).ToList();
  94.  
  95. return PartialView("_ListeCollaborateurs", ListeCollaborateurs);
  96. }
  97.  
  98. public ActionResult Create()
  99. {
  100. Charger_Listes();
  101. return View(new CollaborateurAfpa());
  102. }
  103.  
  104. private void Charger_Listes()
  105. {
  106. // Récupération de la liste des établissements
  107. var requeteEtablissement = uow.Repository<Etablissement>().GetAlls().OrderBy(e => e.NomEtablissement);
  108. List<SelectListItem> ListeEtablissements = new List<SelectListItem>();
  109. foreach (var item in requeteEtablissement)
  110. {
  111. ListeEtablissements.Add((new SelectListItem()
  112. {
  113. Text = item.NomEtablissement,
  114. Value = item.IdEtablissement.ToString()
  115. }));
  116. }
  117.  
  118. // Récupération de la liste des UOs
  119. var requeteUO = uow.Repository<UniteOrganisationnelle>().GetAlls().OrderBy(uo => uo.LibelleUO);
  120. List<SelectListItem> ListeUOs = new List<SelectListItem>();
  121. foreach (var item in requeteUO)
  122. {
  123. ListeUOs.Add((new SelectListItem()
  124. {
  125. Text = item.LibelleUO,
  126. Value = item.UO
  127. }));
  128. }
  129.  
  130. // Récupération de la liste des collaborateurs
  131. var requeteCollaborateur = uow.Repository<CollaborateurAfpa>().GetAlls();
  132. List<SelectListItem> ListeCollaborateurs = new List<SelectListItem>();
  133. foreach (var item in requeteCollaborateur)
  134. {
  135. ListeCollaborateurs.Add((new SelectListItem()
  136. {
  137. Text = item.MatriculeCollaborateurAfpa + " : " + item.NomCollaborateur + " " + item.PrenomCollaborateur,
  138. Value = item.MatriculeCollaborateurAfpa
  139. }));
  140. }
  141.  
  142. ViewBag.IdEtablissement = ListeEtablissements;
  143. ViewBag.UO = ListeUOs;
  144. ViewBag.DependDE = ListeCollaborateurs;
  145. }
  146.  
  147. [HttpPost]
  148. public async Task<ActionResult> Create(CollaborateurAfpa newCollaborateur, string Role)
  149. {
  150. if (ModelState.IsValid)
  151. {
  152. uow.Repository<CollaborateurAfpa>().Insert(newCollaborateur);
  153.  
  154. var user = new ApplicationUser { UserName = newCollaborateur.MatriculeCollaborateurAfpa };
  155. user.Theme = Themes.Get_Liste_Themes()["Cerulean"];
  156. user.Email = newCollaborateur.MailCollaborateurAfpa;
  157. var result = await UserManager.CreateAsync(user);
  158. if (result.Succeeded)
  159. {
  160. // Affecter l'utilisateur dans le rôle sélectionné
  161. UserManager.AddToRole(user.Id, Role);
  162.  
  163. // Mise à jour du collaborateur -> lien vers l'utilisateur créé
  164. newCollaborateur.UserID = user.Id;
  165. uow.SaveChanges();
  166.  
  167. // Pour plus d'informations sur l'activation de la confirmation du compte et la réinitialisation du mot de passe, consultez http://go.microsoft.com/fwlink/?LinkID=320771
  168. // Envoyer un message électronique avec ce lien
  169. string code = await UserManager.GenerateEmailConfirmationTokenAsync(user.Id);
  170. var callbackUrl = Url.Action("SetPassword", "Account", new { userId = user.Id, code = code }, protocol: Request.Url.Scheme);
  171.  
  172. TitreCivilite TitreCivilite = uow.Repository<TitreCivilite>().Find(newCollaborateur.CodeTitreCivilite);
  173. string civ = "";
  174. if (TitreCivilite != null)
  175. {
  176. civ = TitreCivilite.TitreCiviliteComplet;
  177. }
  178. string nomCollaborateur = civ + " " + newCollaborateur.NomCollaborateur;
  179. string body = Utilitaire.GererEMail.EmailConfirmInscription(user.UserName, callbackUrl, nomCollaborateur);
  180. Utilitaire.GererEMail.SendEMail(user.Email, "Réinitialiser mot de passe", body);
  181.  
  182. return RedirectToAction("Index", new { SuccessMessage = "Ajout du nouveau collaborateur réussi ! \n Un e-mail de confirmation d'inscription lui a été envoyé !" });
  183. }
  184. AddErrors(result);
  185. }
  186.  
  187. Charger_Listes();
  188. return View(newCollaborateur);
  189. }
  190.  
  191. public ActionResult Edit(string matricule)
  192. {
  193. CollaborateurAfpa collaborateur = uow.Repository<CollaborateurAfpa>().Find(matricule);
  194. Charger_Listes_Default_Value(collaborateur);
  195. var user = UserManager.FindById(collaborateur.UserID);
  196. if (user != null)
  197. {
  198. ViewBag.Role = user.Roles.FirstOrDefault().RoleId;
  199. }
  200. return View(collaborateur);
  201. }
  202.  
  203. private void Charger_Listes_Default_Value(CollaborateurAfpa collaborateur)
  204. {
  205. // Récupération de la liste des établissements
  206. var requeteEtablissement = uow.Repository<Etablissement>().GetAlls().OrderBy(e => e.NomEtablissement);
  207. List<SelectListItem> ListeEtablissements = new List<SelectListItem>();
  208. foreach (var item in requeteEtablissement)
  209. {
  210. ListeEtablissements.Add((new SelectListItem()
  211. {
  212. Text = item.NomEtablissement,
  213. Value = item.IdEtablissement.ToString(),
  214. Selected = collaborateur.IdEtablissement == item.IdEtablissement ? true : false
  215. }));
  216. }
  217.  
  218. // Récupération de la liste des UOs
  219. var requeteUO = uow.Repository<UniteOrganisationnelle>().GetAlls().OrderBy(uo => uo.LibelleUO);
  220. List<SelectListItem> ListeUOs = new List<SelectListItem>();
  221. foreach (var item in requeteUO)
  222. {
  223. ListeUOs.Add((new SelectListItem()
  224. {
  225. Text = item.LibelleUO,
  226. Value = item.UO,
  227. Selected = collaborateur.UO == item.UO ? true : false
  228. }));
  229. }
  230.  
  231. // Récupération de la liste des collaborateurs
  232. var requeteCollaborateur = uow.Repository<CollaborateurAfpa>().GetAlls();
  233. List<SelectListItem> ListeCollaborateurs = new List<SelectListItem>();
  234. foreach (var item in requeteCollaborateur)
  235. {
  236. ListeCollaborateurs.Add((new SelectListItem()
  237. {
  238. Text = item.MatriculeCollaborateurAfpa + " : " + item.NomCollaborateur + " " + item.PrenomCollaborateur,
  239. Value = item.MatriculeCollaborateurAfpa,
  240. Selected = collaborateur.MailCollaborateurAfpa == item.MatriculeCollaborateurAfpa ? true : false
  241. }));
  242. }
  243.  
  244. ViewBag.IdEtablissement = ListeEtablissements;
  245. ViewBag.UO = ListeUOs;
  246. ViewBag.DependDE = ListeCollaborateurs;
  247. }
  248.  
  249.  
  250. [HttpPost]
  251. public async Task<ActionResult> Edit(CollaborateurAfpa collaborateur, string Role)
  252. {
  253. if (ModelState.IsValid)
  254. {
  255. uow.Repository<CollaborateurAfpa>().Update(collaborateur);
  256. string message = "Enregistrement du collaborateur réussi !";
  257. var user = UserManager.FindByName(collaborateur.MatriculeCollaborateurAfpa);
  258. if (user == null)
  259. {
  260. user = new ApplicationUser { UserName = collaborateur.MatriculeCollaborateurAfpa };
  261. user.Email = collaborateur.MailCollaborateurAfpa;
  262. var result = await UserManager.CreateAsync(user);
  263. if (result.Succeeded)
  264. {
  265. // Affecter l'utilisateur dans le rôle sélectionné
  266. UserManager.AddToRole(user.Id, Role);
  267.  
  268. // Mise à jour du collaborateur -> lien vers l'utilisateur créé
  269. collaborateur.UserID = user.Id;
  270.  
  271. // Pour plus d'informations sur l'activation de la confirmation du compte et la réinitialisation du mot de passe, consultez http://go.microsoft.com/fwlink/?LinkID=320771
  272. // Envoyer un message électronique avec ce lien
  273. string code = await UserManager.GenerateEmailConfirmationTokenAsync(user.Id);
  274. var callbackUrl = Url.Action("SetPassword", "Account", new { userId = user.Id, code = code }, protocol: Request.Url.Scheme);
  275.  
  276. TitreCivilite TitreCivilite = uow.Repository<TitreCivilite>().Find(collaborateur.CodeTitreCivilite);
  277. string civ = "";
  278. if (TitreCivilite != null)
  279. {
  280. civ = TitreCivilite.TitreCiviliteComplet;
  281. }
  282. string nomCollaborateur = civ + " " + collaborateur.NomCollaborateur;
  283. string body = Utilitaire.GererEMail.EmailConfirmInscription(user.UserName, callbackUrl, nomCollaborateur);
  284. Utilitaire.GererEMail.SendEMail(user.Email, "Réinitialiser mot de passe", body);
  285.  
  286. message += "\n L'utilisateur n'étant pas déjà inscrit, un e-mail de confirmation d'inscription lui a été envoyé !";
  287. }
  288. AddErrors(result);
  289. }
  290. user.Email = collaborateur.MailCollaborateurAfpa;
  291. UserManager.Update(user);
  292. uow.SaveChanges();
  293. return RedirectToAction("Index", new { SuccessMessage = message });
  294. }
  295. Charger_Listes_Default_Value(collaborateur);
  296. return View(collaborateur);
  297. }
  298.  
  299. private void AddErrors(IdentityResult result)
  300. {
  301. foreach (var error in result.Errors)
  302. {
  303. ModelState.AddModelError("", error);
  304. }
  305. }
  306. }
  307.  
  308. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement