public async Task <IActionResult> Login([FromBody] LoginDots user)
        {
            AppUserAuth   appuserAuth = new AppUserAuth();
            IActionResult ret         = null;

            if (user == null)
            {
                return(BadRequest("Invalid client request"));
            }

            var userToLogin = _mapper.Map <LoginUser>(user);

            var userObject = await _repo.SignIn(userToLogin);

            if (userObject == null)
            {
                ret = StatusCode(StatusCodes.Status404NotFound, "Invalid User Name/Password.");
            }
            else
            {
                // Build User Security Object
                appuserAuth = BuildUserAuthObject(userObject);
                ret         = StatusCode(StatusCodes.Status200OK, appuserAuth);
            }
            return(ret);
        }
        public async Task <IActionResult> LoginOld([FromBody] LoginDots user)
        {
            if (user == null)
            {
                return(BadRequest("Invalid client request"));
            }

            var userToLogin = _mapper.Map <LoginUser>(user);

            var userObject = await _repo.SignIn(userToLogin);

            if (userObject == null)
            {
                return(Unauthorized());
            }
            else
            {
                var secretKey         = new SymmetricSecurityKey(Encoding.UTF8.GetBytes("CareSys_API_Super_Key"));
                var signinCredentials = new SigningCredentials(secretKey, SecurityAlgorithms.HmacSha256);

                var Userclaims = await _repo.GetUserClaims(user.UserName);

                //var claims = new[]
                //{
                //    new Claim(JwtRegisteredClaimNames.GivenName, user.UserName),
                //    new Claim(JwtRegisteredClaimNames.Birthdate, "10/20/2018")
                //}.Union(Userclaims);
                var claims = new[]
                {
                    new Claim(JwtRegisteredClaimNames.Sub, userObject.UserName),
                    new Claim(JwtRegisteredClaimNames.Jti, userObject.Id.ToString()),
                };

                var tokeOptions = new JwtSecurityToken(
                    issuer: "http://localhost:51004",
                    audience: "http://localhost:4200",
                    claims: Userclaims,
                    expires: DateTime.Now.AddMinutes(5),
                    signingCredentials: signinCredentials
                    );

                var tokenString = new JwtSecurityTokenHandler().WriteToken(tokeOptions);

                return(Ok(new
                {
                    userName = user.UserName,
                    bearerToken = tokenString,
                    isAuthenticated = true
                }));

                //var claims = new List<Claim>
                //{
                //    new Claim(JwtRegisteredClaimNames.Sub, userObject.UserName),
                //    new Claim(JwtRegisteredClaimNames.Jti, Guid.NewGuid().ToString()),
                //    new Claim(ClaimTypes.NameIdentifier, userObject.Id)
                //};

                // ClaimsIdentity claimsIdentity = new ClaimsIdentity(claims, "token");


                // Adding roles code
                // Roles property is string collection but you can modify Select code if it it's not

                // claims.AddRange(roles.Select(role => new Claim(ClaimsIdentity.DefaultRoleClaimType, role)));
                // Get Current User Roles
                //var roles = _repo.GetRoles(userObject.UserName);
                //claims.Add(new Claim("Roles", "Admin"));

                // claims: new List<Claim>(),

                //var tokeOptions = new JwtSecurityToken(
                //    issuer: "http://localhost:51004",
                //    audience: "http://localhost:4200",

                //    expires: DateTime.Now.AddMinutes(50),
                //    signingCredentials: signinCredentials
                //);

                //var tokenString = new JwtSecurityTokenHandler().WriteToken(tokeOptions);
                //// return Ok(new { Token = tokenString });
                //return Ok(new
                //{
                //    userName = user.UserName,
                //    bearerToken = tokenString,
                //    isAuthenticated = true
                //});
            }
        }