package br.com.centralit.citcorpore.negocio;
import java.sql.Date;
import java.util.Collection;
import javax.servlet.http.HttpServletRequest;
import br.com.centralit.citcorpore.bean.ChecklistQuestionarioDTO;
import br.com.centralit.citcorpore.bean.ContratoQuestionariosDTO;
import br.com.centralit.citcorpore.bean.ControleQuestionariosDTO;
import br.com.centralit.citcorpore.bean.RequisicaoQuestionarioDTO;
import br.com.centralit.citcorpore.bean.SolicitacaoServicoQuestionarioDTO;
import br.com.centralit.citcorpore.integracao.ContratoQuestionariosDao;
import br.com.centralit.citcorpore.integracao.ControleQuestionariosDao;
import br.com.centralit.citcorpore.integracao.RequisicaoQuestionarioDao;
import br.com.centralit.citquestionario.integracao.RespostaItemQuestionarioDao;
import br.com.centralit.citquestionario.negocio.RespostaItemQuestionarioServiceBean;
import br.com.citframework.dto.IDto;
import br.com.citframework.excecao.LogicException;
import br.com.citframework.excecao.ServiceException;
import br.com.citframework.integracao.CrudDAO;
import br.com.citframework.integracao.TransactionControler;
import br.com.citframework.integracao.TransactionControlerImpl;
import br.com.citframework.service.CrudServiceImpl;
import br.com.citframework.util.UtilDatas;
@SuppressWarnings("rawtypes")
public class RequisicaoQuestionarioServiceEjb extends CrudServiceImpl implements RequisicaoQuestionarioService {
private RequisicaoQuestionarioDao dao;
private ContratoQuestionariosDao contratoQuestionariosDao;
@Override
protected RequisicaoQuestionarioDao getDao() {
if (dao == null) {
dao = new RequisicaoQuestionarioDao();
}
return dao;
}
public ContratoQuestionariosDao getContratoQuestionariosDao() {
if (contratoQuestionariosDao == null) {
contratoQuestionariosDao = new ContratoQuestionariosDao();
}
return contratoQuestionariosDao;
}
@Override
public Collection listByIdContratoAndAba(final Integer idContrato, final String aba) throws Exception {
return this.getContratoQuestionariosDao().listByIdContratoAndAba(idContrato, aba);
}
@Override
public Collection listByIdContratoAndAbaOrdemCrescente(final Integer idContrato, final String aba) throws Exception {
return this.getContratoQuestionariosDao().listByIdContratoAndAbaOrdemCrescente(idContrato, aba);
}
@Override
public ContratoQuestionariosDTO getUltimoByIdContratoAndAba(final Integer idContrato, final String aba) throws Exception {
return this.getContratoQuestionariosDao().getUltimoByIdContratoAndAba(idContrato, aba);
}
@Override
public ContratoQuestionariosDTO getUltimoByIdContratoAndAbaAndPeriodo(final Integer idContrato, final String aba, final Date dataInicio, final Date dataFim) throws Exception {
return this.getContratoQuestionariosDao().getUltimoByIdContratoAndAbaAndPeriodo(idContrato, aba, dataInicio, dataFim);
}
@Override
public Collection listByIdContratoAndQuestionario(final Integer idQuestionario, final Integer idContrato) throws Exception {
return this.getContratoQuestionariosDao().listByIdContratoAndQuestionario(idQuestionario, idContrato);
}
@Override
public Collection listByIdContrato(final Integer idContrato) throws Exception {
return this.getContratoQuestionariosDao().listByIdContrato(idContrato);
}
@Override
public Collection listByIdContratoOrderDecrescente(final Integer idContrato) throws Exception {
return this.getContratoQuestionariosDao().listByIdContratoOrderDecrescente(idContrato);
}
@Override
public Collection listByIdContratoOrderIdDecrescente(final Integer idContrato) throws Exception {
return this.getContratoQuestionariosDao().listByIdContratoOrderIdDecrescente(idContrato);
}
@Override
public ContratoQuestionariosDTO getQuantidadeByIdDepEstabAndAba(final Integer idDepartamento, final Integer idEstabelecimento, final Integer idCargo, final String aba)
throws Exception {
return this.getContratoQuestionariosDao().getQuantidadeByIdDepEstabAndAba(idDepartamento, idEstabelecimento, idCargo, aba);
}
@Override
public ContratoQuestionariosDTO getQuantidadeByIdDepEstabAndAbaAndPeriodo(final Integer idDepartamento, final Integer idEstabelecimento, final Integer idCargo,
final String aba, final Date dataInicio, final Date dataFim) throws Exception {
return this.getContratoQuestionariosDao().getQuantidadeByIdDepEstabAndAbaAndPeriodo(idDepartamento, idEstabelecimento, idCargo, aba, dataInicio, dataFim);
}
@Override
public ContratoQuestionariosDTO getQuantidadeByIdDepEstabAndAbaAndPeriodoFinalizados(final Integer idDepartamento, final Integer idEstabelecimento, final Integer idCargo,
final String aba, final Date dataInicio, final Date dataFim) throws Exception {
return this.getContratoQuestionariosDao().getQuantidadeByIdDepEstabAndAbaAndPeriodoFinalizados(idDepartamento, idEstabelecimento, idCargo, aba, dataInicio, dataFim);
}
@Override
public ContratoQuestionariosDTO getQuantidadeByIdDepEstabFuncaoAndAbaAndPeriodo(final Integer idDepartamento, final Integer idEstabelecimento, final Integer idCargo,
final Integer idFuncao, final String aba, final Date dataInicio, final Date dataFim) throws Exception {
return this.getContratoQuestionariosDao().getQuantidadeByIdDepEstabFuncaoAndAbaAndPeriodo(idDepartamento, idEstabelecimento, idCargo, idFuncao, aba, dataInicio, dataFim);
}
@Override
public IDto create(IDto model) throws ServiceException, LogicException {
// Instancia Objeto controlador de transacao
final CrudDAO crudDao = this.getDao();
final ControleQuestionariosDao controleQuestionariosDao = new ControleQuestionariosDao();
final TransactionControler tc = new TransactionControlerImpl(crudDao.getAliasDB());
final SolicitacaoServicoQuestionarioDTO solQuestionariosDTO = (SolicitacaoServicoQuestionarioDTO) model;
final RespostaItemQuestionarioServiceBean respostaItemQuestionarioServiceBean = new RespostaItemQuestionarioServiceBean();
try {
// Faz validacao, caso exista.
this.validaCreate(model);
// Seta o TransactionController para os DAOs
crudDao.setTransactionControler(tc);
controleQuestionariosDao.setTransactionControler(tc);
// Inicia transacao
tc.start();
ControleQuestionariosDTO controleQuestionariosDto = new ControleQuestionariosDTO();
controleQuestionariosDto = (ControleQuestionariosDTO) controleQuestionariosDao.create(controleQuestionariosDto);
solQuestionariosDTO.setIdSolicitacaoQuestionario(controleQuestionariosDto.getIdControleQuestionario());
// Executa operacoes pertinentes ao negocio.
solQuestionariosDTO.setDataHoraGrav(UtilDatas.getDataHoraAtual());
model = crudDao.create(model);
final Integer idIdentificadorResposta = solQuestionariosDTO.getIdSolicitacaoQuestionario();
respostaItemQuestionarioServiceBean.processCollection(tc, solQuestionariosDTO.getColValores(), solQuestionariosDTO.getColAnexos(), idIdentificadorResposta, null);
// Faz commit e fecha a transacao.
tc.commit();
return model;
} catch (final Exception e) {
this.rollbackTransaction(tc, e);
} finally {
tc.closeQuietly();
}
return model;
}
@Override
public void update(final IDto model) throws ServiceException, LogicException {
// Instancia Objeto controlador de transacao
final CrudDAO crudDao = this.getDao();
final TransactionControler tc = new TransactionControlerImpl(crudDao.getAliasDB());
final RespostaItemQuestionarioDao respostaItemDao = new RespostaItemQuestionarioDao();
final ContratoQuestionariosDTO contratoQuestionariosDTO = (ContratoQuestionariosDTO) model;
final RespostaItemQuestionarioServiceBean respostaItemQuestionarioServiceBean = new RespostaItemQuestionarioServiceBean();
try {
// Faz validacao, caso exista.
this.validaUpdate(model);
// Seta o TransactionController para os DAOs
crudDao.setTransactionControler(tc);
respostaItemDao.setTransactionControler(tc);
final Integer idIdentificadorResposta = contratoQuestionariosDTO.getIdContratoQuestionario();
// Inicia transacao
tc.start();
respostaItemDao.deleteByIdIdentificadorResposta(idIdentificadorResposta);
// Executa operacoes pertinentes ao negocio.
contratoQuestionariosDTO.setDatahoragrav(UtilDatas.getDataHoraAtual());
crudDao.update(model);
respostaItemQuestionarioServiceBean.processCollection(tc, contratoQuestionariosDTO.getColValores(), contratoQuestionariosDTO.getColAnexos(), idIdentificadorResposta,
null);
// Faz commit e fecha a transacao.
tc.commit();
} catch (final Exception e) {
this.rollbackTransaction(tc, e);
} finally {
tc.closeQuietly();
}
}
@Override
public void atualizaInformacoesQuestionario(final RequisicaoQuestionarioDTO requisicaoQuestionarioDTO, final HttpServletRequest request) throws Exception {
final ControleQuestionariosDao controleQuestionariosDao = new ControleQuestionariosDao();
final RequisicaoQuestionarioDao requisicaoQuestionarioDao = this.getDao();
final RespostaItemQuestionarioDao respostaItemDao = new RespostaItemQuestionarioDao();
final RespostaItemQuestionarioServiceBean respostaItemQuestionarioServiceBean = new RespostaItemQuestionarioServiceBean();
final TransactionControler tc = new TransactionControlerImpl(requisicaoQuestionarioDao.getAliasDB());
try {
tc.start();
controleQuestionariosDao.setTransactionControler(tc);
requisicaoQuestionarioDao.setTransactionControler(tc);
respostaItemDao.setTransactionControler(tc);
if (requisicaoQuestionarioDTO.getIdRequisicaoQuestionario() != null && requisicaoQuestionarioDTO.getIdRequisicaoQuestionario().intValue() > 0) {
requisicaoQuestionarioDTO.setDataHoraGrav(UtilDatas.getDataHoraAtual());
requisicaoQuestionarioDao.updateNotNull(requisicaoQuestionarioDTO);
respostaItemDao.deleteByIdIdentificadorResposta(requisicaoQuestionarioDTO.getIdRequisicaoQuestionario());
respostaItemQuestionarioServiceBean.processCollection(tc, requisicaoQuestionarioDTO.getColValores(), requisicaoQuestionarioDTO.getColAnexos(),
requisicaoQuestionarioDTO.getIdRequisicaoQuestionario(), request);
} else {
ControleQuestionariosDTO controleQuestionariosDto = new ControleQuestionariosDTO();
controleQuestionariosDto = (ControleQuestionariosDTO) controleQuestionariosDao.create(controleQuestionariosDto);
if (requisicaoQuestionarioDTO.getDataQuestionario() == null) {
requisicaoQuestionarioDTO.setDataQuestionario(UtilDatas.getDataAtual());
}
requisicaoQuestionarioDTO.setSituacao("E");
requisicaoQuestionarioDTO.setIdRequisicaoQuestionario(controleQuestionariosDto.getIdControleQuestionario());
requisicaoQuestionarioDTO.setDataHoraGrav(UtilDatas.getDataHoraAtual());
final Integer idIdentificadorResposta = requisicaoQuestionarioDTO.getIdRequisicaoQuestionario();
respostaItemQuestionarioServiceBean.processCollection(tc, requisicaoQuestionarioDTO.getColValores(), requisicaoQuestionarioDTO.getColAnexos(),
idIdentificadorResposta, request);
requisicaoQuestionarioDao.create(requisicaoQuestionarioDTO);
}
tc.commit();
} catch (final Exception e) {
this.rollbackTransaction(tc, e);
} finally {
tc.closeQuietly();
}
}
@Override
public void updateConteudoImpresso(final Integer idPessQuest, final String conteudoImpresso) throws Exception {
this.getContratoQuestionariosDao().updateConteudoImpresso(idPessQuest, conteudoImpresso);
}
@Override
public Collection listByIdTipoAbaAndTipoRequisicaoAndQuestionario(final ChecklistQuestionarioDTO checklistQuestionarioDTO) throws Exception {
return this.getDao().listByIdTipoAbaAndTipoRequisicaoAndQuestionario(checklistQuestionarioDTO);
}
@Override
public boolean gravaConfirmacao(final Integer idRequisicao, final String confirmacao) {
return this.getDao().gravaConfirmacao(idRequisicao, confirmacao);
}
@Override
public Collection listNaoConfirmados(final Integer id, final Integer tipo) throws Exception {
return this.getDao().listNaoConfirmados(id, tipo);
}
}