// GET: /Admin/Users/ViewAllClaims

        /*
         * public ActionResult ViewAllClaims()
         * {
         * List<UserClaims> list = new List<UserClaims>();
         * foreach (var claims
         *  in UserManager.Users
         *      .Select(a => new
         *      {
         *          type = a.Claims
         *      }).Select(b => b.type.Distinct()))
         * {
         *  foreach (var claim in claims)
         *  {
         *      UserClaims insert = new UserClaims { ClaimType = claim.ClaimType };
         *      if (!list.Contains(insert)) list.Add(insert);
         *  }
         * }
         * return View(list);
         * }
         */


        // GET: /Admin/EditClaims/TestUser
        public ActionResult EditClaims(string UserName)
        {
            if (UserName == null)
            {
                return(HttpNotFound());
            }
            DecoratedUserAndClaims unrDecorator = (DecoratedUserAndClaims)UnityConfig.DI.Resolve(typeof(IUserAndClaims));

            unrDecorator.UserNameOrId = UserName;
            var filter = System.Reflection.BindingFlags.Static | System.Reflection.BindingFlags.Public;
            IEnumerable <System.Reflection.FieldInfo> fields = typeof(System.Security.Claims.ClaimTypes).GetFields(filter).Where(f => f.IsLiteral);

            ViewBag.fields = fields;

            UserAndClaims unr = unrDecorator.Decorate();

            return(View(unr));
        }
        public override dynamic Decorate()
        {
            if (AppUser == null)
            {
                throw new ArgumentException("None or unknown argument UserNameOrId specified. Make sure to set before issuing Decorate()");
            }
            UserAndClaims userAndClaim = new UserAndClaims()
            {
                UserName = AppUser.UserName, Claims = new List <UserClaim>()
            };

            foreach (var identityClaim in AppUser.Claims)
            {
                userAndClaim.Claims.Add(new UserClaim
                {
                    UserName   = AppUser.UserName,
                    UserId     = AppUser.Id,
                    ClaimType  = identityClaim.ClaimType,
                    ClaimValue = identityClaim.ClaimValue
                });
            }
            this.component = userAndClaim;
            return(userAndClaim);
        }