package br.com.centralit.citcorpore.negocio; import java.util.Collection; import java.util.HashMap; import java.util.List; import java.util.Map; import javax.servlet.http.HttpServletRequest; import org.apache.commons.lang.StringUtils; import br.com.centralit.citajax.html.DocumentHTML; import br.com.centralit.citcorpore.bean.FluxoServicoDTO; import br.com.centralit.citcorpore.bean.ServicoContratoDTO; import br.com.centralit.citcorpore.integracao.AcordoNivelServicoDao; import br.com.centralit.citcorpore.integracao.AtividadesServicoContratoDao; import br.com.centralit.citcorpore.integracao.FluxoServicoDao; import br.com.centralit.citcorpore.integracao.ResultadosEsperadosDAO; import br.com.centralit.citcorpore.integracao.ServicoContratoDao; import br.com.centralit.citcorpore.integracao.ValorAjusteGlosaDAO; import br.com.centralit.citcorpore.integracao.ValoresServicoContratoDao; import br.com.citframework.dto.IDto; import br.com.citframework.excecao.LogicException; import br.com.citframework.excecao.ServiceException; import br.com.citframework.integracao.TransactionControler; import br.com.citframework.integracao.TransactionControlerImpl; import br.com.citframework.service.CrudServiceImpl; import br.com.citframework.util.UtilDatas; import br.com.citframework.util.UtilI18N; @SuppressWarnings("rawtypes") public class ServicoContratoServiceEjb extends CrudServiceImpl implements ServicoContratoService { private ServicoContratoDao dao; @Override protected ServicoContratoDao getDao() { if (dao == null) { dao = new ServicoContratoDao(); } return dao; } @Override public IDto create(final IDto model) throws ServiceException, LogicException { ServicoContratoDTO servicoContratoDTO = (ServicoContratoDTO) model; final ServicoContratoDao servicoContratoDao = new ServicoContratoDao(); final FluxoServicoDao fluxoServicoDao = new FluxoServicoDao(); final TransactionControler tc = new TransactionControlerImpl(servicoContratoDao.getAliasDB()); try { fluxoServicoDao.setTransactionControler(tc); tc.start(); final List<FluxoServicoDTO> listaFluxo = servicoContratoDTO.getListaFluxo(); servicoContratoDTO = (ServicoContratoDTO) servicoContratoDao.create(servicoContratoDTO); if (listaFluxo != null) { fluxoServicoDao.deleteByIdServicoContrato(servicoContratoDTO.getIdServicoContrato()); for (final FluxoServicoDTO fluxoServicoDTO : listaFluxo) { fluxoServicoDTO.setIdServicoContrato(servicoContratoDTO.getIdServicoContrato()); fluxoServicoDTO.setDeleted(null); fluxoServicoDao.create(fluxoServicoDTO); } } tc.commit(); } catch (final Exception e) { this.rollbackTransaction(tc, e); e.getStackTrace(); } finally { tc.closeQuietly(); } return servicoContratoDTO; } @Override public void update(final IDto model) throws ServiceException, LogicException { final ServicoContratoDTO servicoContratoDTO = (ServicoContratoDTO) model; final ServicoContratoDao servicoContratoDao = new ServicoContratoDao(); final FluxoServicoDao fluxoServicoDao = new FluxoServicoDao(); final TransactionControler tc = new TransactionControlerImpl(servicoContratoDao.getAliasDB()); try { fluxoServicoDao.setTransactionControler(tc); tc.start(); final List<FluxoServicoDTO> listaFluxo = servicoContratoDTO.getListaFluxo(); servicoContratoDao.update(servicoContratoDTO); if (listaFluxo != null) { fluxoServicoDao.deleteByIdServicoContrato(servicoContratoDTO.getIdServicoContrato()); for (final FluxoServicoDTO fluxoServicoDTO : listaFluxo) { fluxoServicoDTO.setIdServicoContrato(servicoContratoDTO.getIdServicoContrato()); fluxoServicoDTO.setDeleted(null); fluxoServicoDao.create(fluxoServicoDTO); } } tc.commit(); } catch (final Exception e) { this.rollbackTransaction(tc, e); e.printStackTrace(); } finally { tc.closeQuietly(); } } @Override public Collection findByIdServico(final Integer parm) throws Exception { try { return this.getDao().findByIdServico(parm); } catch (final Exception e) { throw new ServiceException(e); } } @Override public void deleteByIdServico(final Integer parm) throws Exception { try { this.getDao().deleteByIdServico(parm); } catch (final Exception e) { throw new ServiceException(e); } } @Override public void deletarByIdServicoContrato(final IDto model, final DocumentHTML document) throws ServiceException, Exception { final ServicoContratoDTO servicoContratoDTO = (ServicoContratoDTO) model; final TransactionControler tc = new TransactionControlerImpl(this.getDao().getAliasDB()); final ServicoContratoDao servicoContratoDao = new ServicoContratoDao(); final AcordoNivelServicoDao acordoNivelServicoDao = new AcordoNivelServicoDao(); final AtividadesServicoContratoDao atividadesServicoContratoDao = new AtividadesServicoContratoDao(); final ValoresServicoContratoDao valoresServicoContratoDao = new ValoresServicoContratoDao(); final ResultadosEsperadosDAO resultadosEsperadosDAO = new ResultadosEsperadosDAO(); final ValorAjusteGlosaDAO valorAjusteGlosaDAO = new ValorAjusteGlosaDAO(); try { this.validaUpdate(model); servicoContratoDao.setTransactionControler(tc); acordoNivelServicoDao.setTransactionControler(tc); atividadesServicoContratoDao.setTransactionControler(tc); valoresServicoContratoDao.setTransactionControler(tc); resultadosEsperadosDAO.setTransactionControler(tc); valorAjusteGlosaDAO.setTransactionControler(tc); tc.start(); servicoContratoDTO.setDataFim(UtilDatas.getDataAtual()); valorAjusteGlosaDAO.updateValorAjusteGlosa(servicoContratoDTO.getIdServicoContrato()); resultadosEsperadosDAO.updateResultadosEsperados(servicoContratoDTO.getIdServicoContrato()); valoresServicoContratoDao.updateValoresServicoContrato(servicoContratoDTO.getIdServicoContrato(), servicoContratoDTO.getDataFim()); acordoNivelServicoDao.updateAcordoNivelServico(servicoContratoDTO.getIdServicoContrato(), servicoContratoDTO.getDataFim()); atividadesServicoContratoDao.updateAtividadesServicoContrato(servicoContratoDTO.getIdServicoContrato()); servicoContratoDao.updateServicoContrato(servicoContratoDTO.getIdServicoContrato(), servicoContratoDTO.getDataFim()); tc.commit(); } catch (final Exception e) { this.rollbackTransaction(tc, e); } finally { tc.closeQuietly(); } } @Override public Collection findByIdContrato(final Integer parm) throws Exception { try { return this.getDao().findByIdContrato(parm); } catch (final Exception e) { throw new ServiceException(e); } } @Override public Collection findServicoComNomeByIdContrato(final Integer parm) throws Exception { try { return this.getDao().findServicoComNomeByIdContrato(parm); } catch (final Exception e) { throw new ServiceException(e); } } @Override public Collection findByIdContratoPaginada(final ServicoContratoDTO servicoContratoDTO, final String paginacao, final Integer pagAtual, final Integer pagAtualAux, final Integer totalPag, final Integer quantidadePaginator, final String campoPesquisa) throws Exception { try { return this.getDao().findByIdContratoPaginada(servicoContratoDTO, paginacao, pagAtual, pagAtualAux, totalPag, quantidadePaginator, campoPesquisa); } catch (final Exception e) { throw new ServiceException(e); } } @Override public void deleteByIdContrato(final Integer parm) throws Exception { try { this.getDao().deleteByIdContrato(parm); } catch (final Exception e) { throw new ServiceException(e); } } @Override public ServicoContratoDTO findByIdContratoAndIdServico(final Integer idContrato, final Integer idServico) throws Exception { try { return this.getDao().findByIdContratoAndIdServico(idContrato, idServico); } catch (final Exception e) { throw new ServiceException(e); } } @Override public Collection findByIdContratoDistinct(final Integer idContrato) throws Exception { try { return this.getDao().findByIdContratoDistinct(idContrato); } catch (final Exception e) { throw new ServiceException(e); } } @Override public void setDataFim(final HashMap map) throws Exception { final String idServicoCon = (String) map.get("IDSERVICOCONTRATO"); Integer idServicoContrato = new Integer(0); if (idServicoCon != null && !StringUtils.trim(idServicoCon).isEmpty()) { idServicoContrato = Integer.parseInt(idServicoCon); } try { if (idServicoContrato != null && idServicoContrato != 0) { this.getDao().setDataFim(idServicoContrato); } } catch (final Exception e) { throw new ServiceException(e); } } @Override public Collection listarServicosPorFornecedor(final Integer idFornecedor) throws Exception { try { return this.getDao().findByIdFornecedor(idFornecedor); } catch (final Exception e) { throw new ServiceException(e); } } @Override public boolean validaServicoContrato(final HashMap mapFields) throws Exception { // Pegando valores do par�metro recebido final String idContratoTxt = (String) mapFields.get("IDCONTRATO"); final String idServicoTxt = (String) mapFields.get("IDSERVICO"); Integer idContrato = null; Integer idServico = null; if (idContratoTxt != null && !idContratoTxt.equals("")) { idContrato = Integer.parseInt(idContratoTxt); } if (idServicoTxt != null && !idServicoTxt.equals("")) { idServico = Integer.parseInt(idServicoTxt); } if (idContrato != null && idServico != null) { return this.getDao().validaServicoContrato(idContrato, idServico); } return false; } @Override public Collection findServicoContratoByIdContrato(final Integer idContrato) throws Exception { try { return this.getDao().findServicoContratoByIdContrato(idContrato); } catch (final Exception e) { throw new ServiceException(e); } } @Override public String existeServicoContratoByIdServico(final HashMap mapFields) throws Exception { // Pegando valores do par�metro recebido final String idServicoTxt = (String) mapFields.get("IDSERVICO"); Integer idServico = null; if (idServicoTxt != null && !idServicoTxt.equals("")) { idServico = Integer.parseInt(idServicoTxt); } try { final Collection result = this.getDao().findServicoContratoByIdServico(idServico); if (result == null || result.size() == 0) { return "0"; } else { return "1"; } } catch (final Exception e) { throw new ServiceException(e); } } @Override public ServicoContratoDTO findByIdServicoContrato(final Integer idServico, final Integer idContrato) throws Exception { return this.getDao().findByIdServicoContrato(idServico, idContrato); } @Override public boolean pesquisaServicosVinculados(final DocumentHTML document, final Map map, final HttpServletRequest request) throws Exception { final String idContratoStr = (String) map.get("IDCONTRATO"); /* * Desenvolvedor: Rodrigo Pecci - Data: 03/11/2013 - Hor�rio: 16h20min * Motivo/Coment�rio: Foi adicionada a valida��o para garantir que o id do contrato existe */ if (idContratoStr == null || idContratoStr.equals("")) { document.alert(UtilI18N.internacionaliza(request, "dinamicview.nenhumRegistroSelecionado")); return false; } final Integer idContrato = Integer.parseInt(idContratoStr); final Collection<ServicoContratoDTO> colecaoServicosVinculados = this.getDao().findByIdContrato(idContrato); if (colecaoServicosVinculados == null || colecaoServicosVinculados.isEmpty()) { return true; } else { document.alert(UtilI18N.internacionaliza(request, "dinamicview.existem") + " " + colecaoServicosVinculados.size() + " " + UtilI18N.internacionaliza(request, "dinamicview.servicosvinculados")); return false; } } @Override public ServicoContratoDTO findByIdServicoContrato(final Integer idServicoContrato) throws Exception { return this.getDao().findByIdServicoContrato(idServicoContrato); } @Override public boolean verificaSeExisteSolicitacaoAbertaVinculadoComServico(final Integer idServico, final Integer idContrato) throws Exception { return this.getDao().verificaSeExisteSolicitacaoAbertaVinculadoComServico(idServico, idContrato); } @Override public boolean verificaServicoEstaVinculadoContrato(final Integer idSolicitacaoServico) throws Exception { return this.getDao().verificaServicoEstaVinculadoContrato(idSolicitacaoServico); } @Override public ServicoContratoDTO findByIdSolicitacaoServico(final Integer idSolicitacaoServico) throws Exception { return this.getDao().findByIdSolicitacaoServico(idSolicitacaoServico); } }