/**
* CentralIT - CITSmart
*/
package br.com.centralit.citcorpore.integracao;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import br.com.centralit.citcorpore.bean.PastaDTO;
import br.com.centralit.citcorpore.bean.PerfilAcessoDTO;
import br.com.centralit.citcorpore.util.CITCorporeUtil;
import br.com.citframework.dto.IDto;
import br.com.citframework.excecao.PersistenceException;
import br.com.citframework.integracao.Condition;
import br.com.citframework.integracao.CrudDaoDefaultImpl;
import br.com.citframework.integracao.Field;
import br.com.citframework.integracao.Order;
import br.com.citframework.util.Constantes;
/**
* DAO de PerfilAcesso.
*
* @author thays.araujo
*/
@SuppressWarnings({ "rawtypes", "unchecked" })
public class PerfilAcessoDao extends CrudDaoDefaultImpl {
@Override
public Collection<Field> getFields() {
Collection<Field> listFields = new ArrayList<>();
listFields.add(new Field("IDPERFIL", "idPerfilAcesso", true, true, false, false));
listFields.add(new Field("DATAINICIO", "dataInicio", false, false, false, false));
listFields.add(new Field("DATAFIM", "dataFim", false, false, false, false));
listFields.add(new Field("NOME", "nomePerfilAcesso", false, false, false, false));
listFields.add(new Field("ACESSOSISTEMACITSMART", "acessoSistemaCitsmart", false, false, false, false));
return listFields;
}
@Override
public String getTableName() {
return "PERFILACESSO";
}
@Override
public Collection list() throws PersistenceException {
List list = new ArrayList();
list.add(new Order("nomePerfilAcesso"));
return super.list(list);
}
public PerfilAcessoDTO listByName(PerfilAcessoDTO obj) throws PersistenceException {
List fields = new ArrayList();
fields.add("idPerfilAcesso");
fields.add("nomePerfilAcesso");
String sql = "SELECT idPerfil, nome FROM " + getTableName() + " WHERE dataFim IS NULL AND idPerfil = ? ";
List dados = this.execSQL(sql, new Object[] { obj.getIdPerfilAcesso() });
List perfis = this.listConvertion(getBean(), dados, fields);
if (perfis != null && !perfis.isEmpty()) {
return (PerfilAcessoDTO) perfis.get(0);
}
return null;
}
/**
* Consulta Perfils de Acesso com DataFim = NULL.
*
* @return perfisAtivos
* @throws Exception
* @author valdoilo.damasceno
*/
public Collection<PerfilAcessoDTO> consultarPerfisDeAcessoAtivos() throws PersistenceException {
List ordenacao = new ArrayList();
List condicao = new ArrayList();
ordenacao.add(new Order("nomePerfilAcesso"));
condicao.add(new Condition("dataFim", "is", null));
return super.findByCondition(condicao, ordenacao);
}
/**
* Consulta Perfis de Acesso da Pasta informada.
*
* @param pastaBean
* @return perfisDeAcessoAtivos
* @throws Exception
* @author valdoilo.damasceno
*/
public Collection<PerfilAcessoDTO> consultarPerfisDeAcessoAtivos(PastaDTO pastaBean) throws PersistenceException {
StringBuilder sql = new StringBuilder();
List parametro = new ArrayList();
List retorno = new ArrayList();
sql.append("SELECT perfilacesso.idperfil, perfilacesso.nome, perfilacessopasta.aprovaBaseConhecimento, perfilacessopasta.permiteleitura, perfilacessopasta.permiteleituragravacao ");
sql.append("FROM perfilacessopasta ");
sql.append("INNER JOIN perfilacesso ON perfilacessopasta.idperfil = perfilacesso.idperfil ");
sql.append("WHERE perfilacessopasta.idpasta = ? ");
parametro.add(pastaBean.getId());
retorno.add("idPerfilAcesso");
retorno.add("nomePerfilAcesso");
retorno.add("aprovaBaseConhecimento");
retorno.add("permiteLeitura");
retorno.add("permiteLeituraGravacao");
List list = this.execSQL(sql.toString(), parametro.toArray());
return this.engine.listConvertion(this.getBean(), list, retorno);
}
@Override
public Class getBean() {
return PerfilAcessoDTO.class;
}
public PerfilAcessoDao() {
super(Constantes.getValue("DATABASE_ALIAS"), null);
}
@Override
public Collection find(IDto arg0) throws PersistenceException {
return null;
}
@Override
public IDto restore(IDto obj) throws PersistenceException {
PerfilAcessoDTO perfilAcessoDTO = (PerfilAcessoDTO) obj;
List fields = new ArrayList();
fields.add("idPerfilAcesso");
fields.add("dataInicio");
fields.add("dataFim");
fields.add("nomePerfilAcesso");
fields.add("acessoSistemaCitsmart");
String sql = "SELECT idPerfil, dataInicio, dataFim, nome, acessoSistemaCitsmart FROM " + getTableName() + " WHERE dataFim IS NULL AND idPerfil = ? ";
List dados = this.execSQL(sql, new Object[] { perfilAcessoDTO.getIdPerfilAcesso() });
return (IDto) this.listConvertion(getBean(), dados, fields).get(0);
}
public Integer listarIdAdministrador() throws PersistenceException {
String SGBD = CITCorporeUtil.SGBD_PRINCIPAL.trim();
List parametro = new ArrayList();
PerfilAcessoDTO perfilAcessoDTO = new PerfilAcessoDTO();
StringBuilder sql = new StringBuilder();
if (SGBD.equalsIgnoreCase("ORACLE")) {
sql.append("SELECT idPerfil FROM " + getTableName() + " WHERE dataFim IS NULL AND UPPER( nome ) LIKE '%Administrador%' ");
}else{
sql.append("SELECT idPerfil FROM " + getTableName() + " WHERE dataFim IS NULL AND nome LIKE '%Administrador%' ");
}
List lista = new ArrayList();
lista = this.execSQL(sql.toString(), parametro.toArray());
List listRetorno = new ArrayList();
listRetorno.add("idPerfilAcesso");
List result = this.engine.listConvertion(getBean(), lista, listRetorno);
if (result != null && result.size() > 0) {
perfilAcessoDTO = (PerfilAcessoDTO) result.get(0);
} else {
perfilAcessoDTO = new PerfilAcessoDTO();
}
Integer resultado = new Integer(1);
if (perfilAcessoDTO != null) {
resultado = perfilAcessoDTO.getIdPerfilAcesso();
return resultado;
}
return null;
}
/**
* Verifica se PerfilAcessoInformado informada existe.
*
* @param perfilAcesso
* @return true - existe; false - n�o existe;
* @throws PersistenceException
*/
public boolean verificarSePerfilAcessoExiste(PerfilAcessoDTO perfilAcesso) throws PersistenceException {
List parametro = new ArrayList();
List list = new ArrayList();
StringBuilder sql = new StringBuilder();
sql.append("select idperfil from " + getTableName() + " where nome = ? and datafim is null ");
parametro.add(perfilAcesso.getNomePerfilAcesso());
if (perfilAcesso.getIdPerfilAcesso() != null) {
sql.append("and idperfil <> ?");
parametro.add(perfilAcesso.getIdPerfilAcesso());
}
list = this.execSQL(sql.toString(), parametro.toArray());
if (list != null && !list.isEmpty()) {
return true;
} else {
return false;
}
}
/**
* @param perfilAcessoDTO
* @return
* @throws Exception
*/
public PerfilAcessoDTO findByIdPerfilAcesso(PerfilAcessoDTO perfilAcessoDTO) throws PersistenceException {
List fields = new ArrayList();
String sql = "select acessoSistemaCitsmart, nome, dataInicio from perfilacesso where idperfil = " + perfilAcessoDTO.getIdPerfilAcesso();
fields.add("acessoSistemaCitsmart");
fields.add("nome");
fields.add("dataInicio");
List list = this.execSQL(sql, null);
List resultado = this.listConvertion(PerfilAcessoDTO.class, list, fields);
if (resultado != null && !resultado.isEmpty()) {
return (PerfilAcessoDTO) resultado.get(0);
} else {
return null;
}
}
public String getAcessoCitsmartByUsuario(Integer idUsuario) throws PersistenceException{
List parametros = new ArrayList();
StringBuilder sql = new StringBuilder();
sql.append("SELECT pa.acessoSistemaCitsmart ");
sql.append("FROM perfilacesso pa ");
sql.append(" JOIN perfilacessogrupo pag ON pag.idperfil = pa.idperfil AND pag.datafim IS NULL ");
sql.append(" JOIN gruposempregados ge ON ge.idgrupo = pag.idgrupo ");
sql.append(" JOIN usuario u ON u.idempregado = ge.idempregado AND u.idusuario = ? ");
sql.append("WHERE pa.acessoSistemaCitsmart <> 'N' AND pa.datafim IS NULL ");
parametros.add(idUsuario);
List resultado = this.execSQL(sql.toString(), parametros.toArray());
if(resultado != null && !resultado.isEmpty())
return "S";
else
return "N";
}
}