package gcom.gui.atendimentopublico.ordemservico; import gcom.atendimentopublico.ordemservico.FiltroMotivoRejeicao; import gcom.atendimentopublico.ordemservico.FiltroOrdemServico; import gcom.atendimentopublico.ordemservico.MotivoRejeicao; import gcom.atendimentopublico.ordemservico.OrdemServico; import gcom.atendimentopublico.ordemservico.OrdemServicoPavimento; import gcom.fachada.Fachada; import gcom.gui.ActionServletException; import gcom.gui.GcomAction; import gcom.seguranca.acesso.usuario.Usuario; import gcom.util.Util; import gcom.util.filtro.ParametroSimples; import java.util.Collection; import java.util.Date; 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; /** * [UC0648] Exibir Acompanhamento Processo Repavimenta��o * [SB0003] - Rejeitar Servi�o de Repavimenta��o * * @author Hugo Leonardo * @date 09/12/2010 */ public class RejeitarOrdemProcessoRepavimentacaoPopupAction extends GcomAction { public ActionForward execute(ActionMapping actionMapping, ActionForm actionForm, HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) { // Inicializando Variaveis ActionForward retorno = actionMapping.findForward("rejeitarOrdemProcessoRepavimentacaoPopup"); AtualizarOrdemProcessoRepavimentacaoPopUpActionForm form = (AtualizarOrdemProcessoRepavimentacaoPopUpActionForm) actionForm; //Obt�m a sess�o HttpSession sessao = httpServletRequest.getSession(false); Fachada fachada = Fachada.getInstancia(); Usuario usuario = (Usuario) sessao.getAttribute("usuarioLogado"); //Integer idOrdemServico = (Integer) sessao.getAttribute("numeroOS"); OrdemServicoPavimento ordemServicoPavimento = (OrdemServicoPavimento) sessao.getAttribute("ordemServicoPavimento"); String dataRejeicao = null; String idMotivoRejeicao = null; String descricaoRejeicao = null; if(form.getIdMotivoRejeicao()!= null && !form.getIdMotivoRejeicao().equals("") && !form.getIdMotivoRejeicao().equals("-1")){ idMotivoRejeicao = form.getIdMotivoRejeicao(); } if(form.getDescricaoRejeicao()!= null && !"".equals(form.getDescricaoRejeicao())){ descricaoRejeicao = form.getDescricaoRejeicao(); } if(form.getDataRejeicao()!= null && !form.getDataRejeicao().equals("")){ dataRejeicao = this.validarDataRejeicao( form.getDataRejeicao(), ordemServicoPavimento); }else{ throw new ActionServletException("atencao.campo.informada", null, "Data da Rejei��o "); } FiltroMotivoRejeicao filtroMotivoRejeicao = new FiltroMotivoRejeicao(); filtroMotivoRejeicao.adicionarParametro( new ParametroSimples(FiltroMotivoRejeicao.ID, idMotivoRejeicao)); Collection colecaoMotivoRejeicao = fachada.pesquisar(filtroMotivoRejeicao, MotivoRejeicao.class.getName()); MotivoRejeicao motivoRejeicao = (MotivoRejeicao) Util.retonarObjetoDeColecao(colecaoMotivoRejeicao); ordemServicoPavimento.setDataRejeicao(Util.converteStringParaDate(dataRejeicao)); ordemServicoPavimento.setDescricaoRejeicao(descricaoRejeicao); ordemServicoPavimento.setMotivoRejeicao(motivoRejeicao); ordemServicoPavimento.setUsuarioRejeicao(usuario); ordemServicoPavimento.setUltimaAlteracao(new Date()); fachada.atualizar(ordemServicoPavimento); httpServletRequest.setAttribute("fecharPopup", "OK"); form.setIdMotivoRejeicao(""); form.setDescricaoRejeicao(""); form.setDataRejeicao(""); return retorno; } /** * [FS0004] ? Validar Data da Rejei��o. * @param dataRejeicao * @return */ public String validarDataRejeicao(String dataRejeicao , OrdemServicoPavimento ordemServicoPavimento){ Date dtRejeicao = Util.converteStringParaDate(dataRejeicao); Date dataAtualSemHora = Util.formatarDataSemHora(new Date()); if(Util.compararData(dtRejeicao, dataAtualSemHora) == 1){ String dataAtual = Util.formatarData(new Date()); throw new ActionServletException( "atencao.data.superior.data.corrente", null, dataAtual); } if ( ordemServicoPavimento.getPavimentoRuaRetorno() == null ) { FiltroOrdemServico filtroOrdemServico = new FiltroOrdemServico(); filtroOrdemServico.adicionarParametro( new ParametroSimples(FiltroOrdemServico.ID, ordemServicoPavimento.getOrdemServico().getId())); Collection colecaoOrdemServico = Fachada.getInstancia().pesquisar( filtroOrdemServico, OrdemServico.class.getName()); if ( colecaoOrdemServico != null ) { OrdemServico ordemServico = (OrdemServico) Util.retonarObjetoDeColecao(colecaoOrdemServico); if ( dtRejeicao.before(ordemServico.getDataEncerramento()) ){ throw new ActionServletException( "atencao.data.rejeicao.menor.data.encerramento", null, Util.formatarData(ordemServico.getDataEncerramento()) ); } } } else { if ( ordemServicoPavimento.getIndicadorAceite() == null ) { if ( dtRejeicao.before(ordemServicoPavimento.getDataExecucao()) ){ throw new ActionServletException( "atencao.data.rejeicao.menor.data.retorno", null, ordemServicoPavimento.getDataExecucao().toString() ); } } else if ( ordemServicoPavimento.getIndicadorAceite().toString().equals("2") && dtRejeicao.before(ordemServicoPavimento.getDataAceite() ) ) { throw new ActionServletException( "atencao.data.rejeicao.menor.data.aceite", null, ordemServicoPavimento.getDataAceite().toString() ); } } return dataRejeicao; } }