package gcom.gui.atendimentopublico.registroatendimento; import gcom.atendimentopublico.registroatendimento.RegistroAtendimento; import gcom.fachada.Fachada; import gcom.gui.ActionServletException; import gcom.gui.GcomAction; import gcom.seguranca.acesso.usuario.Usuario; import gcom.util.ConstantesSistema; import gcom.util.Util; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import org.apache.struts.action.ActionForm; import org.apache.struts.action.ActionForward; import org.apache.struts.action.ActionMapping; /** * Este caso de uso permite reativar um RA * * @author Ana Maria * @date 30/06/2006 */ public class ReativarRegistroAtendimentoAction extends GcomAction { /** * Este caso de uso permite retivar um registro de atendimento * * [UC0426] Reativar Registro de Atendimento * * @param actionMapping * @param actionForm * @param httpServletRequest * @param httpServletResponse * @return */ public ActionForward execute(ActionMapping actionMapping, ActionForm actionForm, HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) { ActionForward retorno = actionMapping.findForward("telaSucesso"); ReativarRegistroAtendimentoActionForm form = (ReativarRegistroAtendimentoActionForm) actionForm; Fachada fachada = Fachada.getInstancia(); HttpSession sessao = httpServletRequest.getSession(false); validarParecerUnidadeDestino(form); if(!form.getIdUnidadeDestino().equals("") && form.getIdUnidadeDestino() != null){ fachada.verificaPossibilidadeEncaminhamentoUnidadeDestino(Util.converterStringParaInteger(form.getIdUnidadeDestino())); } /* Valida��o dos dados de reativa��o * [FS0003] - Verificar data do atendimento * [FS0004] - Verificar hora do atendimento * [FS0005] - Verificar tempo de espera inicial para atendimento * [FS0006] - Verificar tempo de espera final para atendimento * [FS0007] - Verificar tempo de espera final para atendimento menor que o in�cio * [FS0009] - Verificar autoriza��o da unidade de atendimento par abertura de ra * Mesma valida��o usada no [UC0366] Inserir Registro Atendimento */ fachada.validarInserirRegistroAtendimentoDadosGerais(form.getDataAtendimentoReativado(), form.getHoraAtendimentoReativado(), form.getTempoEsperaInicial(), form.getTempoEsperaFinal(), form.getIdUnidadeAtendimento(), null); if(form.getParecerUnidadeDestino() != null && !form.getParecerUnidadeDestino().equals("") && form.getParecerUnidadeDestino().length() > 200){ String[] msg = new String[2]; msg[0]="Parecer"; msg[1]="200"; throw new ActionServletException("atencao.execedeu_limit_observacao",null,msg); } if(form.getObservacao() != null && !form.getObservacao().equals("") && form.getObservacao().length() > 200){ String[] msg = new String[2]; msg[0]="Observa��o"; msg[1]="200"; throw new ActionServletException("atencao.execedeu_limit_observacao",null,msg); } //Usuario logado no sistema Usuario usuario = (Usuario) sessao.getAttribute("usuarioLogado"); validarUnidadeAtendimento(form, fachada, usuario); RegistroAtendimento ra = new RegistroAtendimento(); form.setFormValues(ra); Integer[] idRAGerado = fachada.reativarRegistroAtendimento(ra, Util.converterStringParaInteger(form.getIdUnidadeAtendimento()), usuario.getId(), Util.converterStringParaInteger(form.getIdClienteSolicitante()) , form.getIdRaSolicitante() , Util.converterStringParaInteger(form.getIdUnidadeDestino()) , form.getParecerUnidadeDestino(), Util.converterStringParaInteger(form.getTipoSolicitacaoId())); sessao.removeAttribute("colecaoMeioSolicitacao"); sessao.removeAttribute("colecaoMotivoReativacao"); if (fachada.gerarOrdemServicoAutomatica(ra.getSolicitacaoTipoEspecificacao().getId())){ montarPaginaSucesso(httpServletRequest, "Registro de Atendimento de c�digo " + idRAGerado[0] + " e Ordem de Servi�o de c�digo " + idRAGerado[1] + " inseridos com sucesso.", "Voltar", "exibirConsultarRegistroAtendimentoAction.do?numeroRA=" + form.getNumeroRA()); } else{ montarPaginaSucesso(httpServletRequest, "Registro de Atendimento de c�digo " + idRAGerado[0] + " inserido com sucesso.", "Voltar", "exibirConsultarRegistroAtendimentoAction.do?numeroRA=" + form.getNumeroRA()); } return retorno; } /** * Parecer para a Unidade Destino(caso a Unidade Destino esteja preenchida, * obrigat�rio; caso contr�rio, opcional) */ private void validarParecerUnidadeDestino(ReativarRegistroAtendimentoActionForm form) { if((form.getParecerUnidadeDestino().equals("") || form.getParecerUnidadeDestino().trim().equals("")) && (form.getIdUnidadeDestino() != null && !form.getIdUnidadeDestino().equals(""))){ throw new ActionServletException("atencao.informe_parecer_unidade_destino_selecionada"); } } /** * [FS0001]Valida possibilidade de reativa��o * * Verificar se o indicador de autoriza��o para manuten��o do RA n�o possui permiss�o * (valor correspondente a 2-n�o) */ private void validarUnidadeAtendimento(ReativarRegistroAtendimentoActionForm form, Fachada fachada, Usuario usuario) { Short indicadorAutorizacao = fachada.obterIndicadorAutorizacaoManutencaoRA(Util.converterStringParaInteger(form.getIdUnidadeAtendimento()), usuario.getId()); if(indicadorAutorizacao == null || indicadorAutorizacao.equals(ConstantesSistema.NAO)){ throw new ActionServletException("atencao.unidade_nao_autorizada", null, form.getUnidadeAtendimento()); } } }