package br.com.centralit.citcorpore.integracao;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import br.com.centralit.citcorpore.bean.GrupoDTO;
import br.com.centralit.citcorpore.bean.PerfilAcessoGrupoDTO;
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;
import br.com.citframework.util.UtilDatas;
@SuppressWarnings({ "unchecked", "rawtypes" })
public class PerfilAcessoGrupoDao extends CrudDaoDefaultImpl {
public PerfilAcessoGrupoDao() {
super(Constantes.getValue("DATABASE_ALIAS"), null);
}
@Override
public Collection find(IDto arg0) throws PersistenceException {
return null;
}
@Override
public Collection<Field> getFields() {
Collection<Field> listFields = new ArrayList<>();
listFields.add(new Field("IDPERFIL", "idPerfilAcessoGrupo", true, false, false, false));
listFields.add(new Field("IDGRUPO", "idGrupo", true, false, false, false));
listFields.add(new Field("DATAINICIO", "dataInicio", true, false, false, false));
listFields.add(new Field("DATAFIM", "dataFim", false, false, false, false));
return listFields;
}
@Override
public String getTableName() {
return "PERFILACESSOGRUPO";
}
public PerfilAcessoGrupoDTO listByIdGrupo(PerfilAcessoGrupoDTO obj) throws PersistenceException {
List list = new ArrayList();
List fields = new ArrayList();
String sql = "select idperfil from " + getTableName() + " where idgrupo = " + obj.getIdGrupo() + " ";
fields.add("idPerfilAcessoGrupo");
list = this.execSQL(sql, null);
if (list != null && !list.isEmpty()) {
return (PerfilAcessoGrupoDTO) this.listConvertion(getBean(), list, fields).get(0);
} else {
return null;
}
}
/**
* Retorna perfil de acesso ativo do grupo.
*
* @param grupo
* @return
* @throws Exception
*/
public PerfilAcessoGrupoDTO obterPerfilAcessoGrupo(GrupoDTO grupo) throws PersistenceException {
List list = new ArrayList();
List fields = new ArrayList();
StringBuilder sql = new StringBuilder();
List parametros = new ArrayList();
sql.append("SELECT idperfil FROM perfilacessogrupo WHERE idgrupo = ? AND datafim IS NULL");
parametros.add(grupo.getIdGrupo());
fields.add("idPerfilAcessoGrupo");
list = this.execSQL(sql.toString(), parametros.toArray());
if (list != null && !list.isEmpty()) {
return (PerfilAcessoGrupoDTO) this.listConvertion(getBean(), list, fields).get(0);
} else {
return null;
}
}
@Override
public Class getBean() {
return PerfilAcessoGrupoDTO.class;
}
@Override
public Collection list() throws PersistenceException {
return null;
}
public void updateDataFim(PerfilAcessoGrupoDTO obj) throws PersistenceException {
List parametros = new ArrayList();
parametros.add(UtilDatas.getDataAtual());
parametros.add(obj.getIdGrupo());
String sql = "UPDATE " + getTableName() + " SET DATAFIM = ? WHERE IDGRUPO = ? ";
this.execUpdate(sql, parametros.toArray());
}
@Override
public void delete(IDto obj) throws PersistenceException {
PerfilAcessoGrupoDTO dto = (PerfilAcessoGrupoDTO) obj;
String sql = "DELETE FROM " + getTableName() + " WHERE IDGRUPO = " + dto.getIdGrupo() + " ";
this.execUpdate(sql, null);
}
/**
* Retorna PerfilAcessoGrupo Ativos por idPerfilAcesso.
*
* @param idPerfilAcesso
* @return
* @throws Exception
*/
public Collection findByIdPerfil(Integer idPerfilAcesso) throws PersistenceException {
List condicao = new ArrayList();
List ordenacao = new ArrayList();
condicao.add(new Condition("idPerfilAcessoGrupo", "=", idPerfilAcesso));
condicao.add(new Condition("dataFim", "is", null));
ordenacao.add(new Order("idPerfilAcessoGrupo"));
return super.findByCondition(condicao, ordenacao);
}
/**
* @param idPerfilAcesso
* @return
* @throws Exception
*/
public boolean existeGrupoVinculadoPerfil(Integer idPerfilAcesso) throws PersistenceException {
List list = new ArrayList();
StringBuilder sql = new StringBuilder();
List parametros = new ArrayList();
sql.append("SELECT * FROM perfilacessogrupo WHERE idPerfil = ?");
parametros.add(idPerfilAcesso);
list = this.execSQL(sql.toString(), parametros.toArray());
return list != null && list.size() > 0;
}
}