public ActionResult StoreManager(ManagerHouse mh)
        {
            if (Session["user_id"] != null)
            {
                if (Session["check_pass"] == null)
                {
                    return(RedirectToAction("CheckingNManager"));
                }
                if (!ModelState.IsValid)
                {
                    return(View("CreateManager", mh));
                }
                var keyChecking = _Context.HouseKeys.SingleOrDefault(hk => hk.Key == mh.Key);
                if (keyChecking == null)
                {
                    ModelState.AddModelError("Key", "Invalid Key. Please Try Another.");
                    return(View("CreateManager", mh));
                }
                var checkExistingManage =
                    _Context.ManagerHouses.SingleOrDefault(m => m.Key == m.Key && m.IsActive == true);
                if (checkExistingManage != null)
                {
                    ModelState.AddModelError("Key", "Already have a manager.");
                    return(View("CreateManager", mh));
                }
                mh.IsActive = true;
                _Context.ManagerHouses.Add(mh);
                _Context.SaveChanges();

                var existingUser = _Context.Users.Find((int)Session["user_id"]);

                existingUser.IsAManager = true;
                _Context.SaveChanges();

                var       user_id = (int)Session["user_id"];
                var       user    = _Context.Users.Find(user_id);
                UserHouse uh      = new UserHouse();
                uh.UserId     = user.UserId;
                uh.IsActive   = true;
                uh.HouseKeyId = keyChecking.Id;

                _Context.UserHouses.Add(uh);
                _Context.SaveChanges();

                return(RedirectToAction("Index", "Users"));
            }
            return(RedirectToAction("LogInUser", "Users"));
        }
        public ActionResult CreateManager()
        {
            if (Session["user_id"] != null)
            {
                if (Session["check_pass"] == null)
                {
                    return(RedirectToAction("CheckingNManager"));
                }

                var houserManager = new ManagerHouse()
                {
                    User_Id = (int)Session["user_id"]
                };
                return(View(houserManager));
            }
            return(RedirectToAction("LogInUser", "Users"));
        }
        public ActionResult StoreNewManager(NewManagerWithExistingManagerViewModel nmwem)
        {
            if (Session["user_id"] != null)
            {
                if (Session["check_pass1"] == null)
                {
                    return(RedirectToAction("ReplaceManager"));
                }
                if (!ModelState.IsValid)
                {
                    return(View("CreateNewManager", nmwem));
                }
                string key             = (string)Session["temporary_key"];
                var    existingManager =
                    _Context.ManagerHouses.SingleOrDefault(
                        mh => mh.IsActive == true && mh.Key == nmwem.ManagerHouse.Key);
                if (key != nmwem.ManagerHouse.Key)
                {
                    ModelState.AddModelError("UserHouse.Key", "Key is not valid");
                    return(View("CreateNewManager", nmwem));
                }
                existingManager.IsActive = false;
                _Context.SaveChanges();

                var newManager = _Context.Users.SingleOrDefault(u => u.UserId == nmwem.UserId && u.IsValid == true);
                if (newManager == null)
                {
                    ModelState.AddModelError("UserId", "User is not valid. Please try valid user.");
                    return(View("CreateNewManager", nmwem));
                }
                ManagerHouse newManagerHouse = new ManagerHouse();
                newManagerHouse.User_Id  = newManager.Id;
                newManagerHouse.IsActive = true;
                newManagerHouse.Key      = nmwem.ManagerHouse.Key;
                _Context.ManagerHouses.Add(newManagerHouse);
                _Context.SaveChanges();


                var HouseKey = _Context.HouseKeys.SingleOrDefault(hk => hk.Key == key);


                var user = _Context.Users.Find(newManager.Id);
                user.IsAManager = true;
                _Context.SaveChanges();
                var checkingUser =
                    _Context.UserHouses.SingleOrDefault(
                        userHouse => userHouse.UserId == user.UserId && userHouse.IsActive == true);
                if (checkingUser == null)
                {
                    UserHouse uh = new UserHouse();
                    uh.UserId     = user.UserId;
                    uh.IsActive   = true;
                    uh.HouseKeyId = HouseKey.Id;

                    _Context.UserHouses.Add(uh);
                    _Context.SaveChanges();
                }

                Session["temporary_key"] = null;
                return(RedirectToAction("Index", "Users"));
            }
            return(RedirectToAction("LogInUser", "Users"));
        }