public ActionResult Edit(string cancel, string delete, string save, CmsUserManagerEditViewModel viewModel)
        {
            CmsUserManagerServiceBinder modelBinder = this.GetServiceBinder();

            if (this.ModelState.IsValid)
            {
                if (save != null)
                {
                    viewModel = modelBinder.EditViewModelUpdate(viewModel);
                }

                if (delete != null)
                {
                }
            }
            else
            {
                //// Okay there has been an error as the ModelState is inValid, chances are they have not completed the form all in
                //// however, we may now also be missing other data such as select lists
                viewModel = modelBinder.EditViewModelStateInValid(viewModel);
                this.ModelState.AddModelError("Update Error", "Failed to submit. Correct any errors");
            }

            return View(viewModel);
        }
        public CmsUserManagerEditViewModel EditViewModelBind(int userId)
        {
            var viewModel = new CmsUserManagerEditViewModel();
            var user = this.userService.GetById(userId);
            var userRoles = this.userRolesService.GetMany(ur => ur.UserId == userId);
            var selectedUserRoles = new List<int>();

            Mapper.CreateMap<User, CmsUserManagerEditViewModel>();
            Mapper.Map(user, viewModel);

            foreach (var userRole in userRoles)
            {
                selectedUserRoles.Add(userRole.RoleId);
            }

            PopulateUserRolesAvailable(ref viewModel);
            viewModel.UserRolesSelectedItems = selectedUserRoles;

            return viewModel;
        }
        public CmsUserManagerEditViewModel EditViewModelUpdate(CmsUserManagerEditViewModel viewModel)
        {
            bool isSuccess;

            try
            {
                User user = this.userService.GetById(viewModel.UserId);

                Mapper.CreateMap<CmsUserManagerEditViewModel, User>();
                Mapper.Map(viewModel, user);

                //// Update User
                this.userService.Update(user);

                //// Update User Roles
                if (viewModel.UserRolesSelectedItems != null)
                {
                    foreach (int roleId in viewModel.UserRolesSelectedItems)
                    {
                        this.AddNewUserRole(roleId, viewModel.UserId);
                    }
                }

                isSuccess = true;
            }
            catch (System.Exception)
            {
                isSuccess = false;
            }

            viewModel = this.EditViewModelBind(viewModel.UserId);
            viewModel.ActionIsSaveSuccessful = isSuccess;

            return viewModel;
        }
 private void PopulateUserRolesAvailable(ref CmsUserManagerEditViewModel viewModel)
 {
     if (this.roleService != null)
     {
         viewModel.UserRolesAvailableList = new SelectList(this.roleService.GetAll(), "RoleId", "Name");
     }
 }
        public CmsUserManagerEditViewModel EditViewModelStateInValid(CmsUserManagerEditViewModel viewModel)
        {
            PopulateUserRolesAvailable(ref viewModel);
            viewModel.ActionIsSaveSuccessful = false;

            return viewModel;
        }