public async Task<ActionResult> SetUserClaim(string userId)
        {
            if (userId == null)
            {
                return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
            }
            var user = await UserManager.FindByIdAsync(userId);
            if (user == null)
            {
                return HttpNotFound();
            }

            SetUserClaimVM vm = new SetUserClaimVM();
            var appClaims = claimManager.List().OrderBy(x => x.Name);

            vm.Types = new SelectList
                (
                    claimManager.List().OrderBy(x => x.Name),
                    "Name",
                    "Name"
                );
            //pega os claim Types default e coloca junto com os da Aplicacao
            //se tiver o claimtype http://schemas.microsoft.com/ws/2008/06/identity/claims/role 
            // da pra validat com o Authorize padrao [Authorize(Roles="blablabla")]
            var props = typeof(ClaimTypes).GetFields();
            var b = from c in props
                    select new { Name = c.Name + " (" + c.GetValue(null).ToString() + ")", 
                        Value = c.GetValue(null).ToString() };

            vm.Types = vm.Types.Concat(new SelectList(b, "Value", "Name"));
            vm.Types = vm.Types.OrderBy(x => x.Text);

            vm.UserId = user.Id;
            vm.UserName = user.UserName;
            return View(vm);
        }
        public async Task<ActionResult> SetUserClaim(SetUserClaimVM vm)
        {
            if (vm.UserId == null)
            {
                return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
            }
            var user = await UserManager.FindByIdAsync(vm.UserId);
            if (user == null)
            {
                return HttpNotFound();
            }

            vm.Types = new SelectList
                (
                    claimManager.List().OrderBy(x=>x.Name) ,
                    "Name",
                    "Name"
                );

            var props = typeof(ClaimTypes).GetFields();
            var b = from c in props
                    select new
                    {
                        Name = c.Name + " (" + c.GetValue(null).ToString() + ")",
                        Value = c.GetValue(null).ToString()
                    };

            vm.Types = vm.Types.Concat(new SelectList(b, "Value", "Name"));
            vm.Types = vm.Types.OrderBy(x => x.Text);

            try
            {
                var a = user.Claims.SingleOrDefault(x=>x.ClaimType==vm.Type&&x.ClaimValue==vm.Value);
                if (a != null)
                {
                    ModelState.AddModelError("", "Usuário já possui este Claim!");
                    return View(vm);
                }
                IdentityResult result = await UserManager.AddClaimAsync(vm.UserId, new Claim(vm.Type, vm.Value));

                if (!result.Succeeded)
                {
                    ModelState.AddModelError("", result.Errors.ToString());
                    return View(vm);
                }
                return RedirectToAction("ListUserClaims","UsersAdmin", new { userId = vm.UserId });
            }
            catch (Exception e)
            {
                ModelState.AddModelError("", e.Message);
                return View(vm);
            }
        }