public async Task <JWTViewModel> GenerarToken(ResultadoLoginViewModel resultado)
        {
            var nombreUsuarioToken = Crypto.EncryptStringAES(resultado.NombreUsuario);
            var idUsuarioToken     = Crypto.EncryptStringAES($"{resultado.IdUsuario}," +
                                                             $"{resultado.RFC}");
            //var rolToken = Crypto.EncryptStringAES(usuario.Nombre);
            //Boolean adm = usuario.Administrador;
            var nowUtc       = DateTime.UtcNow;
            var expires      = nowUtc.AddMinutes(_settings.Expire);
            var centuryBegin = new DateTime(1970, 1, 1);
            var exp          = (long)(new TimeSpan(expires.Ticks - centuryBegin.Ticks).TotalSeconds);
            var now          = (long)(new TimeSpan(nowUtc.Ticks - centuryBegin.Ticks).TotalSeconds);
            var issuer       = _settings.Issuer ?? string.Empty;
            //String[] roles = {usuario.Nombre };
            //Boolean exito = usuario.Exito;
            var payload = new JwtPayload
            {
                { "sub", nombreUsuarioToken },
                { "unique_name", idUsuarioToken },
                { "rol", resultado.Rol },
                { "iss", issuer },
                { "iat", now },
                { "nbf", now },
                { "exp", exp },
                //{"roles",roles },
                //{"exito", exito },
                //{"administrador", adm },
                { "jti", Guid.NewGuid().ToString("N") }
            };
            var jwt   = new JwtSecurityToken(_jwtHeader, payload);
            var token = _jwtSecurityTokenHandler.WriteToken(jwt);

            return(new JWTViewModel
            {
                Token = token,
                Expires = exp,
                IdUsuario = resultado.IdUsuario,
                NombreUsuario = resultado.NombreUsuario,
                Rol = resultado.Rol,
                UserName = resultado.UserName,
                RFC = resultado.RFC,
                CodigoPuesto = resultado.CodigoPuesto,
                Exito = resultado.Exito,
                Mensaje = resultado.Mensaje,
                IdSucursal = resultado.IdSucursal,
                Sucursal = resultado.Sucursal
            });
        }
        public async Task <ResultadoLoginViewModel> AutentificacionUsuario(LoginViewModel usuario)
        {
            using (var Conexion = new SqlConnection(Helpers.ContextConfiguration.ConexionString))
            {
                var resultado = new ResultadoLoginViewModel()
                {
                    Exito = false, Mensaje = "Existe un error en Servidor"
                };
                try
                {
                    var comando = new SqlCommand();
                    comando.Connection  = Conexion;
                    comando.CommandText = "Seguridad.Authenticacion";
                    comando.CommandType = System.Data.CommandType.StoredProcedure;
                    /*Agregando los parametros*/
                    comando.Parameters.AddWithValue("@usuario", usuario.Username.Trim());
                    comando.Parameters.AddWithValue("@pass", usuario.Password.Trim());
                    Conexion.Open();
                    var Lectura = await comando.ExecuteReaderAsync();

                    if (Lectura.HasRows)
                    {
                        while (Lectura.Read())
                        {
                            resultado.Exito         = Lectura.GetBoolean(0);
                            resultado.Mensaje       = Lectura.GetString(1);
                            resultado.NombreUsuario = Lectura.GetString(2);
                            resultado.Rol           = Lectura.GetString(3);
                            resultado.IdUsuario     = Lectura.GetGuid(4);
                            resultado.UserName      = Lectura.GetString(5);
                            resultado.RFC           = Lectura.GetString(6);
                            resultado.CodigoPuesto  = Lectura.GetString(7);
                            resultado.IdSucursal    = Lectura.GetGuid(8);
                            resultado.Sucursal      = Lectura.GetString(9);
                        }
                    }
                    Conexion.Close();
                    return(resultado);
                }
                catch (Exception e)
                {
                    var m = e.Message.ToString();
                    return(resultado);
                }
            }
        }