package br.com.centralit.citcorpore.integracao;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import br.com.centralit.citcorpore.bean.AgendaAtvPeriodicasDTO;
import br.com.centralit.citcorpore.bean.AtividadePeriodicaDTO;
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({ "unchecked", "rawtypes" })
public class AtividadePeriodicaDao extends CrudDaoDefaultImpl {
public AtividadePeriodicaDao() {
super(Constantes.getValue("DATABASE_ALIAS"), null);
}
public Collection<Field> getFields() {
Collection<Field> listFields = new ArrayList<>();
listFields.add(new Field("idAtividadePeriodica" ,"idAtividadePeriodica", true, true, false, false));
listFields.add(new Field("idContrato" ,"idContrato", false, false, false, false));
listFields.add(new Field("idProcedimentoTecnico" ,"idProcedimentoTecnico", false, false, false, false));
listFields.add(new Field("idGrupoAtvPeriodica" ,"idGrupoAtvPeriodica", false, false, false, false));
listFields.add(new Field("tituloAtividade" ,"tituloAtividade", false, false, false, false));
listFields.add(new Field("descricao" ,"descricao", false, false, false, false));
listFields.add(new Field("orientacaoTecnica" ,"orientacaoTecnica", false, false, false, false));
listFields.add(new Field("criadoPor" ,"criadoPor", false, false, false, false));
listFields.add(new Field("alteradoPor" ,"alteradoPor", false, false, false, false));
listFields.add(new Field("dataCriacao" ,"dataCriacao", false, false, false, false));
listFields.add(new Field("dataUltAlteracao" ,"dataUltAlteracao", false, false, false, false));
listFields.add(new Field("idSolicitacaoServico" ,"idSolicitacaoServico", false, false, false, false));
listFields.add(new Field("idRequisicaoMudanca" ,"idRequisicaoMudanca", false, false, false, false));
listFields.add(new Field("idProblema" ,"idProblema", false, false, false, false));
listFields.add(new Field("blackout" ,"blackout", false, false, false, false));
listFields.add(new Field("idLiberacao" ,"idRequisicaoLiberacao", false, false, false, false));
listFields.add(new Field("dataFim" ,"dataFim", false, false, false, false));
return listFields;
}
public String getTableName() {
return this.getOwner() + "AtividadePeriodica";
}
public Collection list() throws PersistenceException {
return null;
}
public Class getBean() {
return AtividadePeriodicaDTO.class;
}
public Collection find(IDto arg0) throws PersistenceException {
return null;
}
public Collection findByIdSolicitacaoServico(Integer parm) throws PersistenceException {
List condicao = new ArrayList();
List ordenacao = new ArrayList();
condicao.add(new Condition("idSolicitacaoServico", "=", parm));
ordenacao.add(new Order("dataCriacao"));
return super.findByCondition(condicao, ordenacao);
}
public Collection findByIdRequisicaoMudanca(Integer parm) throws PersistenceException {
List condicao = new ArrayList();
List ordenacao = new ArrayList();
condicao.add(new Condition("idRequisicaoMudanca", "=", parm));
ordenacao.add(new Order("dataCriacao"));
return super.findByCondition(condicao, ordenacao);
}
public Collection findByIdRequisicaoLiberacao(Integer parm) throws PersistenceException {
List condicao = new ArrayList();
List ordenacao = new ArrayList();
condicao.add(new Condition("idRequisicaoLiberacao", "=", parm));
ordenacao.add(new Order("dataCriacao"));
return super.findByCondition(condicao, ordenacao);
}
public Collection findByIdProblema(Integer parm) throws PersistenceException {
List condicao = new ArrayList();
List ordenacao = new ArrayList();
condicao.add(new Condition("idProblema", "=", parm));
condicao.add(new Condition("dataFim", "is", null));
ordenacao.add(new Order("dataCriacao"));
return super.findByCondition(condicao, ordenacao);
}
public Collection findByIdContrato(Integer parm) throws PersistenceException {
List condicao = new ArrayList();
List ordenacao = new ArrayList();
condicao.add(new Condition("idContrato", "=", parm));
ordenacao.add(new Order(""));
return super.findByCondition(condicao, ordenacao);
}
public void deleteByIdContrato(Integer parm) throws PersistenceException {
List condicao = new ArrayList();
condicao.add(new Condition("idContrato", "=", parm));
super.deleteByCondition(condicao);
}
public Collection findByIdProcedimentoTecnico(Integer parm) throws PersistenceException {
List condicao = new ArrayList();
List ordenacao = new ArrayList();
condicao.add(new Condition("idProcedimentoTecnico", "=", parm));
ordenacao.add(new Order(""));
return super.findByCondition(condicao, ordenacao);
}
public void deleteByIdProcedimentoTecnico(Integer parm) throws PersistenceException {
List condicao = new ArrayList();
condicao.add(new Condition("idProcedimentoTecnico", "=", parm));
super.deleteByCondition(condicao);
}
public Collection findByIdGrupoAtvPeriodica(AgendaAtvPeriodicasDTO agendaAtvPeriodicasDTO) throws PersistenceException {
List condicao = new ArrayList();
List ordenacao = new ArrayList();
condicao.add(new Condition("idGrupoAtvPeriodica", "=", agendaAtvPeriodicasDTO.getIdGrupoAtvPeriodica()));
// if (agendaAtvPeriodicasDTO != null && agendaAtvPeriodicasDTO.getIdGrupoPesquisa() != null && agendaAtvPeriodicasDTO.getIdGrupoPesquisa() == 1 && agendaAtvPeriodicasDTO.getIdGrupoAtvPeriodica() != 1) {
// condicao.add(new Condition("idSolicitacaoServico", ">", 0));
// }
ordenacao.add(new Order("tituloAtividade"));
return super.findByCondition(condicao, ordenacao);
}
public Collection<AtividadePeriodicaDTO> listSomenteReqMudanca(AgendaAtvPeriodicasDTO agendaAtvPeriodicasDTO) throws PersistenceException {
StringBuilder sql = new StringBuilder();
List parametro = new ArrayList();
List listRetorno = new ArrayList();
sql.append("select ap.tituloAtividade, ap.descricao, ap.idAtividadePeriodica, ap.idRequisicaoMudanca, ap.criadoPor, ap.idContrato, ");
sql.append(" ap.idGrupoAtvPeriodica, ap.orientacaoTecnica, tm.nomeTipoMudanca, ap.idProcedimentoTecnico, ap.idSolicitacaoServico, ap.idProblema, ap.blackout, ap.idliberacao, ");
sql.append(" ap.dataCriacao, ap.dataFim, ap.dataUltAlteracao, ap.dataInicio ");
sql.append(" from atividadeperiodica ap ");
sql.append(" inner join requisicaomudanca rm on rm.idrequisicaomudanca = ap.idrequisicaomudanca ");
sql.append(" inner join tipomudanca tm on tm.idtipomudanca = rm.idtipomudanca ");
sql.append(" inner join gruporequisicaomudanca grm on rm.idrequisicaomudanca=GRM.idrequisicaomudanca ");
sql.append(" inner join gruposempregados ge on GE.idgrupo = GRM.idgrupo ");
sql.append(" where ap.idGrupoAtvPeriodica = ? and ge.idempregado = ? and grm.datafim is null ");
sql.append(" and ap.idrequisicaomudanca > 0 ");
sql.append(" order by tituloAtividade ");
parametro.add(agendaAtvPeriodicasDTO.getIdGrupoAtvPeriodica());
parametro.add(agendaAtvPeriodicasDTO.getIdEmpregado());
listRetorno.add("tituloAtividade");
listRetorno.add("descricao");
listRetorno.add("idAtividadePeriodica");
listRetorno.add("idRequisicaoMudanca");
listRetorno.add("criadoPor");
listRetorno.add("idContrato");
listRetorno.add("idGrupoAtvPeriodica");
listRetorno.add("orientacaoTecnica");
listRetorno.add("idProcedimentoTecnico");
listRetorno.add("idSolicitacaoServico");
listRetorno.add("idProblema");
listRetorno.add("blackout");
listRetorno.add("idLiberacao");
listRetorno.add("dataCriacao");
listRetorno.add("dataFim");
listRetorno.add("dataUltAlteracao");
listRetorno.add("dataInicio");
List list = execSQL(sql.toString(), parametro.toArray());
if (list != null && !list.isEmpty()) {
Collection<AtividadePeriodicaDTO> listaAgendaAtvPeriodica = this.listConvertion(AtividadePeriodicaDTO.class, list, listRetorno);
return listaAgendaAtvPeriodica;
}
return null;
}
public Collection<AtividadePeriodicaDTO> listAgendamentoVinculados(AgendaAtvPeriodicasDTO agendaAtvPeriodicasDTO) throws PersistenceException {
StringBuilder sql = new StringBuilder();
List parametro = new ArrayList();
List listRetorno = new ArrayList();
sql.append("select ap.tituloAtividade, ap.descricao, ap.idAtividadePeriodica, ap.idRequisicaoMudanca, ap.criadoPor, ap.idContrato, ");
sql.append("ap.idGrupoAtvPeriodica, ap.orientacaoTecnica, ap.idProcedimentoTecnico, ap.idSolicitacaoServico, ap.idProblema, ap.blackout, ap.idliberacao, ");
sql.append("ap.dataCriacao, ap.dataFim, ap.dataUltAlteracao, ap.dataInicio ");
sql.append("from atividadeperiodica ap ");
sql.append("where ap.idGrupoAtvPeriodica = ? ");
if (agendaAtvPeriodicasDTO != null && agendaAtvPeriodicasDTO.getIdGrupoPesquisa() != null && agendaAtvPeriodicasDTO.getIdGrupoPesquisa() == 1) {
sql.append("and ap.idsolicitacaoservico > 0 ");
}
if (agendaAtvPeriodicasDTO != null && agendaAtvPeriodicasDTO.getIdGrupoPesquisa() != null && agendaAtvPeriodicasDTO.getIdGrupoPesquisa() == 2) {
sql.append("and ap.idrequisicaomudanca > 0 ");
}
if (agendaAtvPeriodicasDTO != null && agendaAtvPeriodicasDTO.getIdGrupoPesquisa() != null && agendaAtvPeriodicasDTO.getIdGrupoPesquisa() == 3) {
sql.append("and ap.idliberacao > 0 ");
}
if (agendaAtvPeriodicasDTO != null && agendaAtvPeriodicasDTO.getIdGrupoPesquisa() != null && agendaAtvPeriodicasDTO.getIdGrupoPesquisa() == 4) {
sql.append("and ap.idproblema > 0 ");
}
sql.append(" order by tituloAtividade ");
if(agendaAtvPeriodicasDTO != null){
parametro.add(agendaAtvPeriodicasDTO.getIdGrupoAtvPeriodica());
}
listRetorno.add("tituloAtividade");
listRetorno.add("descricao");
listRetorno.add("idAtividadePeriodica");
listRetorno.add("idRequisicaoMudanca");
listRetorno.add("criadoPor");
listRetorno.add("idContrato");
listRetorno.add("idGrupoAtvPeriodica");
listRetorno.add("orientacaoTecnica");
listRetorno.add("idProcedimentoTecnico");
listRetorno.add("idSolicitacaoServico");
listRetorno.add("idProblema");
listRetorno.add("blackout");
listRetorno.add("idLiberacao");
listRetorno.add("dataCriacao");
listRetorno.add("dataFim");
listRetorno.add("dataUltAlteracao");
listRetorno.add("dataInicio");
List list = execSQL(sql.toString(), parametro.toArray());
if (list != null && !list.isEmpty()) {
Collection<AtividadePeriodicaDTO> listaAgendaAtvPeriodica = this.listConvertion(AtividadePeriodicaDTO.class, list, listRetorno);
return listaAgendaAtvPeriodica;
}
return null;
}
public Collection<AtividadePeriodicaDTO> listAgendamentoSemVinculacao(AgendaAtvPeriodicasDTO agendaAtvPeriodicasDTO) throws PersistenceException {
StringBuilder sql = new StringBuilder();
List parametro = new ArrayList();
List listRetorno = new ArrayList();
sql.append("select ap.tituloAtividade, ap.descricao, ap.idAtividadePeriodica, ap.idRequisicaoMudanca, ap.criadoPor, ap.idContrato, ");
sql.append("ap.idGrupoAtvPeriodica, ap.orientacaoTecnica, ap.idProcedimentoTecnico, ap.idSolicitacaoServico, ap.idProblema, ap.blackout, ap.idliberacao, ");
sql.append("ap.dataCriacao, ap.dataFim, ap.dataUltAlteracao, ap.dataInicio ");
sql.append("from atividadeperiodica ap ");
sql.append("where idrequisicaomudanca is null ");
if (agendaAtvPeriodicasDTO != null && agendaAtvPeriodicasDTO.getIdGrupoPesquisa() != null && agendaAtvPeriodicasDTO.getIdGrupoPesquisa() != 0) {
sql.append("and idsolicitacaoservico is null and idproblema is null and idliberacao is null ");
}
sql.append(" and ap.idGrupoAtvPeriodica = ? ");
if(agendaAtvPeriodicasDTO != null){
parametro.add(agendaAtvPeriodicasDTO.getIdGrupoAtvPeriodica());
}
sql.append(" order by ap.tituloAtividade ");
listRetorno.add("tituloAtividade");
listRetorno.add("descricao");
listRetorno.add("idAtividadePeriodica");
listRetorno.add("idRequisicaoMudanca");
listRetorno.add("criadoPor");
listRetorno.add("idContrato");
listRetorno.add("idGrupoAtvPeriodica");
listRetorno.add("orientacaoTecnica");
listRetorno.add("idProcedimentoTecnico");
listRetorno.add("idSolicitacaoServico");
listRetorno.add("idProblema");
listRetorno.add("blackout");
listRetorno.add("idLiberacao");
listRetorno.add("dataCriacao");
listRetorno.add("dataFim");
listRetorno.add("dataUltAlteracao");
listRetorno.add("dataInicio");
List list = execSQL(sql.toString(), parametro.toArray());
if (list != null && !list.isEmpty()) {
Collection<AtividadePeriodicaDTO> listaAgendaAtvPeriodica = this.listConvertion(AtividadePeriodicaDTO.class, list, listRetorno);
return listaAgendaAtvPeriodica;
}
return null;
}
public void deleteByIdGrupoAtvPeriodica(Integer parm) throws PersistenceException {
List condicao = new ArrayList();
condicao.add(new Condition("idGrupoAtvPeriodica", "=", parm));
super.deleteByCondition(condicao);
}
public Collection findByTituloAtividade(Integer parm) throws PersistenceException {
List condicao = new ArrayList();
List ordenacao = new ArrayList();
condicao.add(new Condition("tituloAtividade", "=", parm));
ordenacao.add(new Order("tituloAtividade"));
return super.findByCondition(condicao, ordenacao);
}
public void deleteByTituloAtividade(Integer parm) throws PersistenceException {
List condicao = new ArrayList();
condicao.add(new Condition("tituloAtividade", "=", parm));
super.deleteByCondition(condicao);
}
/**
* Metodo que verifica se existe um registro com os mesmos dados na base de dados.
*
* @param tituloAtividade - nome da atividade periodica.
* @return Retorna 'true' se existir um registro igual e 'false' caso contrario.
* @throws Exception
*/
public boolean existeDuplicacao(String tituloAtividade, Integer idAtividade) throws PersistenceException {
List condicao = new ArrayList();
List ordenacao = new ArrayList();
condicao.add(new Condition("tituloAtividade", "=", tituloAtividade));
if(idAtividade != null ){
if(idAtividade > 0){
condicao.add(new Condition("idAtividadePeriodica", "<>", idAtividade));
}
}
ordenacao.add(new Order("tituloAtividade"));
List result = (List) super.findByCondition(condicao, ordenacao);
if (result != null && !result.isEmpty()) {
return true;
} else {
return false;
}
}
}