package br.com.centralit.citcorpore.ajaxForms; import java.util.ArrayList; import java.util.Collection; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import br.com.centralit.citajax.html.AjaxFormAction; import br.com.centralit.citajax.html.DocumentHTML; import br.com.centralit.citajax.html.HTMLForm; import br.com.centralit.citajax.html.HTMLSelect; import br.com.centralit.citajax.html.HTMLTable; import br.com.centralit.citcorpore.bean.CidadesDTO; import br.com.centralit.citcorpore.bean.ContratoDTO; import br.com.centralit.citcorpore.bean.EmpregadoDTO; import br.com.centralit.citcorpore.bean.IntegranteViagemDTO; import br.com.centralit.citcorpore.bean.JustificativaSolicitacaoDTO; import br.com.centralit.citcorpore.bean.RequisicaoViagemDTO; import br.com.centralit.citcorpore.bean.UsuarioDTO; import br.com.centralit.citcorpore.negocio.CentroResultadoService; import br.com.centralit.citcorpore.negocio.CidadesService; import br.com.centralit.citcorpore.negocio.ContratoService; import br.com.centralit.citcorpore.negocio.EmpregadoService; import br.com.centralit.citcorpore.negocio.GrupoEmpregadoService; import br.com.centralit.citcorpore.negocio.JustificativaParecerService; import br.com.centralit.citcorpore.negocio.JustificativaSolicitacaoService; import br.com.centralit.citcorpore.negocio.ProjetoService; import br.com.centralit.citcorpore.negocio.RequisicaoViagemService; import br.com.centralit.citcorpore.util.Enumerados.ParametroSistema; import br.com.centralit.citcorpore.util.ParametroUtil; import br.com.centralit.citcorpore.util.WebUtil; import br.com.citframework.excecao.ServiceException; import br.com.citframework.service.ServiceLocator; import br.com.citframework.util.Constantes; import br.com.citframework.util.UtilI18N; /** * @author thays.araujo * */ @SuppressWarnings({ "rawtypes", "unchecked" }) public class RequisicaoViagem extends AjaxFormAction { @Override public void load(DocumentHTML document, HttpServletRequest request, HttpServletResponse response) throws Exception { UsuarioDTO usuario = WebUtil.getUsuario(request); if (usuario == null) { document.alert(UtilI18N.internacionaliza(request, "citcorpore.comum.sessaoExpirada")); document.executeScript("window.location = '" + Constantes.getValue("SERVER_ADDRESS") + request.getContextPath() + "'"); return; } RequisicaoViagemDTO requisicaoViagemDto = (RequisicaoViagemDTO) document.getBean(); this.preencherComboCentroResultado(document, request, response); this.preencherComboProjeto(document, request, response, requisicaoViagemDto); this.preencherComboJustificativa(document, request, response); if (requisicaoViagemDto.getIdSolicitacaoServico() != null) { restore(document, request, response, requisicaoViagemDto); } } public void restore(DocumentHTML document, HttpServletRequest request, HttpServletResponse response, RequisicaoViagemDTO requisicaoViagemDto) throws ServiceException, Exception { RequisicaoViagemService reqViagemService = (RequisicaoViagemService) ServiceLocator.getInstance().getService(RequisicaoViagemService.class, null); if (requisicaoViagemDto.getIdSolicitacaoServico() != null) { requisicaoViagemDto = (RequisicaoViagemDTO) reqViagemService.restore(requisicaoViagemDto); requisicaoViagemDto.setNomeCidadeOrigem(this.recuperaCidade(requisicaoViagemDto.getIdCidadeOrigem())); requisicaoViagemDto.setNomeCidadeDestino(this.recuperaCidade(requisicaoViagemDto.getIdCidadeDestino())); } this.montarGridIntegrateViagem(document, request, response); HTMLForm form = document.getForm("form"); form.clear(); form.setValues(requisicaoViagemDto); } @Override public Class getBeanClass() { return RequisicaoViagemDTO.class; } /** * Preenche a combo de 'Centro Resultado' do formul�rio HTML * * @param document * @param request * @param response * @throws Exception * @author thays.araujo */ public void preencherComboCentroResultado(DocumentHTML document, HttpServletRequest request, HttpServletResponse response) throws Exception { CentroResultadoService centroResultadoService = (CentroResultadoService) ServiceLocator.getInstance().getService(CentroResultadoService.class, WebUtil.getUsuarioSistema(request)); HTMLSelect idCentroCusto = (HTMLSelect) document.getSelectById("idCentroCusto"); //RequisicaoViagemDTO requisicaoViagemDto = (RequisicaoViagemDTO) document.getBean(); idCentroCusto.removeAllOptions(); /* if(request.getSession().getAttribute("idSolicitante") != null){ requisicaoViagemDto.setIdSolicitante((Integer) request.getSession().getAttribute("idSolicitante")); } else { requisicaoViagemDto.setIdSolicitante(0); }*/ idCentroCusto.addOption("", UtilI18N.internacionaliza(request, "citcorpore.comum.selecione")); //Collection colCentroCusto = centroResultadoService.listAtivosVinculados(requisicaoViagemDto.getIdSolicitante(), "Viagem"); Collection colCentroCusto = centroResultadoService.getHierarquiaCentroDeCustoAtivo(false, false, true); if (colCentroCusto != null && !colCentroCusto.isEmpty()) { idCentroCusto.addOptions(colCentroCusto, "idCentroResultado", "nomeHierarquizado", null); } } /** * Preenche a combo de 'Projeto' do formul�rio HTML * * @param document * @param request * @param response * @param requisicaoViagemDto * @throws Exception * @author thays.araujo */ public void preencherComboProjeto(DocumentHTML document, HttpServletRequest request, HttpServletResponse response, RequisicaoViagemDTO requisicaoViagemDto) throws Exception { HTMLSelect idProjeto = (HTMLSelect) document.getSelectById("idProjeto"); idProjeto.removeAllOptions(); idProjeto.addOption("", UtilI18N.internacionaliza(request, "citcorpore.comum.selecione")); if (requisicaoViagemDto.getIdContrato() != null) { ContratoService contratoService = (ContratoService) ServiceLocator.getInstance().getService(ContratoService.class, WebUtil.getUsuarioSistema(request)); ContratoDTO contratoDto = new ContratoDTO(); contratoDto.setIdContrato(requisicaoViagemDto.getIdContrato()); contratoDto = (ContratoDTO) contratoService.restore(contratoDto); if (contratoDto != null) { ProjetoService projetoService = (ProjetoService) ServiceLocator.getInstance().getService(ProjetoService.class, WebUtil.getUsuarioSistema(request)); Collection colProjetos = projetoService.listHierarquia(contratoDto.getIdCliente(), true); if (colProjetos != null && !colProjetos.isEmpty()) idProjeto.addOptions(colProjetos, "idProjeto", "nomeHierarquizado", null); } } } /** * Preenche as combos de 'Cidade Origem' e Cidade Destino. * * @param document * @param request * @param response * @throws Exception * @author thays.araujo */ public void preencherComboCidades(DocumentHTML document, HttpServletRequest request, HttpServletResponse response) throws Exception { CidadesService cidadesService = (CidadesService) ServiceLocator.getInstance().getService(CidadesService.class, null); HTMLSelect comboCidadeOrigem = (HTMLSelect) document.getSelectById("idCidadeOrigem"); HTMLSelect comboCidadeDestino = (HTMLSelect) document.getSelectById("idCidadeDestino"); ArrayList<CidadesDTO> listCidade = (ArrayList) cidadesService.list(); this.inicializaCombo(comboCidadeOrigem, request); this.inicializaCombo(comboCidadeDestino, request); if (listCidade != null) { comboCidadeOrigem.addOptions(listCidade, "idCidade", "nomeCidade", null); comboCidadeDestino.addOptions(listCidade, "idCidade", "nomeCidade", null); } } /** * Preenche combo de 'justificativa solicita��o'. * * @param document * @param request * @param response * @throws Exception * @author thays.araujo */ public void preencherComboJustificativa(DocumentHTML document, HttpServletRequest request, HttpServletResponse response) throws Exception { JustificativaSolicitacaoService justificativaSolicitacaoService = (JustificativaSolicitacaoService) ServiceLocator.getInstance().getService(JustificativaSolicitacaoService.class, null); Collection<JustificativaSolicitacaoDTO> colJustificativas = justificativaSolicitacaoService.listAtivasParaViagem(); HTMLSelect comboJustificativa = (HTMLSelect) document.getSelectById("idMotivoViagem"); document.getSelectById("idMotivoViagem").removeAllOptions(); inicializaCombo(comboJustificativa, request); if (colJustificativas != null) { comboJustificativa.addOptions(colJustificativas, "idJustificativa", "descricaoJustificativa", null); } } /** * Executa uma inicializa��o padr�o para as combos. Basicamente deleta todas as op��es, caso haja, e insere aprimeira linha com o valor "-- Selecione --". * * @param componenteCombo * @param request */ public void inicializaCombo(HTMLSelect componenteCombo, HttpServletRequest request) { componenteCombo.removeAllOptions(); componenteCombo.addOption("", UtilI18N.internacionaliza(request, "citcorpore.comum.selecione")); } /** * Recupera cidade conforme idcidade passado * * @param idCidade * @return * @throws Exception */ public String recuperaCidade(Integer idCidade) throws Exception { CidadesDTO cidadeDto = new CidadesDTO(); CidadesService cidadesService = (CidadesService) ServiceLocator.getInstance().getService(CidadesService.class, null); if (idCidade != null) { cidadeDto = (CidadesDTO) cidadesService.findCidadeUF(idCidade); return cidadeDto.getNomeCidade() + " - " + cidadeDto.getNomeUf(); } return null; } /** * TODO Este metodo esta em desuso, pode ser removido na proxima vers�o */ public void informacoesItemControleFinanceiroPorIntegrateViagem(DocumentHTML document, HttpServletRequest request, HttpServletResponse response) throws ServiceException, Exception { RequisicaoViagemDTO requisicaoViagemDto = (RequisicaoViagemDTO) document.getBean(); RequisicaoViagemService reqViagemService = (RequisicaoViagemService) ServiceLocator.getInstance().getService(RequisicaoViagemService.class, null); Collection<IntegranteViagemDTO> colIntegrantes = reqViagemService.recuperaIntegrantesViagemBySolicitacao(requisicaoViagemDto.getIdSolicitacaoServico()); if (colIntegrantes != null) { HTMLTable tblControleFinaceiro; tblControleFinaceiro = document.getTableById("tblControleFinaceiro"); tblControleFinaceiro.deleteAllRows(); tblControleFinaceiro.addRowsByCollection(colIntegrantes, new String[] { "", "idEmpregado", "nome" }, new String[] { "idEmpregado" }, UtilI18N.internacionaliza(request, "citcorpore.comum.registroJaAdicionado"), new String[] { "gerarImg" }, "addItemIntegrante", null); } } /** * Preenche combo de 'justificativa solicita��o ' para autoziza��o. * * @param document * @param request * @param response * @throws Exception * @author thays.araujo */ public void preencherComboJustificativaAutorizacao(DocumentHTML document, HttpServletRequest request, HttpServletResponse response) throws Exception { JustificativaParecerService justificativaService = (JustificativaParecerService) ServiceLocator.getInstance().getService(JustificativaParecerService.class, WebUtil.getUsuarioSistema(request)); Collection colJustificativas = justificativaService.listAplicaveisRequisicao(); HTMLSelect comboJustificativaAutorizacao = (HTMLSelect) document.getSelectById("idJustificativaAutorizacao"); document.getSelectById("idJustificativaAutorizacao").removeAllOptions(); inicializaCombo(comboJustificativaAutorizacao, request); if (colJustificativas != null) { comboJustificativaAutorizacao.addOptions(colJustificativas, "idJustificativa", "descricaoJustificativa", null); } } /** * Restaura a grid de integrantes * * @param document * @param request * @param response * @throws ServiceException * @throws Exception */ public void montarGridIntegrateViagem(DocumentHTML document, HttpServletRequest request, HttpServletResponse response) throws ServiceException, Exception { RequisicaoViagemDTO requisicaoViagemDto = (RequisicaoViagemDTO) document.getBean(); RequisicaoViagemService reqViagemService = (RequisicaoViagemService) ServiceLocator.getInstance().getService(RequisicaoViagemService.class, null); Collection<IntegranteViagemDTO> colIntegrantes = reqViagemService.recuperaIntegrantesViagemBySolicitacao(requisicaoViagemDto.getIdSolicitacaoServico()); if (colIntegrantes != null) { HTMLTable tblIntegranteViagem; tblIntegranteViagem = document.getTableById("tblIntegranteViagem"); tblIntegranteViagem.deleteAllRows(); tblIntegranteViagem.addRowsByCollection(colIntegrantes, new String[] { "nome", "integranteFuncionario", "respPrestacaoContas", "nomeNaoFuncionario", "" }, null, null, new String[] { "gerarButtonDelete" }, null, null); } } /** * Verifica se o empregado esta no grupo que permite a atribui��o de contas a outro empregado, se sim, habilita a div com os campos para atribui��o, caso contrario esconde a div * * @param document * @param request * @param response * @throws ServiceException * @throws Exception */ public void validaAtribuicao(DocumentHTML document, HttpServletRequest request, HttpServletResponse response) throws ServiceException, Exception { RequisicaoViagemDTO requisicaoViagemDto = (RequisicaoViagemDTO) document.getBean(); Integer idGrupo; if (requisicaoViagemDto != null && requisicaoViagemDto.getIdEmpregado() != null) { try { idGrupo = Integer.parseInt(ParametroUtil.getValor(ParametroSistema.GRUPO_PERMISSAO_DELEGAR_PRESTACAO_VIAGEM)); } catch (Exception e) { document.executeScript("$('#divResponsavelEmpregado').hide();"); return; } if (idGrupo == null) { document.executeScript("$('#divResponsavelEmpregado').hide();"); return; } GrupoEmpregadoService grupoEmpregadoService = (GrupoEmpregadoService) ServiceLocator.getInstance().getService(GrupoEmpregadoService.class, null); if (grupoEmpregadoService.grupoempregado(requisicaoViagemDto.getIdEmpregado(), idGrupo)) document.executeScript("$('#divResponsavelEmpregado').show();"); else document.executeScript("$('#divResponsavelEmpregado').hide();"); } else document.executeScript("$('#divResponsavelEmpregado').hide();"); } /** * Metodo cria noa funcionario na tabela de empregados caso n�o encontre uma referencia no autocomplete * * @param document * @param request * @param response * @throws Exception */ public void createNaoFuncionario(DocumentHTML document, HttpServletRequest request, HttpServletResponse response) throws Exception{ RequisicaoViagemDTO requisicaoViagemDto = (RequisicaoViagemDTO) document.getBean(); EmpregadoDTO empregadoDto = new EmpregadoDTO(); EmpregadoService empregadoService = (EmpregadoService) ServiceLocator.getInstance().getService(EmpregadoService.class, null); empregadoDto.setNome(requisicaoViagemDto.getNomeNaoFuncionario()); empregadoDto.setObservacoes(requisicaoViagemDto.getInfoNaoFuncionario()); empregadoDto.setTipo("N"); empregadoDto.setIdSituacaoFuncional(1); if(requisicaoViagemDto.getIdEmpregado() == null || requisicaoViagemDto.getIdEmpregado().equals("")){ empregadoDto = (EmpregadoDTO) empregadoService.create(empregadoDto); }else{ empregadoDto.setIdEmpregado(requisicaoViagemDto.getIdEmpregado()); empregadoService.update(empregadoDto); document.getElementById("nomeNaoFuncionario").setValue(empregadoDto.getNome()); document.getElementById("nomeNaoFuncionarioAux").setValue(empregadoDto.getNome()); document.getElementById("infoNaoFuncionario").setValue(empregadoDto.getObservacoes()); document.getElementById("infoNaoFuncionarioAux").setValue(empregadoDto.getObservacoes()); } document.getElementById("idEmpregado").setValue(empregadoDto.getIdEmpregado().toString()); document.executeScript("adicionarEmpregado()"); document.executeScript("decodificaTextarea();"); } /** * Restaura as informa��es do n�o funcionario caso tenha informa��es * * @param document * @param request * @param response * @throws Exception */ public void restoreInfNaoFuncionario(DocumentHTML document, HttpServletRequest request, HttpServletResponse response) throws Exception{ RequisicaoViagemDTO requisicaoViagemDto = (RequisicaoViagemDTO) document.getBean(); EmpregadoDTO empregadoDto = new EmpregadoDTO(); EmpregadoService empregadoService = (EmpregadoService) ServiceLocator.getInstance().getService(EmpregadoService.class, null); empregadoDto = (EmpregadoDTO) empregadoService.restoreByIdEmpregado(requisicaoViagemDto.getIdEmpregado()); document.getElementById("infoNaoFuncionario").setValue(empregadoDto.getObservacoes().toString()); document.getElementById("infoNaoFuncionarioAux").setValue(empregadoDto.getObservacoes().toString()); document.executeScript("decodificaTextarea();"); } }