public ActionResult Edit(UserPoco Usr,bool CaptchaValid)
        {
            if (!CaptchaValid)
            {
                ModelState.AddModelError("","Le Captcha n'est pas valide");
            }
            else if (ModelState.IsValid)
            {

                USER user = (USER)HttpContext.Session["USER"];
                //Récupération des clès étrangères et primaires
                Usr.USER.Id = user.Id;
                Usr.USER.Fk_Roles = 1;
                Usr.USER.Fk_Adress = user.Fk_Adress;
                Usr.ADRESS.Id = user.Fk_Adress;
                //Modification des données du formulaire
                Dbcontext.Entry(Usr.ADRESS).State = EntityState.Modified;
                Dbcontext.Entry(Usr.USER).State = EntityState.Modified;

                if (Dbcontext.SaveChanges() > 0)
                {
                    FormsAuthentication.SignOut();
                    var Utilisateur = Dbcontext.USERS.Include("ROLE").
                              Include("RESIDENCES").Include("RESIDENCES.ADRESS")
                              .Include("RESIDENCES.ADRESS.CITY")
                              .Where(u => u.Id == user.Id).FirstOrDefault();
                    HttpContext.Session["USER"] = Utilisateur;

                    FormsAuthentication.SetAuthCookie(Usr.USER.Email, false);
                    return RedirectToAction("Index");
                }
                else
                {
                    ModelState.AddModelError("", "Erreur: Impossible d'effectuer les changement !");
                    //Préparation de la vue

                }
            }

                ViewBag.City = new SelectList(Dbcontext.CITIES, "Id", "Name");
                List<SelectListItem> ListGenre = new List<SelectListItem>();
                ListGenre.Add(new SelectListItem { Text = "Masculin", Value = "true", Selected = true });
                ListGenre.Add(new SelectListItem { Text = "Féminin", Value = "false" });

                ViewBag.USER_Sexe = ListGenre;
                return View(Usr);
        }
        public ActionResult Create(UserPoco Usr,bool CaptchaValid)
        {
            if (!CaptchaValid)
            {
                ModelState.AddModelError("", "Le captcha est invalide");

            }
            else
            {

                if (ModelState.IsValid)
                {
                    if (Usr != null)
                        {

                            var resultAdr = Dbcontext.setAdress(Usr.ADRESS.StreetNumber,
                                Usr.ADRESS.StreetName, Usr.ADRESS.PoBox, Usr.ADRESS.Fk_Cities)
                                .FirstOrDefault();
                            if (resultAdr != 0)
                            {

                                var resultUsr = Dbcontext.setUser(Usr.USER.FirstName,
                                    Usr.USER.LastName, Usr.USER.BirthDay, Usr.USER.Phone, Usr.USER.Sexe,
                                    Usr.USER.Password, Usr.USER.Email, 1, Convert.ToInt32(resultAdr))
                                    .FirstOrDefault();
                                if (resultUsr != 0)
                                {
                                    var resultResidence = Dbcontext.setResidence(DateTime.Now,
                                        Convert.ToInt32(resultUsr), Convert.ToInt32(resultAdr)).FirstOrDefault();
                                    if (resultResidence != 0)
                                    {
                                        int IDUser = Convert.ToInt32(resultUsr);
                                        var Utilisateur = Dbcontext.USERS.Include("ROLE").
                                   Include("RESIDENCES").Include("RESIDENCES.ADRESS")
                                   .Include("RESIDENCES.ADRESS.CITY")
                                   .Where(u => u.Id == IDUser).FirstOrDefault();
                                        HttpContext.Session["USER"] = Utilisateur;
                                        FormsAuthentication.SetAuthCookie(Usr.USER.Email, false);
                                        return RedirectToAction("Index");

                                    }
                                    else { ModelState.AddModelError("", "Erreur: Prob BD:RESIDENCE"); }
                                }
                                else { ModelState.AddModelError("", "Erreur: Prob BD:USER"); }

                            }
                            else { ModelState.AddModelError("", "Erreur: Prob BD:ADRESS"); }

                        }
                        else { ModelState.AddModelError("", "Erreur: Les informations sont incorrectes"); }

                    }
                    else
                    {
                        ModelState.AddModelError("", "Erreur: Le modèle n'est pas valide");

                    }
                  }

                    ViewBag.City = new SelectList(Dbcontext.CITIES, "Id", "Name");

                    List<SelectListItem> ListGenre = new List<SelectListItem>();
                    ListGenre.Add(new SelectListItem { Text = "Masculin", Value = "true", Selected = true });
                    ListGenre.Add(new SelectListItem { Text = "Féminin", Value = "false" });

                    ViewBag.USER_Sexe = ListGenre;
                    return View(Usr);
        }
        public ActionResult Edit(int id)
        {
            USER usr = Dbcontext.USERS.Find(id);
            UserPoco UsrPoco = new UserPoco();
            UsrPoco.USER = usr;
            //Le FK_Adresse correspond à l'adresse principal
            UsrPoco.ADRESS = Dbcontext.ADRESSes.Find(usr.Fk_Adress);
            UsrPoco.CITY = Dbcontext.CITIES.Find(UsrPoco.ADRESS.Fk_Cities);

            //Préparation de la vue
            ViewBag.City = new SelectList(Dbcontext.CITIES, "Id", "Name");
            List<SelectListItem> ListGenre = new List<SelectListItem>();
            ListGenre.Add(new SelectListItem { Text = "Masculin", Value = "true", Selected = true });
            ListGenre.Add(new SelectListItem { Text = "Féminin", Value = "false" });

            ViewBag.USER_Sexe = ListGenre;

            return View(UsrPoco);
        }