Boa Noite,
Estou validando os usuários ativos do Fluig na empresa e preciso realizar o bloqueio de usuários que estão consumindo licença e não utilizam a plataforma. Gostaria de saber se existe algum relatório que mostre o ultimo acesso. Achei dentro do Banco de Dados uma tabela que traz todos os acessos do usuário, mas necessito de um relatório que traga o ultimo. Caso não exista, vou criar uma Query em sql para isso.
Guilherme, o dataser accesslog possui as informações de log, porém, não acredito que exista algum filtro para trazer somente o último registro de cada usuário. Seria possível combinar a implementação de datasets para verificar um a um, como o colleague e o accesslog por exemplo. Acredito que o caminho mais curto seja via query mesmo.
Tente via query. Talvez não tenha uma constraint para fazer isso no accesslog.
Bom dia pessoal, novato aqui no fluig, query em qual tabela / dataset?
Acabei achando o que eu precisava, só fiz a query de acordo com as minhas necessidades, caso alguém precise, ai está:
function createDataset(fields, constraints, sortFields) {
var newDataset = DatasetBuilder.newDataset();
var dataSource = "/jdbc/AppDS";
var ic = new javax.naming.InitialContext();
var ds = ic.lookup(dataSource);
var created = false;
//criar constraints
if(constraints != null){
for(var x = 0; x < constraints.length; x++){
if(constraints[x].fieldName == "EMP"){
EMP = constraints[x].initialValue;
}
if(constraints[x].fieldName == "FIL"){
FIL = constraints[x].initialValue;
}
}
}
var QUERY = "SELECT LOG.LOGIN, COUNT(ACCESSLOG_ID) AS QUANTIDADE_ACESSOS, DATE_FORMAT((SELECT MAX(LOG2.ACCESS_DATE) FROM FDN_ACCESSLOG LOG2 WHERE LOG2.LOGIN = LOG.LOGIN),'%d/%m/%Y') AS ULTIMO_ACESSO, CASE WHEN (SELECT STA.USER_STATE FROM FDN_USERTENANT STA WHERE STA.LOGIN = LOG.LOGIN) = 1 THEN 'NAO' ELSE 'SIM' END AS BLOQUEADO FROM FDN_ACCESSLOG LOG WHERE (SELECT STA.USER_STATE FROM FDN_USERTENANT STA WHERE STA.LOGIN = LOG.LOGIN) = 1 GROUP BY LOG.LOGIN ORDER BY 2 ASC";
try {
var conn = ds.getConnection();
var stmt = conn.createStatement();
var rs = stmt.executeQuery(QUERY);
var columnCount = rs.getMetaData().getColumnCount();
while (rs.next()) {
if (!created) {
for (var i = 1; i <= columnCount; i++) {
newDataset.addColumn(rs.getMetaData().getColumnName(i));
}
created = true;
}
var Arr = [];
for (var i = 1; i <= columnCount; i++) {
var obj = rs.getObject(rs.getMetaData().getColumnName(i));
if (null != obj) {
Arr[i - 1] = rs.getObject(rs.getMetaData().getColumnName(i)).toString();
} else {
Arr[i - 1] = "null";
}
}
newDataset.addRow( Arr );
}
} catch (e) {
log.error("ERRO==============> " + e.message);
} finally {
if (stmt != null) {
stmt.close();
}
if (conn != null) {
conn.close();
}
}
return newDataset;
}