package gcom.gui.atendimentopublico.ordemservico; import gcom.atendimentopublico.ordemservico.FiltroUnidadeRepavimentadoraCustoPavimentoCalcada; import gcom.atendimentopublico.ordemservico.FiltroUnidadeRepavimentadoraCustoPavimentoRua; import gcom.cadastro.unidade.UnidadeRepavimentadoraCustoPavimentoCalcada; import gcom.cadastro.unidade.UnidadeRepavimentadoraCustoPavimentoRua; import gcom.fachada.Fachada; import gcom.gui.ActionServletException; import gcom.gui.GcomAction; import gcom.interceptor.RegistradorOperacao; import gcom.seguranca.acesso.Operacao; import gcom.seguranca.acesso.usuario.Usuario; import gcom.seguranca.acesso.usuario.UsuarioAcao; import gcom.seguranca.acesso.usuario.UsuarioAcaoUsuarioHelper; 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; /** * Descri��o da classe * * @author Hugo Leonardo * @date 28/12/2010 */ public class AtualizarCustoPavimentoPorRepavimentadoraAction 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(); // Mudar isso quando tiver esquema de seguran�a HttpSession sessao = httpServletRequest.getSession(false); Usuario usuarioLogado = (Usuario)sessao.getAttribute(Usuario.USUARIO_LOGADO); AtualizarCustoPavimentoPorRepavimentadoraActionForm form = (AtualizarCustoPavimentoPorRepavimentadoraActionForm) actionForm; if (httpServletRequest.getParameter("confirmado") != null && httpServletRequest.getParameter("confirmado").equalsIgnoreCase("ok")) { sessao.setAttribute("confirmou", "sim"); } // Atualiza Custo Pavimento Rua if((httpServletRequest.getParameter("acao") != null && httpServletRequest.getParameter("acao").equals("atualizarRua")) || sessao.getAttribute("acao") != null && sessao.getAttribute("acao").equals("atualizarRua")){ sessao.setAttribute("acao", "atualizarRua"); Date timeStampDB = (Date) sessao.getAttribute("timeStamp"); UnidadeRepavimentadoraCustoPavimentoRua unidadeRepavimentadoraCustoPavimentoRua = (UnidadeRepavimentadoraCustoPavimentoRua) sessao.getAttribute("unidadeRepavimentadoraCustoPavimentoRua"); String descricaoPavimento = unidadeRepavimentadoraCustoPavimentoRua.getPavimentoRua().getDescricao(); String valorPavimentoRua = form.getValorPavimentoRua(); unidadeRepavimentadoraCustoPavimentoRua.setValorPavimento( Util.formatarMoedaRealparaBigDecimal(valorPavimentoRua)); // Verificar Atualiza��o realizada por outro usu�rio String idUnidadeRepavimentadoraCustoPavimentoRua = unidadeRepavimentadoraCustoPavimentoRua.getId().toString(); FiltroUnidadeRepavimentadoraCustoPavimentoRua filtroUnidadeRepavimentadoraCustoPavimentoRua = new FiltroUnidadeRepavimentadoraCustoPavimentoRua(); filtroUnidadeRepavimentadoraCustoPavimentoRua.adicionarParametro( new ParametroSimples(FiltroUnidadeRepavimentadoraCustoPavimentoRua.ID, idUnidadeRepavimentadoraCustoPavimentoRua)); // Recupera Debito Tipo Servi�o Collection colecaoUnidadeRepavimentadoraCustoPavimentoRua = fachada.pesquisar(filtroUnidadeRepavimentadoraCustoPavimentoRua, UnidadeRepavimentadoraCustoPavimentoRua.class.getName()); UnidadeRepavimentadoraCustoPavimentoRua unidadeRepavimentadoraCustoPavimentoRuaBD = (UnidadeRepavimentadoraCustoPavimentoRua) colecaoUnidadeRepavimentadoraCustoPavimentoRua.iterator().next(); Date dtInicial = Util.converteStringParaDate(form.getDataVigenciaInicialPavimentoRua()); Date dtFinal = Util.converteStringParaDate(form.getDataVigenciaFinalPavimentoRua()); // [FS0006] Verificar exist�ncia de custo do pavimento de rua no per�odo informado fachada.verificaAtualizarCustoPavimentoPorRepavimentadora(unidadeRepavimentadoraCustoPavimentoRuaBD.getId(), unidadeRepavimentadoraCustoPavimentoRuaBD.getUnidadeRepavimentadora().getId(), unidadeRepavimentadoraCustoPavimentoRuaBD.getPavimentoRua().getId(), dtInicial, dtFinal, new Integer("1"), new Integer("1")); fachada.verificaAtualizarCustoPavimentoPorRepavimentadora(unidadeRepavimentadoraCustoPavimentoRuaBD.getId(), unidadeRepavimentadoraCustoPavimentoRuaBD.getUnidadeRepavimentadora().getId(), unidadeRepavimentadoraCustoPavimentoRuaBD.getPavimentoRua().getId(), dtInicial, dtFinal, new Integer("1"), new Integer("2")); Integer validar = fachada.verificarExistenciDiasSemValorCustoPavimentoPorRepavimentadora( unidadeRepavimentadoraCustoPavimentoRuaBD.getId(), unidadeRepavimentadoraCustoPavimentoRuaBD.getUnidadeRepavimentadora().getId(), unidadeRepavimentadoraCustoPavimentoRuaBD.getPavimentoRua().getId(), dtInicial, dtFinal, new Integer("1"), new Integer("1")); Integer validar2 = fachada.verificarExistenciDiasSemValorCustoPavimentoPorRepavimentadora( unidadeRepavimentadoraCustoPavimentoRuaBD.getId(), unidadeRepavimentadoraCustoPavimentoRuaBD.getUnidadeRepavimentadora().getId(), unidadeRepavimentadoraCustoPavimentoRuaBD.getPavimentoRua().getId(), dtInicial, dtFinal, new Integer("1"), new Integer("2")); if((validar != 0 || validar2 != 0) && sessao.getAttribute("confirmou") == null){ httpServletRequest.setAttribute("caminhoActionConclusao", "atualizarCustoPavimentoPorRepavimentadoraAction.do"); return montarPaginaConfirmacao("atencao.existe.periodo.sem_cadastro.custo_pavimento_por_repavimentadora", httpServletRequest, actionMapping, "acao=atualizarRua"); } sessao.removeAttribute("acao"); sessao.removeAttribute("confirmou"); if (form.getDataVigenciaInicialPavimentoRua() != null && !form.getDataVigenciaInicialPavimentoRua().equals("")){ if (!Util.validarDiaMesAno(form.getDataVigenciaInicialPavimentoRua())) { unidadeRepavimentadoraCustoPavimentoRua.setDataVigenciaInicial( Util.converteStringParaDate(form.getDataVigenciaInicialPavimentoRua())); if (form.getDataVigenciaFinalPavimentoRua() != null && !form.getDataVigenciaFinalPavimentoRua().equals("")){ if (!Util.validarDiaMesAno(form.getDataVigenciaFinalPavimentoRua())) { unidadeRepavimentadoraCustoPavimentoRua.setDataVigenciaFinal( Util.converteStringParaDate(form.getDataVigenciaFinalPavimentoRua())); if(Util.compararData(unidadeRepavimentadoraCustoPavimentoRua.getDataVigenciaInicial(), unidadeRepavimentadoraCustoPavimentoRua.getDataVigenciaFinal()) == 1){ throw new ActionServletException("atencao.atencao.data_vigencia_final_menor"); } }else{ throw new ActionServletException("atencao.atencao.data_vigencia_final_invalida"); } }else if(form.getDataVigenciaFinalPavimentoRua().equals("")){ unidadeRepavimentadoraCustoPavimentoRua.setDataVigenciaFinal(null); } }else{ throw new ActionServletException("atencao.data_vigencia_inicial_invalida"); } } if(timeStampDB.compareTo(unidadeRepavimentadoraCustoPavimentoRua.getUltimaAlteracao()) != 0){ throw new ActionServletException("atencao.atualizacao.timestamp"); } unidadeRepavimentadoraCustoPavimentoRua.setUltimaAlteracao(new Date()); // ------------ REGISTRAR TRANSA��O ---------------- RegistradorOperacao registradorOperacao = new RegistradorOperacao( Operacao.OPERACAO_ATUALIZAR_CUSTO_PAVIMENTO, unidadeRepavimentadoraCustoPavimentoRua.getId(), unidadeRepavimentadoraCustoPavimentoRua.getId(), new UsuarioAcaoUsuarioHelper(usuarioLogado, UsuarioAcao.USUARIO_ACAO_EFETUOU_OPERACAO)); // ------------ REGISTRAR TRANSA��O ---------------- registradorOperacao.registrarOperacao(unidadeRepavimentadoraCustoPavimentoRua); fachada.atualizar(unidadeRepavimentadoraCustoPavimentoRua); montarPaginaSucesso(httpServletRequest, "Custo do Pavimento de Rua " + descricaoPavimento + " atualizado com sucesso.", "Realizar outra Manuten��o de Custo do Pavimento de Rua", "exibirFiltrarCustoPavimentoPorRepavimentadoraAction.do?menu=sim"); }else{ sessao.setAttribute("acao", "atualizarCalcada"); Date timeStampDB = (Date) sessao.getAttribute("timeStamp"); UnidadeRepavimentadoraCustoPavimentoCalcada unidadeRepavimentadoraCustoPavimentoCalcada = (UnidadeRepavimentadoraCustoPavimentoCalcada) sessao.getAttribute("unidadeRepavimentadoraCustoPavimentoCalcada"); String descricaoPavimento = unidadeRepavimentadoraCustoPavimentoCalcada.getPavimentoCalcada().getDescricao(); String valorPavimentoCalcada = form.getValorPavimentoCalcada(); unidadeRepavimentadoraCustoPavimentoCalcada.setValorPavimento( Util.formatarMoedaRealparaBigDecimal(valorPavimentoCalcada)); // Verificar Atualiza��o realizada por outro usu�rio String idUnidadeRepavimentadoraCustoPavimentoCalcada = unidadeRepavimentadoraCustoPavimentoCalcada.getId().toString(); FiltroUnidadeRepavimentadoraCustoPavimentoCalcada filtroUnidadeRepavimentadoraCustoPavimentoCalcada = new FiltroUnidadeRepavimentadoraCustoPavimentoCalcada(); filtroUnidadeRepavimentadoraCustoPavimentoCalcada.adicionarParametro( new ParametroSimples(FiltroUnidadeRepavimentadoraCustoPavimentoCalcada.ID, idUnidadeRepavimentadoraCustoPavimentoCalcada)); // Recupera Debito Tipo Servi�o Collection colecaoUnidadeRepavimentadoraCustoPavimentoCalcada = fachada.pesquisar(filtroUnidadeRepavimentadoraCustoPavimentoCalcada, UnidadeRepavimentadoraCustoPavimentoCalcada.class.getName()); UnidadeRepavimentadoraCustoPavimentoCalcada unidadeRepavimentadoraCustoPavimentoCalcadaBD = (UnidadeRepavimentadoraCustoPavimentoCalcada) colecaoUnidadeRepavimentadoraCustoPavimentoCalcada.iterator().next(); Date dtInicial = Util.converteStringParaDate(form.getDataVigenciaInicialPavimentoCalcada()); Date dtFinal = Util.converteStringParaDate(form.getDataVigenciaFinalPavimentoCalcada()); // [FS0007] Verificar exist�ncia de custo do pavimento de Cal�ada no per�odo informado fachada.verificaAtualizarCustoPavimentoPorRepavimentadora( unidadeRepavimentadoraCustoPavimentoCalcadaBD.getId(), unidadeRepavimentadoraCustoPavimentoCalcadaBD.getUnidadeRepavimentadora().getId(), unidadeRepavimentadoraCustoPavimentoCalcadaBD.getPavimentoCalcada().getId(), dtInicial, dtFinal, new Integer("2"), new Integer("1")); fachada.verificaAtualizarCustoPavimentoPorRepavimentadora( unidadeRepavimentadoraCustoPavimentoCalcadaBD.getId(), unidadeRepavimentadoraCustoPavimentoCalcadaBD.getUnidadeRepavimentadora().getId(), unidadeRepavimentadoraCustoPavimentoCalcadaBD.getPavimentoCalcada().getId(), dtInicial, dtFinal, new Integer("2"), new Integer("2")); Integer validar = fachada.verificarExistenciDiasSemValorCustoPavimentoPorRepavimentadora( unidadeRepavimentadoraCustoPavimentoCalcadaBD.getId(), unidadeRepavimentadoraCustoPavimentoCalcadaBD.getUnidadeRepavimentadora().getId(), unidadeRepavimentadoraCustoPavimentoCalcadaBD.getPavimentoCalcada().getId(), dtInicial, dtFinal, new Integer("2"), new Integer("1")); Integer validar2 = fachada.verificarExistenciDiasSemValorCustoPavimentoPorRepavimentadora( unidadeRepavimentadoraCustoPavimentoCalcadaBD.getId(), unidadeRepavimentadoraCustoPavimentoCalcadaBD.getUnidadeRepavimentadora().getId(), unidadeRepavimentadoraCustoPavimentoCalcadaBD.getPavimentoCalcada().getId(), dtInicial, dtFinal, new Integer("2"), new Integer("2")); if((validar != 0 || validar2 != 0) && sessao.getAttribute("confirmou") == null){ httpServletRequest.setAttribute("caminhoActionConclusao", "atualizarCustoPavimentoPorRepavimentadoraAction.do"); return montarPaginaConfirmacao("atencao.existe.periodo.sem_cadastro.custo_pavimento_por_repavimentadora", httpServletRequest, actionMapping, "acao=atualizarCalcada"); } sessao.removeAttribute("acao"); sessao.removeAttribute("confirmou"); if (form.getDataVigenciaInicialPavimentoCalcada() != null && !form.getDataVigenciaInicialPavimentoCalcada().equals("")){ if (!Util.validarDiaMesAno(form.getDataVigenciaInicialPavimentoCalcada())) { unidadeRepavimentadoraCustoPavimentoCalcada.setDataVigenciaInicial( Util.converteStringParaDate(form.getDataVigenciaInicialPavimentoCalcada())); if (form.getDataVigenciaFinalPavimentoCalcada() != null && !form.getDataVigenciaFinalPavimentoCalcada().equals("")){ if (!Util.validarDiaMesAno(form.getDataVigenciaFinalPavimentoCalcada())) { unidadeRepavimentadoraCustoPavimentoCalcada.setDataVigenciaFinal( Util.converteStringParaDate(form.getDataVigenciaFinalPavimentoCalcada())); if(Util.compararData(unidadeRepavimentadoraCustoPavimentoCalcada.getDataVigenciaInicial(), unidadeRepavimentadoraCustoPavimentoCalcada.getDataVigenciaFinal()) == 1){ throw new ActionServletException("atencao.atencao.data_vigencia_final_menor"); } }else{ throw new ActionServletException("atencao.atencao.data_vigencia_final_invalida"); } } }else{ throw new ActionServletException("atencao.data_vigencia_inicial_invalida"); } } if(timeStampDB.compareTo(unidadeRepavimentadoraCustoPavimentoCalcada.getUltimaAlteracao()) != 0){ throw new ActionServletException("atencao.atualizacao.timestamp"); } unidadeRepavimentadoraCustoPavimentoCalcada.setUltimaAlteracao(new Date()); fachada.atualizar(unidadeRepavimentadoraCustoPavimentoCalcada); montarPaginaSucesso(httpServletRequest, "Custo do Pavimento de Cal�ada " + descricaoPavimento + " atualizado com sucesso.", "Realizar outra Manuten��o de Custo do Pavimento de Cal�ada", "exibirFiltrarCustoPavimentoPorRepavimentadoraAction.do?menu=sim"); } return retorno; } }