package br.com.centralit.citcorpore.integracao;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import br.com.centralit.citcorpore.bean.DadosEmailRegOcorrenciaDTO;
import br.com.centralit.citcorpore.bean.OcorrenciaDTO;
import br.com.citframework.dto.IDto;
import br.com.citframework.excecao.PersistenceException;
import br.com.citframework.integracao.CrudDaoDefaultImpl;
import br.com.citframework.integracao.Field;
import br.com.citframework.util.Constantes;
public class OcorrenciaDao extends CrudDaoDefaultImpl {
private static final String SQL_OCORRENCIA_DEMANDA = "SELECT O.ocorrencia, O.tipoOcorrencia, O.respostaOcorrencia, O.data, E.nome, O.idOcorrencia, O.idDemanda " +
"FROM OCORRENCIAS O " +
" INNER JOIN EMPREGADOS E on E.idEmpregado = O.idEmpregado " +
"where idDemanda = ? order by data";
public OcorrenciaDao() {
super(Constantes.getValue("DATABASE_ALIAS"), null);
}
public Class getBean() {
return OcorrenciaDTO.class;
}
public Collection<Field> getFields() {
Collection<Field> listFields = new ArrayList<>();
listFields.add(new Field("idOcorrencia", "idOcorrencia", true, true, false, false));
listFields.add(new Field("idDemanda", "idDemanda", false, false, false, false));
listFields.add(new Field("ocorrencia", "ocorrencia", false, false, false, false));
listFields.add(new Field("tipoOcorrencia", "tipoOcorrencia", false, false, false, false));
listFields.add(new Field("respostaOcorrencia", "respostaOcorrencia", false, false, false, false));
listFields.add(new Field("data", "data", false, false, false, false));
listFields.add(new Field("idEmpregado", "idEmpregado", false, false, false, false));
return listFields;
}
public String getTableName() {
return "OCORRENCIAS";
}
public Collection find(IDto obj) throws PersistenceException {
return null;
}
public Collection list() throws PersistenceException {
return null;
}
public Collection findByDemanda(Integer idDemanda) throws PersistenceException {
Object[] objs = new Object[] {idDemanda};
String sql = SQL_OCORRENCIA_DEMANDA;
List lista = this.execSQL(sql, objs);
List listRetorno = new ArrayList();
listRetorno.add("ocorrencia");
listRetorno.add("tipoOcorrencia");
listRetorno.add("respostaOcorrencia");
listRetorno.add("data");
listRetorno.add("nomeEmpregado");
listRetorno.add("idOcorrencia");
listRetorno.add("idDemanda");
List result = this.engine.listConvertion(getBean(), lista, listRetorno);
if (result == null || result.size() == 0) return null;
return result;
}
public void updateResposta(IDto obj) throws PersistenceException {
OcorrenciaDTO ocorrencia = (OcorrenciaDTO)obj;
OcorrenciaDTO ocorrenciaUpdate = new OcorrenciaDTO();
ocorrenciaUpdate.setIdOcorrencia(ocorrencia.getIdOcorrencia());
ocorrenciaUpdate.setRespostaOcorrencia(ocorrencia.getRespostaOcorrencia());
super.updateNotNull(ocorrenciaUpdate);
}
public Collection<OcorrenciaDTO> findByIdSolicitacao(Integer idSolicitacao) throws PersistenceException {
List parametro = new ArrayList();
List listRetorno = new ArrayList();
List list = new ArrayList();
StringBuilder sql = new StringBuilder();
sql.append("select ocorrencia from ocorrenciasolicitacao where idsolicitacaoservico = ?");
parametro.add(idSolicitacao);
list = this.execSQL(sql.toString(), parametro.toArray());
listRetorno.add("ocorrencia");
if (list != null && !list.isEmpty()) {
return (Collection<OcorrenciaDTO>) this.listConvertion(getBean(), list, listRetorno);
} else {
return null;
}
}
public OcorrenciaDTO findSiglaGrupoExecutorByIdSolicitacao(Integer idSolicitacao) throws PersistenceException {
List parametro = new ArrayList();
List listRetorno = new ArrayList();
List list = new ArrayList();
StringBuilder sql = new StringBuilder();
sql.append("select sigla from ocorrenciasolicitacao o "
+ "inner join solicitacaoservico ss on o.idsolicitacaoservico = ss.idsolicitacaoservico "
+ "inner join servicocontrato sc on sc.idservicocontrato = ss.idservicocontrato "
+ "inner join grupo g on sc.idgrupoexecutor = g.idgrupo "
+ "where o.idsolicitacaoservico = ?");
parametro.add(idSolicitacao);
list = this.execSQL(sql.toString(), parametro.toArray());
listRetorno.add("sigla");
if (list != null && !list.isEmpty()) {
return (OcorrenciaDTO) (this.listConvertion(getBean(), list, listRetorno)).get(0);
} else {
return null;
}
}
/**
* @param idSolicitacaoServico
* @return
* @throws Exception
*/
@SuppressWarnings({ "unchecked", "rawtypes" })
public DadosEmailRegOcorrenciaDTO obterDadosResponsavelEmailRegOcorrencia(Integer idSolicitacaoServico) throws PersistenceException {
StringBuilder query = new StringBuilder();
query.append("select emp.idempregado,sol.idresponsavel,emp.email, emp.nome, sol.idgrupoatual from solicitacaoservico sol ");
query.append("INNER JOIN empregados emp on emp.idempregado = sol.idresponsavel ");
query.append("where sol.idsolicitacaoservico =? ");
List parametros = new ArrayList<>();
parametros.add(idSolicitacaoServico);
List list = this.execSQL(query.toString(), parametros.toArray());
List listRetorno = new ArrayList();
listRetorno.add("idEmpregado");
listRetorno.add("idResponsavelAtual");
listRetorno.add("email");
listRetorno.add("nome");
listRetorno.add("idGrupoAtual");
if (list != null && !list.isEmpty()) {
return (DadosEmailRegOcorrenciaDTO) (this.listConvertion(DadosEmailRegOcorrenciaDTO.class, list, listRetorno)).get(0);
} else {
return null;
}
}
}