package br.com.centralit.citcorpore.negocio; import br.com.centralit.citcorpore.bean.IntegranteViagemDTO; import br.com.centralit.citcorpore.bean.ParecerDTO; import br.com.centralit.citcorpore.bean.PrestacaoContasViagemDTO; import br.com.centralit.citcorpore.bean.RequisicaoViagemDTO; import br.com.centralit.citcorpore.bean.SolicitacaoServicoDTO; import br.com.centralit.citcorpore.bpm.negocio.ExecucaoRequisicaoViagem; import br.com.centralit.citcorpore.integracao.IntegranteViagemDao; import br.com.centralit.citcorpore.integracao.ParecerDao; import br.com.centralit.citcorpore.integracao.PrestacaoContasViagemDao; import br.com.centralit.citcorpore.integracao.RequisicaoViagemDAO; import br.com.centralit.citcorpore.util.Enumerados.ParametroSistema; import br.com.centralit.citcorpore.util.ParametroUtil; import br.com.citframework.dto.IDto; import br.com.citframework.excecao.LogicException; import br.com.citframework.integracao.TransactionControler; import br.com.citframework.util.UtilDatas; import br.com.citframework.util.WebUtil; public class ConferenciaViagemServiceEjb extends ComplemInfSolicitacaoServicoServiceEjb implements ConferenciaViagemService { private PrestacaoContasViagemDao dao; @Override protected PrestacaoContasViagemDao getDao() { if (dao == null) { dao = new PrestacaoContasViagemDao(); } return dao; } @Override public IDto deserializaObjeto(final String serialize) throws Exception { PrestacaoContasViagemDTO prestacaoContasViagemDto = null; if (serialize != null) { prestacaoContasViagemDto = (PrestacaoContasViagemDTO) WebUtil.deserializeObject(PrestacaoContasViagemDTO.class, serialize); } return prestacaoContasViagemDto; } @Override public void validaCreate(final SolicitacaoServicoDTO solicitacaoServicoDto, final IDto model) throws Exception {} @Override public void validaDelete(final SolicitacaoServicoDTO solicitacaoServicoDto, final IDto model) throws Exception {} @Override public void validaUpdate(final SolicitacaoServicoDTO solicitacaoServicoDto, final IDto model) throws Exception {} @Override public IDto create(final TransactionControler tc, final SolicitacaoServicoDTO solicitacaoServicoDto, final IDto model) throws Exception { return null; } @Override public void update(final TransactionControler tc, final SolicitacaoServicoDTO solicitacaoServicoDto, final IDto model) throws Exception { final PrestacaoContasViagemDTO prestacaoContasViagemDto = (PrestacaoContasViagemDTO) model; RequisicaoViagemDTO requisicaoViagemDto = new RequisicaoViagemDTO(); final RequisicaoViagemDAO reqViagemDao = new RequisicaoViagemDAO(); ParecerDTO parecerDto = new ParecerDTO(); final ParecerDao parecerDao = new ParecerDao(); this.getDao().setTransactionControler(tc); parecerDao.setTransactionControler(tc); reqViagemDao.setTransactionControler(tc); try { parecerDto.setAprovado(prestacaoContasViagemDto.getAprovado()); if (prestacaoContasViagemDto.getAprovado().equalsIgnoreCase("N")) { if (prestacaoContasViagemDto.getIdJustificativaAutorizacao() == null) { throw new LogicException(this.i18nMessage("requisicaoViagem.justificativaCampoObrigatorio")); } if (prestacaoContasViagemDto.getComplemJustificativaAutorizacao() == null || prestacaoContasViagemDto.getComplemJustificativaAutorizacao().equalsIgnoreCase("")) { throw new LogicException(this.i18nMessage("rh.informeComplementoJustificativa")); } } parecerDto.setIdJustificativa(prestacaoContasViagemDto.getIdJustificativaAutorizacao()); parecerDto.setIdResponsavel(solicitacaoServicoDto.getUsuarioDto().getIdEmpregado()); // parecerDto.setObservacoes(prestacaoContasViagemDto.getObservacoes()); parecerDto.setComplementoJustificativa(prestacaoContasViagemDto.getComplemJustificativaAutorizacao()); requisicaoViagemDto.setComplemJustificativaAutorizacao(prestacaoContasViagemDto.getComplemJustificativaAutorizacao()); parecerDto.setDataHoraParecer(UtilDatas.getDataHoraAtual()); parecerDto = (ParecerDTO) parecerDao.create(parecerDto); prestacaoContasViagemDto.setIdResponsavel(solicitacaoServicoDto.getUsuarioDto().getIdEmpregado()); requisicaoViagemDto.setIdSolicitacaoServico(solicitacaoServicoDto.getIdSolicitacaoServico()); requisicaoViagemDto = (RequisicaoViagemDTO) reqViagemDao.restore(requisicaoViagemDto); final PrestacaoContasViagemDTO prestacaoAux = (PrestacaoContasViagemDTO) this.getDao().restore(prestacaoContasViagemDto); if (prestacaoAux != null) { prestacaoContasViagemDto.setIdEmpregado(prestacaoAux.getIdEmpregado()); } if (solicitacaoServicoDto.getAcaoFluxo().equalsIgnoreCase("E")) { if (prestacaoContasViagemDto.getAprovado().equalsIgnoreCase("S")) { prestacaoContasViagemDto.setSituacao(PrestacaoContasViagemDTO.APROVADA); requisicaoViagemDto.setEstado(RequisicaoViagemDTO.FINALIZADA); reqViagemDao.update(requisicaoViagemDto); final IntegranteViagemDao integranteViagemDao = new IntegranteViagemDao(); final IntegranteViagemDTO integranteViagemDTO = integranteViagemDao.findByIdSolicitacaoServicoIdTarefa(solicitacaoServicoDto.getIdSolicitacaoServico(), solicitacaoServicoDto.getIdTarefa()); integranteViagemDTO.setEstado(RequisicaoViagemDTO.FINALIZADA); integranteViagemDao.updateNotNull(integranteViagemDTO); } else { final ExecucaoRequisicaoViagem execViagem = new ExecucaoRequisicaoViagem(); try { final Integer idModeloEmail = Integer.parseInt(ParametroUtil.getValor(ParametroSistema.ID_MODELO_EMAIL_PRESTACAO_CONTAS_NAO_APROVADA)); execViagem.enviaEmailNaoAprovado(idModeloEmail, requisicaoViagemDto, prestacaoContasViagemDto, tc); } catch (final Exception e) {} prestacaoContasViagemDto.setSituacao(PrestacaoContasViagemDTO.NAO_APROVADA); if (prestacaoContasViagemDto.getAprovado().equalsIgnoreCase("N")) { prestacaoContasViagemDto.setIdItemTrabalho(null); } requisicaoViagemDto.setEstado(RequisicaoViagemDTO.AGUARDANDO_PRESTACAOCONTAS); reqViagemDao.update(requisicaoViagemDto); final IntegranteViagemDao integranteViagemDao = new IntegranteViagemDao(); final IntegranteViagemDTO integranteViagemDTO = integranteViagemDao.findByIdSolicitacaoServicoIdTarefa(solicitacaoServicoDto.getIdSolicitacaoServico(), solicitacaoServicoDto.getIdTarefa()); integranteViagemDTO.setEstado(RequisicaoViagemDTO.AGUARDANDO_CORRECAO); if (prestacaoContasViagemDto.getAprovado().equalsIgnoreCase("N")) { integranteViagemDTO.setIdTarefa(null); } integranteViagemDao.update(integranteViagemDTO); } } if (parecerDto != null) { prestacaoContasViagemDto.setIdAprovacao(parecerDto.getIdParecer()); } this.getDao().update(prestacaoContasViagemDto); } catch (final Exception e) { this.rollbackTransaction(tc, e); } } @Override public void delete(final TransactionControler tc, final SolicitacaoServicoDTO solicitacaoServicoDto, final IDto model) throws Exception {} }