package gcom.gui.cobranca.cobrancaporresultado; import java.util.ArrayList; import java.util.Collection; import java.util.Date; import java.util.Iterator; import java.util.List; import gcom.atendimentopublico.ordemservico.FiltroOrdemServico; import gcom.atendimentopublico.ordemservico.OrdemServico; import gcom.atendimentopublico.registroatendimento.AtendimentoMotivoEncerramento; 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 gcom.util.filtro.ParametroSimplesIn; 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 respons�vel por validar os dados informados na p�gina de Encerrar OS do processo * de movimentar ordem de servi�o de cobran�a por resultado. * * @author Mariana Victor * @date 10/05/2011 */ public class MovimentarOrdemServicoEncerrarOSAction extends GcomAction { /** * @param actionMapping * @param actionForm * @param httpServletRequest * @param httpServletResponse * @return */ public ActionForward execute(ActionMapping actionMapping, ActionForm actionForm, HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) { ActionForward retorno = actionMapping.findForward("movimentarOrdemServicoAction"); //Cria uma inst�ncia da sess�o HttpSession sessao = httpServletRequest.getSession(false); MovimentarOrdemServicoActionForm form = (MovimentarOrdemServicoActionForm) actionForm; Usuario usuarioLogado = (Usuario) sessao.getAttribute("usuarioLogado"); //Se clicou no bot�o de "Encerrar" if (httpServletRequest.getParameter("concluir") != null && (httpServletRequest.getParameter("concluir")).toString().equalsIgnoreCase("true")) { String mensagem = validarForm(form, sessao); if (mensagem != null && !mensagem.equals("")) { throw new ActionServletException( mensagem); } MovimentarOrdemServicoEncerrarOSHelper helper = this.montarHelper(form); Fachada.getInstancia().movimentarOrdemServicoEncerrarOS(helper, usuarioLogado); httpServletRequest.setAttribute("tipoMovimentacao", "Encerrada(s)"); } //Retorna o mapemaneto na vari�vel "retorno" return retorno; } public String validarForm(MovimentarOrdemServicoActionForm form, HttpSession sessao) { if (form.getIdMotivoEncerramento() == null || form.getIdMotivoEncerramento().equals("") || form.getIdMotivoEncerramento().equals("-1")) { return "atencao.informe.motivo_encerramento"; } if (form.getDataEncerramento() == null || form.getDataEncerramento().equals("")) { return "atencao.informe.data_encerramento"; } else if (Util.validarDiaMesAno(form.getDataEncerramento())) { return "atencao.data_encerramento.invalida"; } if (form.getHoraEncerramento() != null && !form.getHoraEncerramento().equals("")){ String dataHora = form.getDataEncerramento().substring(6, 10) + "-" + form.getDataEncerramento().substring(3, 5) + "-" + form.getDataEncerramento().substring(0, 2); dataHora += " " + form.getHoraEncerramento() + ":00"; if(Util.validarDataHoraInvalida(dataHora, "yyyy-MM-dd HH:mm:ss")) { return "atencao.hora_encerramento.invalida"; } } Collection<AtendimentoMotivoEncerramento> colecaoAtendimentoMotivoEncerramento = (Collection<AtendimentoMotivoEncerramento>) sessao.getAttribute("colecaoAtendimentoMotivoEncerramento"); Iterator iterator = colecaoAtendimentoMotivoEncerramento.iterator(); boolean indicadorEncontrado = false; while(iterator.hasNext()) { AtendimentoMotivoEncerramento atendimentoMotivoEncerramento = (AtendimentoMotivoEncerramento) iterator.next(); if (atendimentoMotivoEncerramento.getId().compareTo(new Integer(form.getIdMotivoEncerramento())) == 0) { if (atendimentoMotivoEncerramento.getIndicadorExecucao() != 0 && (new Short(atendimentoMotivoEncerramento.getIndicadorExecucao())).compareTo(ConstantesSistema.NAO) == 0) { indicadorEncontrado = true; } break; } } List<Integer> numerosOSPesquisar = new ArrayList(); if (indicadorEncontrado){ if (form.getNumeroOSInicial() != null && !form.getNumeroOSInicial().equals("") && (form.getNumeroOSFinal() == null || form.getNumeroOSFinal().equals(""))){ return "atencao.informe.ordens_servico.final"; } else if (form.getNumeroOSInicial() != null && !form.getNumeroOSInicial().equals("") && form.getNumeroOSFinal() != null && !form.getNumeroOSFinal().equals("")){ if ((new Integer(form.getNumeroOSInicial())) .compareTo(new Integer(form.getNumeroOSFinal())) > -1) { return "atencao.ordem_servico.final.menor_que.inicial"; } int numeroInicial = new Integer(form.getNumeroOSInicial()); int numeroFinal = new Integer(form.getNumeroOSFinal()); for (int i = numeroInicial; i <= numeroFinal; i++) { numerosOSPesquisar.add(i); } } else if ((form.getNumeroOSInicial() == null || form.getNumeroOSInicial().equals("")) && (form.getNumeroOSFinal() == null || form.getNumeroOSFinal().equals(""))){ boolean numeroOSEncontrado = false; if (form.getNumerosOS() == null || form.getNumerosOS().length == 0) { return "atencao.informe.alguma.ordens_servico"; } for (int i = 0; i < form.getNumerosOS().length; i++) { if (form.getNumerosOS()[i] != null && !form.getNumerosOS()[i].equals("")) { numerosOSPesquisar.add(new Integer(form.getNumerosOS()[i])); numeroOSEncontrado = true; } } if (!numeroOSEncontrado) { return "atencao.informe.alguma.ordens_servico"; } } } else { if(!(form.getNumerosOS() != null && form.getNumerosOS().length != 0 && form.getNumerosOS()[0] != null && !form.getNumerosOS()[0].equals(""))){ return "atencao.informe.alguma.ordens_servico"; } else { numerosOSPesquisar.add(new Integer(form.getNumerosOS()[0])); } } if (numerosOSPesquisar != null && !numerosOSPesquisar.isEmpty()) { FiltroOrdemServico filtroOrdemServico = new FiltroOrdemServico(); filtroOrdemServico.adicionarParametro(new ParametroSimplesIn( FiltroOrdemServico.ID, numerosOSPesquisar)); Collection colecaoOrdemServico = Fachada.getInstancia().pesquisar(filtroOrdemServico, OrdemServico.class.getName()); if (colecaoOrdemServico != null && !colecaoOrdemServico.isEmpty()) { form.setColecaoOrdemServico(colecaoOrdemServico); } else { return "atencao.ordens_servico.inexistente"; } } return null; } private MovimentarOrdemServicoEncerrarOSHelper montarHelper(MovimentarOrdemServicoActionForm form){ MovimentarOrdemServicoEncerrarOSHelper helper = new MovimentarOrdemServicoEncerrarOSHelper(); String data = form.getDataEncerramento(); if (form.getHoraEncerramento() != null && !form.getHoraEncerramento().equals("")) { data = data + " " + form.getHoraEncerramento() + ":00"; } else { data = data + " 00:00:00"; } Date dataEncerramento = Util.converteStringParaDateHora(data); helper.setColecaoOrdemServico(form.getColecaoOrdemServico()); helper.setDataEncerramento(dataEncerramento); helper.setIdMotivoEncerramento(form.getIdMotivoEncerramento()); helper.setObservacaoEncerramento(form.getObservacaoEncerramento()); return helper; } }