public ActionResult AddUser()
        {
            //var user = _carDealer.CreateUser(model);
            var model = new UserRoleViewModel();

            model.SetRoleItems(_carDealer.GetAllRoles());

            return(View(model));
            //throw new Exception();
        }
        public ActionResult EditUser(string id)
        {
            //var user = new UserRoleViewModel();
            //user.SetRoleItems(_carDealer.GetAllRoles());
            //user.AppUser = _carDealer.GetUserById(id);

            var user = _carDealer.GetUserById(id);
            //simplified by VS: O
            var model = new UserRoleViewModel
            {
                AppUser = user,
                RoleId  = user.Roles.Single().RoleId
            };

            model.SetRoleItems(_carDealer.GetAllRoles());

            return(View(model));
        }
        public ActionResult AddUser(UserRoleViewModel model)
        {
            if (string.IsNullOrWhiteSpace(model.AppUser.FirstName))
            {
                ModelState.AddModelError("FirstName", "Please enter user first name");
            }
            if (string.IsNullOrWhiteSpace(model.AppUser.LastName))
            {
                ModelState.AddModelError("LastName", "Please enter user last name");
            }
            if (string.IsNullOrWhiteSpace(model.AppUser.Email))
            {
                ModelState.AddModelError("Email", "Please enter the email for the user");
            }
            if (string.IsNullOrEmpty(model.RoleId))
            {
                ModelState.AddModelError("Role", "Please select a role for the user.");
            }
            if (string.IsNullOrWhiteSpace(model.Password) || string.IsNullOrWhiteSpace(model.ConfirmPassword))
            {
                ModelState.AddModelError("Password", "Please enter a password");
            }
            if (model.Password.Length < 6)
            {
                ModelState.AddModelError("Password", "Password length must be at least 6 characters long");
            }
            if (model.ConfirmPassword != model.Password)
            {
                ModelState.AddModelError("ConfirmPassword", "Must have mmtching passwords");
            }

            if (ModelState.IsValid)
            {
                _carDealer.CreateUser(model);
                return(RedirectToAction("Users"));
            }
            else
            {
                model.SetRoleItems(_carDealer.GetAllRoles());
                return(View(model));
            }
        }
        public ActionResult EditUser(UserRoleViewModel model)
        {
            var userMgr  = new UserManager <AppUser>(new UserStore <AppUser>(context));
            var roleMgr  = new RoleManager <AppRole>(new RoleStore <AppRole>(context));
            var findUser = userMgr.FindById(model.AppUser.Id);

            var user      = userMgr.FindById(findUser.Id);
            var userRoles = userMgr.GetRoles(user.Id);

            if (string.IsNullOrWhiteSpace(model.AppUser.FirstName))
            {
                ModelState.AddModelError("FirstName", "Please enter user first name");
            }
            if (string.IsNullOrWhiteSpace(model.AppUser.LastName))
            {
                ModelState.AddModelError("LastName", "Please enter user last name");
            }
            if (string.IsNullOrWhiteSpace(model.AppUser.Email))
            {
                ModelState.AddModelError("Email", "Please enter the email for the user");
            }
            if (string.IsNullOrEmpty(model.RoleId))
            {
                ModelState.AddModelError("Role", "Please select a role for the user.");
            }
            //if (string.IsNullOrWhiteSpace(model.Password) || string.IsNullOrWhiteSpace(model.ConfirmPassword))
            //{
            //    ModelState.AddModelError("Password", "Please enter a password");
            //}
            if (!string.IsNullOrEmpty(model.Password) && model.Password.Length < 6)
            {
                ModelState.AddModelError("Password", "Password length must be at least 6 characters long");
            }
            if (model.ConfirmPassword != model.Password)
            {
                ModelState.AddModelError("ConfirmPassword", "Must have mmtching passwords");
            }

            if (ModelState.IsValid)
            {
                userMgr.RemoveFromRoles(user.Id, userRoles.ToArray());
                var matchingRole = roleMgr.Roles.Single(r => r.Id == model.RoleId);
                userMgr.AddToRole(user.Id, matchingRole.Name);

                _carDealer.EditUser(model);

                user.FirstName = model.AppUser.FirstName;
                user.LastName  = model.AppUser.LastName;
                user.UserName  = model.AppUser.UserName;
                user.Id        = model.AppUser.Id;
                user.Email     = model.AppUser.Email;

                userMgr.Update(user);

                return(RedirectToAction("Users"));
            }
            else
            {
                model.SetRoleItems(_carDealer.GetAllRoles());
                return(View(model));
            }
        }