package br.com.centralit.citcorpore.integracao;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import br.com.centralit.bpm.dto.PermissoesFluxoDTO;
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;
@SuppressWarnings({ "rawtypes", "unchecked" })
public class PermissoesFluxoDao extends CrudDaoDefaultImpl {
public PermissoesFluxoDao() {
super(Constantes.getValue("DATABASE_ALIAS"), null);
}
public Collection<Field> getFields() {
Collection<Field> listFields = new ArrayList<>();
listFields.add(new Field("idTipoFluxo", "idTipoFluxo", true, false, false, false));
listFields.add(new Field("idGrupo", "idGrupo", true, false, false, false));
listFields.add(new Field("criar", "criar", false, false, false, false));
listFields.add(new Field("executar", "executar", false, false, false, false));
listFields.add(new Field("delegar", "delegar", false, false, false, false));
listFields.add(new Field("suspender", "suspender", false, false, false, false));
listFields.add(new Field("reativar", "reativar", false, false, false, false));
listFields.add(new Field("alterarsla", "alterarSLA", false, false, false, false));
listFields.add(new Field("reabrir", "reabrir", false, false, false, false));
listFields.add(new Field("cancelar", "cancelar", false, false, false, false));
return listFields;
}
public String getTableName() {
return this.getOwner() + "PermissoesFluxo";
}
public Collection list() throws PersistenceException {
return null;
}
public Class getBean() {
return PermissoesFluxoDTO.class;
}
public Collection find(IDto arg0) throws PersistenceException {
return null;
}
public Collection findByIdTipoFluxo(Integer parm) throws PersistenceException {
List condicao = new ArrayList();
List ordenacao = new ArrayList();
condicao.add(new Condition("idTipoFluxo", "=", parm));
ordenacao.add(new Order("idGrupo"));
return super.findByCondition(condicao, ordenacao);
}
public void deleteByIdTipoFluxo(Integer parm) throws PersistenceException {
List condicao = new ArrayList();
condicao.add(new Condition("idTipoFluxo", "=", parm));
super.deleteByCondition(condicao);
}
public List<PermissoesFluxoDTO> findByIdFluxoAndIdUsuario(Integer idUsuario, Integer idItemtrabalho) throws PersistenceException {
List param = new ArrayList();
List list = new ArrayList();
StringBuilder sql = new StringBuilder();
sql.append("select distinct tipo.idTipoFluxo, ");
sql.append(" perm.idGrupo, ");
sql.append(" criar, ");
sql.append(" executar, ");
sql.append(" delegar, ");
sql.append(" suspender, ");
sql.append(" reativar, ");
sql.append(" alterarSLA, ");
sql.append(" reabrir, ");
sql.append(" cancelar from bpm_tipofluxo tipo ");
sql.append(" INNER JOIN bpm_fluxo flx on tipo.idtipofluxo = flx.idtipofluxo ");
sql.append(" INNER JOIN permissoesFluxo perm on tipo.idtipofluxo = perm.idtipofluxo ");
sql.append(" INNER JOIN gruposempregados gremp ON perm.idgrupo = gremp.idgrupo ");
sql.append(" INNER JOIN empregados emp ON emp.idempregado = gremp.idempregado ");
sql.append(" INNER JOIN usuario usu ON usu.idempregado = emp.idempregado ");
sql.append(" INNER JOIN bpm_instanciafluxo inst ON flx.idfluxo = inst.idfluxo ");
sql.append(" INNER JOIN bpm_itemtrabalhofluxo item ON item.idinstancia = inst.idinstancia ");
sql.append("where item.iditemtrabalho = ? and usu.idusuario = ? ");
param.add(idItemtrabalho);
param.add(idUsuario);
list = this.execSQL(sql.toString(), param.toArray());
if (list != null && !list.isEmpty()) {
return (List<PermissoesFluxoDTO>) this.listConvertion(getBean(), list, this.getListRetorno());
} else {
return null;
}
}
public List getListRetorno(){
List listRetorno = new ArrayList();
listRetorno.add("idTipoFluxo");
listRetorno.add("idGrupo");
listRetorno.add("criar");
listRetorno.add("executar");
listRetorno.add("delegar");
listRetorno.add("suspender");
listRetorno.add("reativar");
listRetorno.add("alterarSLA");
listRetorno.add("reabrir");
listRetorno.add("cancelar");
return listRetorno;
}
public Collection findByIdGrupo(Integer parm) throws PersistenceException {
String sql = "SELECT pf.idTipoFluxo, idGrupo, criar, executar, delegar, suspender, reativar, alterarsla, reabrir, cancelar FROM "+ getTableName() + " pf JOIN bpm_tipofluxo tf ON pf.idtipofluxo = tf.idtipofluxo WHERE idgrupo = ? ORDER BY pf.idtipofluxo, criar, executar, delegar, suspender";
List param = new ArrayList();
List listRetorno = new ArrayList();
List list = new ArrayList();
param.add(parm);
listRetorno.add("idTipoFluxo");
listRetorno.add("idGrupo");
listRetorno.add("criar");
listRetorno.add("executar");
listRetorno.add("delegar");
listRetorno.add("suspender");
listRetorno.add("reativar");
listRetorno.add("alterarSLA");
listRetorno.add("reabrir");
listRetorno.add("cancelar");
list = this.execSQL(sql.toString(), param.toArray());
if (list != null && !list.isEmpty()) {
return (List<PermissoesFluxoDTO>) this.listConvertion(getBean(), list, listRetorno);
} else {
return null;
}
/*List condicao = new ArrayList();
List ordenacao = new ArrayList();
condicao.add(new Condition("idGrupo", "=", parm));
ordenacao.add(new Order("idTipoFluxo"));
ordenacao.add(new Order("criar"));
ordenacao.add(new Order("executar"));
ordenacao.add(new Order("delegar"));
ordenacao.add(new Order("suspender"));
return super.findByCondition(condicao, ordenacao);*/
}
public void deleteByIdGrupo(Integer parm) throws PersistenceException {
List condicao = new ArrayList();
condicao.add(new Condition("idGrupo", "=", parm));
super.deleteByCondition(condicao);
}
@SuppressWarnings("unused")
public boolean permissaoGrupoExecutor(Integer idTipoMudanca, Integer idGrupoExecutor) throws PersistenceException {
StringBuilder sql = new StringBuilder();
boolean resultado = false;
List parametro = new ArrayList();
parametro.add(idGrupoExecutor);
parametro.add(idTipoMudanca);
sql.append("SELECT pf.idtipofluxo ");
sql.append(" FROM permissoesFluxo pf ");
sql.append(" INNER JOIN tipomudanca tm ON tm.idtipofluxo = pf.idtipofluxo ");
sql.append(" INNER JOIN bpm_tipofluxo tf ON tf.idtipofluxo = tm.idtipofluxo ");
sql.append(" where pf.idgrupo = ? ");
sql.append(" AND tm.idtipomudanca = ? ");
sql.append(" AND pf.criar = 'S' ");
List result = null;
result = this.execSQL(sql.toString(), parametro.toArray());
if (result == null || result.size() <= 0) {
resultado = false;
}else{
resultado = true;
}
return resultado;
}
@SuppressWarnings("unused")
public boolean permissaoGrupoExecutorLiberacao(Integer idTipoMudanca, Integer idGrupoExecutor) throws PersistenceException {
StringBuilder sql = new StringBuilder();
boolean resultado = false;
List parametro = new ArrayList();
parametro.add(idGrupoExecutor);
parametro.add(idTipoMudanca);
sql.append("SELECT pf.idtipofluxo ");
sql.append(" FROM permissoesFluxo pf ");
sql.append(" INNER JOIN tipoliberacao tl ON tl.idtipofluxo = pf.idtipofluxo ");
sql.append(" INNER JOIN bpm_tipofluxo tf ON tf.idtipofluxo = tl.idtipofluxo ");
sql.append(" where pf.idgrupo = ? ");
sql.append(" AND tl.idtipoliberacao = ? ");
sql.append(" AND pf.criar = 'S' ");
List result = null;
result = this.execSQL(sql.toString(), parametro.toArray());
if (result == null || result.size() <= 0) {
resultado = false;
}else{
resultado = true;
}
return resultado;
}
@SuppressWarnings("unused")
public boolean permissaoGrupoExecutorProblema(Integer idCategoriaProblema, Integer idGrupoExecutor) throws PersistenceException {
StringBuilder sql = new StringBuilder();
boolean resultado = false;
List parametro = new ArrayList();
parametro.add(idGrupoExecutor);
parametro.add(idCategoriaProblema);
sql.append("SELECT pf.idtipofluxo ");
sql.append(" FROM permissoesFluxo pf ");
sql.append(" INNER JOIN categoriaproblema tl ON tl.idtipofluxo = pf.idtipofluxo ");
sql.append(" INNER JOIN bpm_tipofluxo tf ON tf.idtipofluxo = tl.idtipofluxo ");
sql.append(" where pf.idgrupo = ? ");
sql.append(" AND tl.idcategoriaproblema = ? ");
sql.append(" AND pf.criar = 'S' ");
List result = null;
result = this.execSQL(sql.toString(), parametro.toArray());
if (result == null || result.size() <= 0) {
resultado = false;
}else{
resultado = true;
}
return resultado;
}
public PermissoesFluxoDTO permissaoGrupoCancelar(Integer idGrupo, Integer idTipoFluxo) throws PersistenceException{
StringBuilder sql = new StringBuilder();
List parametro = new ArrayList();
List listRetorno = new ArrayList();
List lista = new ArrayList();
sql.append("select cancelar from permissoesfluxo where idgrupo = ? and idtipofluxo = ?");
parametro.add(idGrupo);
parametro.add(idTipoFluxo);
lista = this.execSQL(sql.toString(), parametro.toArray());
listRetorno.add("cancelar");
try {
List<PermissoesFluxoDTO> resultado = this.listConvertion(getBean(), lista, listRetorno);
return resultado.get(0);
} catch (Exception e) {
return null;
}
}
public PermissoesFluxoDTO permissaoGrupoCriar(Integer idGrupo, Integer idTipoFluxo) throws PersistenceException{
StringBuilder sql = new StringBuilder();
List parametro = new ArrayList();
List listRetorno = new ArrayList();
List lista = new ArrayList();
sql.append("select criar from permissoesfluxo where idgrupo = ? and idtipofluxo = ?");
parametro.add(idGrupo);
parametro.add(idTipoFluxo);
lista = this.execSQL(sql.toString(), parametro.toArray());
listRetorno.add("criar");
try {
List<PermissoesFluxoDTO> resultado = this.listConvertion(getBean(), lista, listRetorno);
return resultado.get(0);
} catch (Exception e) {
return null;
}
}
@SuppressWarnings("unused")
public boolean permissaoGrupoExecutorLiberacaoServico(Integer idGrupoExecutor, Integer idTipoFluxo) throws PersistenceException {
StringBuilder sql = new StringBuilder();
boolean resultado = false;
List parametro = new ArrayList();
parametro.add(idGrupoExecutor);
parametro.add(idTipoFluxo);
sql.append("SELECT pf.idtipofluxo ");
sql.append(" FROM permissoesFluxo pf ");
sql.append(" where pf.idgrupo = ? ");
sql.append(" AND idtipofluxo = ? ");
sql.append(" AND criar = 'S' ");
List result = null;
result = this.execSQL(sql.toString(), parametro.toArray());
if (result == null || result.size() <= 0) {
resultado = false;
}else{
resultado = true;
}
return resultado;
}
}