public ActionResult EditUser(AdminAddUpdateUserVM model)
        {
            model.AvailableRoles = IdentityPostmaster.SetAvailableRoles();

            if (model.Password != model.PasswordConfirmed)
            {
                ModelState.AddModelError("PasswordConfirmed", "Your password and password confirmation did not match.");
            }
            if (ModelState.IsValid)
            {
                var courier = IdentityPostmaster.PackageUpdateUser(model);

                if (courier.Success)
                {
                    return(RedirectToAction("Users"));
                }
                else
                {
                    ModelState.AddModelError("TargetUserName", courier.Message);

                    return(View(model));
                }
            }
            else
            {
                return(View("EditUser", model));
            }
        }
        public ActionResult AddUser()
        {
            AdminAddUpdateUserVM model = new AdminAddUpdateUserVM();

            model.AvailableRoles = IdentityPostmaster.SetAvailableRoles();

            return(View(model));
        }
        public static Courier <AddUpdateUserParcel> CleanAddUpdateVM(AdminAddUpdateUserVM model)
        {
            Courier <AddUpdateUserParcel> courier = new Courier <AddUpdateUserParcel>();

            if (model.FirstName != null &&
                model.LastName != null &&
                model.Email != null)
            {
                string userName = model.FirstName.Substring(0, 1) + model.LastName;

                bool hasNumber = false;
                int  number    = 0;
                for (int i = 0; i < model.Password.Length; i++)
                {
                    if (int.TryParse(model.Password.Substring(i, 1), out number))
                    {
                        hasNumber = true;
                    }
                    if (hasNumber)
                    {
                        break;
                    }
                }
                if (hasNumber && model.Password.Length > 6)
                {
                    courier.Success = true;
                    courier.Package = new AddUpdateUserParcel()
                    {
                        FirstName = model.FirstName,
                        LastName  = model.LastName,
                        Email     = model.Email,
                        UserName  = userName,
                        Password  = model.Password,
                        RoleName  = model.RoleName
                    };

                    IdentityManager mgr = new IdentityManager();

                    var currentUser = mgr.GetUserById(model.TargetUserId);

                    courier.Package.Target = currentUser.Package;
                }
                else
                {
                    courier.Success = false;
                    courier.Message = "Password must be 7 or more character with letters and numbers";
                }
            }
            else
            {
                courier.Success = false;
                courier.Message = "Null values were entered";
            }

            return(courier);
        }
        public static Courier <AppUser> PackageNewUser(AdminAddUpdateUserVM model)
        {
            IdentityManager mgr = new IdentityManager();

            var courier = CleanAddUpdateVM(model);

            if (courier.Success)
            {
                return(mgr.CreateNewUser(courier.Package));
            }
            else
            {
                return new Courier <AppUser>()
                       {
                           Success = false, Message = courier.Message
                       }
            };
        }
        public ActionResult EditUser(string userId)
        {
            AdminAddUpdateUserVM model = new AdminAddUpdateUserVM();

            var courier = IdentityPostmaster.RetrieveUserById(userId);

            model.TargetUserId   = userId;
            model.FirstName      = courier.Package.FirstName;
            model.LastName       = courier.Package.LastName;
            model.Email          = courier.Package.Email;
            model.AvailableRoles = IdentityPostmaster.SetAvailableRoles();
            model.RoleName       = IdentityPostmaster.GetUserRole(userId).Package.Name;

            foreach (var t in model.AvailableRoles)
            {
                if (t.Text == model.RoleName &&
                    t.Value == model.RoleName)
                {
                    t.Selected = true;
                }
            }

            return(View(model));
        }