public virtual ActionResult EditUser(SecurityManagementUserViewModel user)
        {
            var repository = Security.Repository as TicketDesk.Domain.Repositories.SqlSecurityRepository;
            var membership = repository.MembershipSource;
            var m = membership.GetUser(user.UserName, false);
            if (ModelState.IsValid)
            {
                m.Comment = user.DisplayName;
                m.Email = user.Email;
                m.IsApproved = user.IsApproved;
                if(m.IsLockedOut && !user.IsLockedOut)
                {
                    m.UnlockUser();
                }
                
                membership.UpdateUser(m);

                if (Security.IsTdAdmin(user.UserName) != user.IsAdmin)
                {
                    if (user.IsAdmin)
                    {
                        Security.AddUserToTdAdmin(user.UserName);
                    }
                    else
                    {
                        Security.RemoveUserFromTdAdmin(user.UserName);
                    }
                }
                if (Security.IsTdStaff(user.UserName) != user.IsStaff)
                {
                    if (user.IsStaff)
                    {
                        Security.AddUserToTdStaff(user.UserName);
                    }
                    else
                    {
                        Security.RemoveUserFromTdStaff(user.UserName);
                    }
                }
                if (Security.IsTdSubmitter(user.UserName) != user.IsSubmitter)
                {
                    if (user.IsSubmitter)
                    {
                        Security.AddUserToTdSubmitter(user.UserName);
                    }
                    else
                    {
                        Security.RemoveUserFromTdSubmitter(user.UserName);
                    }
                }
                return RedirectToAction(MVC.Admin.SecurityManagement.UsersList());
            }
            else
            {
                return View(user);
            }
        }
        public virtual ActionResult CreateUser(SecurityManagementUserViewModel user)
        {
            var repository = Security.Repository as TicketDesk.Domain.Repositories.SqlSecurityRepository;
            var membership = repository.MembershipSource;

            if (ModelState.IsValid)
            {
                MembershipCreateStatus createStatus;
                var u = membership.CreateUser(user.UserName, user.Password, user.Email, null, null, true, null, out createStatus);
                if (createStatus == MembershipCreateStatus.Success)
                {
                    u.Comment = user.DisplayName;
                    membership.UpdateUser(u);
                    if (Security.IsTdAdmin(user.UserName) != user.IsAdmin)
                    {
                        if (user.IsAdmin)
                        {
                            Security.AddUserToTdAdmin(user.UserName);
                        }
                        else
                        {
                            Security.RemoveUserFromTdAdmin(user.UserName);
                        }
                    }
                    if (Security.IsTdStaff(user.UserName) != user.IsStaff)
                    {
                        if (user.IsStaff)
                        {
                            Security.AddUserToTdStaff(user.UserName);
                        }
                        else
                        {
                            Security.RemoveUserFromTdStaff(user.UserName);
                        }
                    }
                    if (Security.IsTdSubmitter(user.UserName) != user.IsSubmitter)
                    {
                        if (user.IsSubmitter)
                        {
                            Security.AddUserToTdSubmitter(user.UserName);
                        }
                        else
                        {
                            Security.RemoveUserFromTdSubmitter(user.UserName);
                        }
                    }
                    return RedirectToAction(MVC.Admin.SecurityManagement.UsersList());
                }
                else
                {
                    ModelState.AddModelError("", AccountValidation.ErrorCodeToString(createStatus));

                    return View();
                }
            }
            else
            {
                return View();
            }
        }
        public virtual ActionResult DeleteUser(SecurityManagementUserViewModel user)
        {
            var repository = Security.Repository as TicketDesk.Domain.Repositories.SqlSecurityRepository;
            var membership = repository.MembershipSource;

            if (!membership.DeleteUser(user.UserName, true))
            {
                ModelState.AddModelError("deleteUser", "Unable to delete user account");
                return View(user);
            }
            else
            {
                return RedirectToAction(MVC.Admin.SecurityManagement.UsersList());
            }
        }
 public virtual ActionResult CreateUser()
 {
     var model = new SecurityManagementUserViewModel() { IsApproved = true, IsSubmitter = true };
     return View(model);
 }