package br.com.centralit.citcorpore.integracao;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import br.com.centralit.citcorpore.bean.PrestacaoContasViagemDTO;
import br.com.centralit.citcorpore.bean.RequisicaoViagemDTO;
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;
/**
* @author ronnie.lopes
*
*/
@SuppressWarnings({ "rawtypes", "unchecked" })
public class PrestacaoContasViagemDao extends CrudDaoDefaultImpl {
public PrestacaoContasViagemDao() {
super(Constantes.getValue("DATABASE_ALIAS"), null);
}
public Collection<Field> getFields() {
Collection<Field> listFields = new ArrayList<>();
listFields.add(new Field("idprestacaocontasviagem", "idPrestacaoContasViagem", true, true, false, false));
listFields.add(new Field("idresponsavel", "idResponsavel", false, false, false, false));
listFields.add(new Field("idaprovacao", "idAprovacao", false, false, false, false));
listFields.add(new Field("idsolicitacaoservico", "idSolicitacaoServico", false, false, false, false));
listFields.add(new Field("idempregado", "idEmpregado", false, false, false, false));
listFields.add(new Field("datahora", "dataHora", false, false, false, false));
listFields.add(new Field("situacao", "situacao", false, false, false, false));
listFields.add(new Field("iditemtrabalho", "idItemTrabalho", false, false, false, false));
listFields.add(new Field("integrantefuncionario", "integranteFuncionario", false, false, false, false));
// TODO Este campo esta em desuso, pode ser removido na proxima vers�o
listFields.add(new Field("nomenaofuncionario", "nomeNaoFuncionario", false, false, false, false));
return listFields;
}
public String getTableName() {
return "prestacaocontasviagem";
}
public Collection find(IDto obj) throws PersistenceException {
List ordem = new ArrayList();
ordem.add(new Order("idPrestacaoContasViagem"));
return super.find(obj, ordem);
}
public Collection list() throws PersistenceException {
List list = new ArrayList();
list.add(new Order("idPrestacaoContasViagem"));
return super.list(list);
}
public Class getBean() {
return PrestacaoContasViagemDTO.class;
}
/**
* Retorna um objeto PrestacaoContasViagemDTO por SolicitacaoServico e Empregado
*
* @param idSolicitacaoServico
* @param idEmpregado
* @return
* @throws Exception
*/
public PrestacaoContasViagemDTO findBySolicitacaoAndEmpregado(Integer idSolicitacaoServico, Integer idEmpregado) throws PersistenceException {
List condicao = new ArrayList();
condicao.add(new Condition("idSolicitacaoServico", "=", idSolicitacaoServico));
condicao.add(new Condition(Condition.AND ,"idEmpregado", "=", idEmpregado));
List result = (List) super.findByCondition(condicao, null);
if(result != null){
return (PrestacaoContasViagemDTO) result.get(0);
}
return null;
}
/**
* TODO Este metodo esta em desuso, pode ser removido na proxima vers�o
*/
public PrestacaoContasViagemDTO findBySolicitacaoAndNomeNaoFuncionario(Integer idSolicitacaoServico, String nomeNaoFunc) throws PersistenceException {
List condicao = new ArrayList();
condicao.add(new Condition("idSolicitacaoServico", "=", idSolicitacaoServico));
condicao.add(new Condition(Condition.AND ,"nomeNaoFuncionario", "=", nomeNaoFunc));
List result = (List) super.findByCondition(condicao, null);
if(result != null){
return (PrestacaoContasViagemDTO) result.get(0);
}
return null;
}
/**
* TODO Este metodo esta em desuso, pode ser removido na proxima vers�o
*/
public List findBySolicitacao(Integer idSolicitacaoServico, Integer idEmpregado) throws PersistenceException {
List condicao = new ArrayList();
condicao.add(new Condition("idSolicitacaoServico", "=", idSolicitacaoServico));
return (List) super.findByCondition(condicao, null);
}
/**
* Retorna uma lista de presta��o de contas conforme idsolicitacaoservico passados
*
* @param idSolicitacaoServico
* @return
* @throws Exception
*/
public List findBySolicitacao(Integer idSolicitacaoServico) throws PersistenceException {
List condicao = new ArrayList();
condicao.add(new Condition("idSolicitacaoServico", "=", idSolicitacaoServico));
condicao.add(new Condition("idItemTrabalho", "is", null));
return (List) super.findByCondition(condicao, null);
}
/**
* TODO Este metodo esta em desuso, pode ser removido na proxima vers�o
*/
public Collection findBySolicitacaoAndTafera(Integer idSolicitacaoServico) throws PersistenceException {
List condicao = new ArrayList();
List ordenacao = new ArrayList();
condicao.add(new Condition("idSolicitacaoServico", "=", idSolicitacaoServico));
condicao.add(new Condition("situacao", "=", PrestacaoContasViagemDTO.AGUARDANDO_CONFERENCIA));
condicao.add(new Condition("idItemTrabalho", "IS", null));
ordenacao.add(new Order("idPrestacaoContasViagem"));
return super.findByCondition(condicao, ordenacao);
}
/**
* TODO Este metodo esta em desuso, pode ser removido na proxima vers�o
*/
public Collection findBySolicitacaoAndConferencia(Integer idSolicitacaoServico) throws PersistenceException {
List condicao = new ArrayList();
List ordenacao = new ArrayList();
condicao.add(new Condition("idSolicitacaoServico", "=", idSolicitacaoServico));
condicao.add(new Condition("situacao", "=", PrestacaoContasViagemDTO.AGUARDANDO_CONFERENCIA));
condicao.add(new Condition("idItemTrabalho", "is", null));
ordenacao.add(new Order("idPrestacaoContasViagem"));
return super.findByCondition(condicao, ordenacao);
}
/**
* Verifica se a requisi��o esta na etapa de presta��o de contas
*
* @param requisicaoViagemDto
* @return
* @throws Exception
*/
public boolean isEstadoPrestacaoContas(RequisicaoViagemDTO requisicaoViagemDto) throws PersistenceException {
List result = null;
if(requisicaoViagemDto.getEstado().equalsIgnoreCase(RequisicaoViagemDTO.AGUARDANDO_PRESTACAOCONTAS)){
if(requisicaoViagemDto.getTarefaIniciada() != null && requisicaoViagemDto.getTarefaIniciada().equalsIgnoreCase("S"))
return false;
List condicao = new ArrayList();
List ordenacao = new ArrayList();
condicao.add(new Condition("idSolicitacaoServico", "=", requisicaoViagemDto.getIdSolicitacaoServico()));
condicao.add(new Condition("idItemTrabalho", "IS", null));
ordenacao.add(new Order("idPrestacaoContasViagem"));
result = (List) super.findByCondition(condicao, ordenacao);
if(result == null)
return true;
}
return false;
}
/**
* TODO Este metodo esta em desuso, pode ser removido na proxima vers�o
*/
public boolean isEstadoAutorizacao(RequisicaoViagemDTO requisicaoViagemDto) throws PersistenceException {
List result = null;
if(requisicaoViagemDto.getEstado().equalsIgnoreCase(RequisicaoViagemDTO.AGUARDANDO_APROVACAO)){
if(requisicaoViagemDto.getTarefaIniciada() != null && requisicaoViagemDto.getTarefaIniciada().equalsIgnoreCase("S"))
return false;
List condicao = new ArrayList();
List ordenacao = new ArrayList();
condicao.add(new Condition("idSolicitacaoServico", "=", requisicaoViagemDto.getIdSolicitacaoServico()));
condicao.add(new Condition("idItemTrabalho", "IS", null));
ordenacao.add(new Order("idPrestacaoContasViagem"));
result = (List) super.findByCondition(condicao, ordenacao);
if(result == null)
return true;
}
return false;
}
/**
* TODO Este metodo esta em desuso, pode ser removido na proxima vers�o
*/
public boolean isViagemRemarcado(RequisicaoViagemDTO requisicaoViagemDto) throws PersistenceException {
List result = null;
if(requisicaoViagemDto.getEstado().equalsIgnoreCase(RequisicaoViagemDTO.REMARCADO)){
List condicao = new ArrayList();
List ordenacao = new ArrayList();
condicao.add(new Condition("idSolicitacaoServico", "=", requisicaoViagemDto.getIdSolicitacaoServico()));
condicao.add(new Condition("idItemTrabalho", "IS", null));
ordenacao.add(new Order("idPrestacaoContasViagem"));
result = (List) super.findByCondition(condicao, ordenacao);
if(result == null)
return true;
}
return false;
}
/**
* TODO Este metodo esta em desuso, pode ser removido na proxima vers�o
*/
public Collection findByCorrigirAndSolicitacao(Integer idSolicitacaoServico) throws PersistenceException {
List condicao = new ArrayList();
List ordenacao = new ArrayList();
condicao.add(new Condition("idSolicitacaoServico", "=", idSolicitacaoServico));
condicao.add(new Condition("situacao", "=", PrestacaoContasViagemDTO.EM_CORRECAO));
condicao.add(new Condition("idItemTrabalho", "is", null));
ordenacao.add(new Order("idPrestacaoContasViagem"));
return super.findByCondition(condicao, ordenacao);
}
/**
* TODO Este metodo esta em desuso, pode ser removido na proxima vers�o
*/
public Collection findBySolicitacaoEmConferencia(Integer idSolicitacaoServico) throws PersistenceException {
List condicao = new ArrayList();
List ordenacao = new ArrayList();
condicao.add(new Condition("idSolicitacaoServico", "=", idSolicitacaoServico));
condicao.add(new Condition("situacao", "=", PrestacaoContasViagemDTO.EM_CONFERENCIA));
condicao.add(new Condition("idItemTrabalho", "is not", null));
ordenacao.add(new Order("idPrestacaoContasViagem"));
return super.findByCondition(condicao, ordenacao);
}
/**
* TODO Este metodo esta em desuso, pode ser removido na proxima vers�o
*/
public PrestacaoContasViagemDTO findBySolicitacaoAndTarefa(Integer idSolicitacaoServico, Integer idTarefa) throws PersistenceException {
List condicao = new ArrayList();
List ordenacao = new ArrayList();
List result = new ArrayList();
condicao.add(new Condition("idSolicitacaoServico", "=", idSolicitacaoServico));
condicao.add(new Condition("idItemTrabalho", "=", idTarefa));
result = (List) findByCondition(condicao, ordenacao);
if(result != null)
return (PrestacaoContasViagemDTO) result.get(0);
else
return null;
}
/**
* TODO Este metodo esta em desuso, pode ser removido na proxima vers�o
*/
public PrestacaoContasViagemDTO findNaoAprovados(Integer idSolicitacaoServico, Integer idTarefa) throws PersistenceException {
List condicao = new ArrayList();
List ordenacao = new ArrayList();
List result = new ArrayList();
condicao.add(new Condition("idSolicitacaoServico", "=", idSolicitacaoServico));
condicao.add(new Condition("idItemTrabalho", "is", null));
condicao.add(new Condition("situacao", "=", PrestacaoContasViagemDTO.EM_CORRECAO));
result = (List) findByCondition(condicao, ordenacao);
if(result != null){
return (PrestacaoContasViagemDTO) result.get(0);
}
return null;
}
/**
* Recupera a presta��o de contas conforme idtarefa e idsolicitacaoservico passados
*
* @param idTarefa
* @param idSolicitacaoServico
* @return
* @throws Exception
*/
public PrestacaoContasViagemDTO findByTarefaAndSolicitacao(Integer idTarefa, Integer idSolicitacaoServico) throws PersistenceException {
List condicao = new ArrayList();
List ordenacao = new ArrayList();
List result = new ArrayList();
condicao.add(new Condition("idSolicitacaoServico", "=", idSolicitacaoServico));
condicao.add(new Condition("idItemTrabalho", "=", idTarefa));
ordenacao.add(new Order("idPrestacaoContasViagem"));
result = (List) super.findByCondition(condicao, ordenacao);
if(result != null)
return (PrestacaoContasViagemDTO) result.get(0);
else
return null;
}
/**
* TODO Este metodo esta em desuso, pode ser removido na proxima vers�o
*/
public boolean verificaSeTodasPrestacaoAprovadas(Integer idSolicitacao) throws PersistenceException {
IntegranteViagemDao integrantesDao = new IntegranteViagemDao();
Integer totalIntegrantes = integrantesDao.retornaQtdeIntegrantes(idSolicitacao);
Collection<PrestacaoContasViagemDTO> colPrestacao = this.findBySolicitacao(idSolicitacao, null);
if(colPrestacao != null){
if(colPrestacao.size() != totalIntegrantes)
return false;
for(PrestacaoContasViagemDTO prestacaoDto : colPrestacao){
if(!prestacaoDto.getSituacao().equalsIgnoreCase(PrestacaoContasViagemDTO.APROVADA)){
return false;
}
}
return true;
}
return false;
}
/**
* Retorna uma cole��o de presta��o de contas que esta na etapa de conferencia
*
* @param idSolicitacaoServico
* @return
* @throws Exception
*/
public Collection findBySolicitacaoAndTaferaConferencia(Integer idSolicitacaoServico) throws PersistenceException {
List condicao = new ArrayList();
List ordenacao = new ArrayList();
condicao.add(new Condition("idSolicitacaoServico", "=", idSolicitacaoServico));
condicao.add(new Condition("situacao", "=", PrestacaoContasViagemDTO.AGUARDANDO_CONFERENCIA));
condicao.add(new Condition("idItemTrabalho", "IS", null));
ordenacao.add(new Order("idPrestacaoContasViagem"));
return super.findByCondition(condicao, ordenacao);
}
/**
* TODO Este metodo esta em desuso, pode ser removido na proxima vers�o
*/
public Collection findBySolicitacaoAndTaferaCorrecao(Integer idSolicitacaoServico) throws PersistenceException {
List condicao = new ArrayList();
List ordenacao = new ArrayList();
condicao.add(new Condition("idSolicitacaoServico", "=", idSolicitacaoServico));
condicao.add(new Condition("situacao", "=", PrestacaoContasViagemDTO.EM_CORRECAO));
condicao.add(new Condition("idItemTrabalho", "IS", null));
ordenacao.add(new Order("idPrestacaoContasViagem"));
return super.findByCondition(condicao, ordenacao);
}
/**
* TODO Este metodo esta em desuso, pode ser removido na proxima vers�o
*/
public Collection findBySolicitacaoEmpregadoSeCorrecao(Integer idSolicitacaoServico, Integer idEmpregado) throws PersistenceException {
List condicao = new ArrayList();
List ordenacao = new ArrayList();
condicao.add(new Condition("idSolicitacaoServico", "=", idSolicitacaoServico));
condicao.add(new Condition("situacao", "=", PrestacaoContasViagemDTO.EM_CORRECAO));
condicao.add(new Condition("idEmpregado", "=", idEmpregado));
ordenacao.add(new Order("idPrestacaoContasViagem"));
return super.findByCondition(condicao, ordenacao);
}
/**
* Retorna uma lista de presta��o de contas conforme idtarefa passados
*
* @param idTarefa
* @return
* @throws Exception
*/
public Collection findByTarefa(Integer idTarefa) throws PersistenceException {
List condicao = new ArrayList();
List ordenacao = new ArrayList();
condicao.add(new Condition("idItemTrabalho", "=", idTarefa));
ordenacao.add(new Order("idPrestacaoContasViagem"));
return super.findByCondition(condicao, ordenacao);
}
/**
* Retorna uma lista de presta��o de contas conforme idsolicitacaoservico e situacao passados, mas que n�o tenha iditemtrabalho associado a ele
*
* @param idSolicitacaoServico
* @param situacao
* @return
* @throws Exception
*/
public Collection findBySituacaoAndNull(Integer idSolicitacaoServico, String situacao) throws PersistenceException {
List condicao = new ArrayList();
List ordenacao = new ArrayList();
condicao.add(new Condition("idSolicitacaoServico", "=", idSolicitacaoServico));
condicao.add(new Condition("situacao", "=", situacao));
condicao.add(new Condition("idItemTrabalho", "is", null));
ordenacao.add(new Order("idPrestacaoContasViagem"));
return super.findByCondition(condicao, ordenacao);
}
/**
* TODO Este metodo esta em desuso, pode ser removido na proxima vers�o
*/
public Collection findBySituacaoAndNotNull(Integer idSolicitacaoServico, String situacao) throws PersistenceException {
List condicao = new ArrayList();
List ordenacao = new ArrayList();
condicao.add(new Condition("idSolicitacaoServico", "=", idSolicitacaoServico));
condicao.add(new Condition("situacao", "=", situacao));
condicao.add(new Condition("idItemTrabalho", "is not", null));
ordenacao.add(new Order("idPrestacaoContasViagem"));
return super.findByCondition(condicao, ordenacao);
}
/**
* Retorna uma lista de presta��o de contas conforme idsolicitacaoservico e situacao passados
*
* @param idSolicitacaoServico
* @param situacao
* @return
* @throws Exception
*/
public Collection findBySituacao(Integer idSolicitacaoServico, String situacao) throws PersistenceException {
List condicao = new ArrayList();
List ordenacao = new ArrayList();
condicao.add(new Condition("idSolicitacaoServico", "=", idSolicitacaoServico));
condicao.add(new Condition("situacao", "=", situacao));
ordenacao.add(new Order("idPrestacaoContasViagem"));
return super.findByCondition(condicao, ordenacao);
}
}