/// <summary>
 /// Créez un nouvel objet User.
 /// </summary>
 /// <param name="userID">Valeur initiale de la propriété UserID.</param>
 /// <param name="login">Valeur initiale de la propriété Login.</param>
 /// <param name="password">Valeur initiale de la propriété Password.</param>
 /// <param name="mail">Valeur initiale de la propriété Mail.</param>
 /// <param name="level">Valeur initiale de la propriété Level.</param>
 public static User CreateUser(global::System.Int32 userID, global::System.String login, global::System.String password, global::System.String mail, global::System.Int32 level)
 {
     User user = new User();
     user.UserID = userID;
     user.Login = login;
     user.Password = password;
     user.Mail = mail;
     user.Level = level;
     return user;
 }
 /// <summary>
 /// Méthode déconseillée pour ajouter un nouvel objet à l'EntitySet Users. Utilisez la méthode .Add de la propriété ObjectSet&lt;T&gt; associée à la place.
 /// </summary>
 public void AddToUsers(User user)
 {
     base.AddObject("Users", user);
 }
 //-------------------------------------------------------------------------------------------//
 //--------------------------------------- USERS REQUEST-------------------------------------//
 //-------------------------------------------------------------------------------------------//
 public void Add(User user)
 {
     MsiRepo.Users.AddObject(user);
 }
 public void Delete(User user)
 {
     MsiRepo.Users.DeleteObject(user);
 }
        public ActionResult ChoiceUser(User user)
        {
            if (user.UserID == -1)
            {
                ModelState.AddModelError("ErrorChoice", "Vous devez choisir un utilisateur");
                return View();
            }

            int idUser = user.UserID;
            return RedirectToAction("EditUser", new { id = idUser });
        }
 public void Update(User user)
 {
     MsiRepo.Users.Attach(user);
     MsiRepo.ObjectStateManager.ChangeObjectState(user, EntityState.Modified);
 }
        public ActionResult ReinitiatePassword(User user)
        {
            PasswordViewModel pass = new PasswordViewModel();
            pass.UserID = user.UserID;
            pass.Login = user.Login;

            return View(pass);
        }
        public ActionResult EditUser(User user)
        {
            if (ModelState.IsValid)
            {
                try
                {
                    MsiRepoUser.Update(user);
                    MsiRepoUser.Save();

                    return View("EditUserSuccess");
                }
                catch
                {
                    return View(user);
                }

            }
            return View(user);
        }
        public ActionResult DeleteUser(int id, User user)
        {
            try
            {
                MsiRepoUser.Delete(MsiRepoUser.GetUser(id));
                MsiRepoUser.Save();

                return View("DeleteUserSuccess");
            }
            catch
            {
                ModelState.AddModelError("errorModel", "Nous somme désolé votre ticket n'a pas pu être supprimer");
                return View();
            }
        }
        public ActionResult CreateUser(User user)
        {
            if (user.Level == -1)
            {
                ModelState.AddModelError("errorRole", "Veuillez choisir un role si'l vous plait");
                return View();
            }

            if (ModelState.IsValid)
            {
                User mTest = MsiRepoUser.GetUserByMail(user.Mail);

                if (mTest != null)
                {
                    if (user.Mail == mTest.Mail)
                    {
                        ModelState.AddModelError("errorModel", "Un utilisateur utilisant cette adresse email existe déja");
                        return View();
                    }
                }
                try
                {
                    MD5 md5Hash = MD5.Create();
                    user.Password = MD5Hash.GetMd5Hash(md5Hash, user.Password);
                    MsiRepoUser.Add(user);
                    MsiRepoUser.Save();
                    return View("CreateUserSuccess");
                }
                catch
                {
                    ModelState.AddModelError("errorModel", "Nous somme désolé votre ticket n'a pas pu être créer");
                    return View();
                }
            }
            return View();
        }
 public ActionResult ChoiceUserToDelete(User user)
 {
     int idUser = user.UserID;
     return RedirectToAction("DeleteUser", new { id = idUser });
 }