package gcom.gui.micromedicao; import gcom.fachada.Fachada; import gcom.gui.ActionServletException; import gcom.gui.GcomAction; import gcom.micromedicao.ServicoTipoCelular; import gcom.micromedicao.SituacaoTransmissaoLeitura; import gcom.seguranca.acesso.PermissaoEspecial; import gcom.seguranca.acesso.usuario.Usuario; import gcom.util.Util; import java.util.Vector; 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; /** * * Action para n�o Liberar o Arquivo Texto * * @author Thiago Ten�rio , Thiago Nascimento e Yara T. Souza, Hugo Amorim * @date 19/12/2008 , 19/08/2010 * * */ public class LiberarArquivoTextoLeituraAction extends GcomAction { public ActionForward execute(ActionMapping actionMapping, ActionForm actionForm, HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) { // Seta o retorno ActionForward retorno = actionMapping.findForward("telaSucesso"); // Obt�m a inst�ncia da fachada Fachada fachada = Fachada.getInstancia(); Integer situacaoNova = null; String descricaoSituacaoNova = ""; HttpSession sessao = this.getSessao(httpServletRequest); Usuario usuarioLogado = this.getUsuarioLogado(httpServletRequest); ConsultarArquivoTextoLeituraActionForm consultarArquivoTextoLeituraActionForm = (ConsultarArquivoTextoLeituraActionForm) actionForm; // Saber se vai liberar ou nao liberar String liberar = (String) httpServletRequest.getParameter("liberar"); /** * CRC * autor: Yara T. Souza * data : 19/12/2008 * Acrescentado 2 novos bot�es para alterar a situa��o do arquivo texto. */ if(liberar == null){ liberar = (String) sessao.getAttribute("liberar"); } if (liberar.equals("0")) { situacaoNova = SituacaoTransmissaoLeitura.DISPONIVEL; descricaoSituacaoNova = "DISPONIVEL"; } else if (liberar.equals("1")) { situacaoNova = SituacaoTransmissaoLeitura.LIBERADO; descricaoSituacaoNova = "LIBERADO"; } else if (liberar.equals("2")) { situacaoNova = SituacaoTransmissaoLeitura.EM_CAMPO; descricaoSituacaoNova = "EM CAMPO"; } else if (liberar.equals("3")) { situacaoNova = SituacaoTransmissaoLeitura.TRANSMITIDO; descricaoSituacaoNova = "FINALIZADO"; } else if (liberar.equals("7")) { situacaoNova = SituacaoTransmissaoLeitura.FINALIZADO_USUARIO; descricaoSituacaoNova = "FINALIZADO PELO USUARIO"; } else if ( liberar.equals( "9" ) ){ situacaoNova = SituacaoTransmissaoLeitura.INFORMAR_MOTIVO_FINALIZACAO; descricaoSituacaoNova = "MOTIVO DE FINALIZA��O INFORMADO"; } //Valida tamanho da descri��o do motivo de finali��o String motivoFinalizacao = null; if(consultarArquivoTextoLeituraActionForm.getMotivoFinalizacao()!=null && !consultarArquivoTextoLeituraActionForm.getMotivoFinalizacao().equals("")){ if(consultarArquivoTextoLeituraActionForm.getMotivoFinalizacao().length()>200){ String[] msg = new String[2]; msg[0]="Motivo Finaliza��o"; msg[1]="200"; throw new ActionServletException("atencao.execedeu_limit_observacao",null,msg); } motivoFinalizacao = consultarArquivoTextoLeituraActionForm.getMotivoFinalizacao(); } if (consultarArquivoTextoLeituraActionForm.getIdsRegistros() != null) { Vector<Integer> v = new Vector<Integer>(); for (int i = 0; i < consultarArquivoTextoLeituraActionForm .getIdsRegistros().length; i++) { v.add(new Integer(consultarArquivoTextoLeituraActionForm .getIdsRegistros()[i])); } Integer idServicoTipoCelular = ServicoTipoCelular.LEITURA; if(consultarArquivoTextoLeituraActionForm.getServicoTipoCelular() != null && !consultarArquivoTextoLeituraActionForm.getServicoTipoCelular().equals("")){ idServicoTipoCelular = Util.converterStringParaInteger(consultarArquivoTextoLeituraActionForm.getServicoTipoCelular()); } String valorConfirmacao = httpServletRequest.getParameter("confirmado"); // Alteracao solitcitada por Leo para deixar finalizar aquivos que sejam de impressao simultanea //Permissao Especial FINALIZAR_ARQUIVO_TEXTO_DE_LEITURA boolean temPermissaoFinalizarArquivo = Fachada.getInstancia() .verificarPermissaoEspecial( PermissaoEspecial.FINALIZAR_ARQUIVO_TEXTO_DE_LEITURA, usuarioLogado); boolean realizouLeituras = Fachada.getInstancia().verificarLeiturasRealizadas(v,idServicoTipoCelular); if(temPermissaoFinalizarArquivo && (liberar.equals("3") || liberar.equals("7")) && idServicoTipoCelular == 2 && (valorConfirmacao == null) && !realizouLeituras) { sessao.setAttribute("liberar", liberar); // Se for para ir para a tela de confirma��o httpServletRequest.setAttribute("caminhoActionConclusao", "/gsan/liberarArquivoLeituraAction.do"); httpServletRequest.setAttribute("cancelamento", "TRUE"); httpServletRequest.setAttribute("nomeBotao1", "Sim"); httpServletRequest.setAttribute("nomeBotao2", "N�o"); return montarPaginaConfirmacao("atencao.confirmar.leituras.nao.recebidas", httpServletRequest, actionMapping); } if(temPermissaoFinalizarArquivo && valorConfirmacao != null && valorConfirmacao.equals("cancelar")){ return retorno = actionMapping.findForward("consultarArquivoTextoLeitura"); } fachada.atualizarListaArquivoTexto(v, situacaoNova, idServicoTipoCelular,temPermissaoFinalizarArquivo, motivoFinalizacao); } else { throw new ActionServletException( "atencao.nenhum_arquivo_mudar_situacao", null, descricaoSituacaoNova); } montarPaginaSucesso(httpServletRequest, "Arquivo Texto para Leitura Alterado para " + descricaoSituacaoNova.toLowerCase() + " com sucesso.", "Realizar outra Manuten��o de Arquivo Texto para Leitura", "consultarArquivoTextoLeituraAction.do"); consultarArquivoTextoLeituraActionForm.setIdsRegistros(null); return retorno; } }