package gcom.gui.atendimentopublico.registroatendimento;
import gcom.atendimentopublico.ordemservico.FiltroServicoTipo;
import gcom.atendimentopublico.ordemservico.ServicoTipo;
import gcom.atendimentopublico.registroatendimento.EspecificacaoImovelSituacao;
import gcom.atendimentopublico.registroatendimento.SolicitacaoTipo;
import gcom.atendimentopublico.registroatendimento.SolicitacaoTipoEspecificacao;
import gcom.cadastro.unidade.FiltroUnidadeOrganizacional;
import gcom.cadastro.unidade.UnidadeOrganizacional;
import gcom.fachada.Fachada;
import gcom.gui.ActionServletException;
import gcom.gui.GcomAction;
import gcom.util.ConstantesSistema;
import gcom.util.filtro.ParametroSimples;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashSet;
import java.util.List;
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 R�mulo Aur�lio
* @date 22/11/2006
*/
public class ExibirAtualizarAdicionarSolicitacaoEspecificacaoTipoServicoAction
extends GcomAction {
/**
* Description of the Method
*
* @param actionMapping
* Description of the Parameter
* @param actionForm
* Description of the Parameter
* @param httpServletRequest
* Description of the Parameter
* @param httpServletResponse
* Description of the Parameter
* @return Description of the Return Value
*/
public ActionForward execute(ActionMapping actionMapping,
ActionForm actionForm, HttpServletRequest httpServletRequest,
HttpServletResponse httpServletResponse) {
// Mudar isso quando tiver esquema de seguran�a
HttpSession sessao = httpServletRequest.getSession(false);
// Set no mapeamento de retorno
ActionForward retorno = actionMapping
.findForward("atualizarAdicionarSolicitacaoEspecificacaoTipoServico");
AtualizarAdicionarSolicitacaoEspecificacaoActionForm atualizarAdicionarSolicitacaoEspecificacaoActionForm = (AtualizarAdicionarSolicitacaoEspecificacaoActionForm) actionForm;
sessao.setAttribute(
"atualizarAdicionarSolicitacaoEspecificacaoActionForm",
atualizarAdicionarSolicitacaoEspecificacaoActionForm);
// Obt�m a inst�ncia da Fachada
Fachada fachada = Fachada.getInstancia();
// pega os dados do form para nao ter perdas qdo votarmos a tela
// anterior
if (sessao.getAttribute("solicitacaoTipoEspecificacao") == null) {
SolicitacaoTipoEspecificacao solicitacaoTipoEspecificacao = new SolicitacaoTipoEspecificacao();
if (atualizarAdicionarSolicitacaoEspecificacaoActionForm
.getPrazoPrevisaoAtendimento() != null
&& !atualizarAdicionarSolicitacaoEspecificacaoActionForm
.getPrazoPrevisaoAtendimento().equals("")) {
// Prazo de previs�o de atendimento
solicitacaoTipoEspecificacao.setDiasPrazo(new Integer(
atualizarAdicionarSolicitacaoEspecificacaoActionForm
.getPrazoPrevisaoAtendimento()));
}
// Descri��o da especifica��o
solicitacaoTipoEspecificacao
.setDescricao(atualizarAdicionarSolicitacaoEspecificacaoActionForm
.getDescricaoSolicitacao());
// Pavimento de cal�ada obrigat�rio
if (atualizarAdicionarSolicitacaoEspecificacaoActionForm
.getIndicadorPavimentoCalcada() != null
&& !atualizarAdicionarSolicitacaoEspecificacaoActionForm
.getIndicadorPavimentoCalcada().equals("")) {
solicitacaoTipoEspecificacao
.setIndicadorPavimentoCalcada(new Short(
atualizarAdicionarSolicitacaoEspecificacaoActionForm
.getIndicadorPavimentoCalcada()));
}
// Pavimento de rua obrigat�rio
if (atualizarAdicionarSolicitacaoEspecificacaoActionForm
.getIndicadorPavimentoRua() != null
&& !atualizarAdicionarSolicitacaoEspecificacaoActionForm
.getIndicadorPavimentoRua().equals("")) {
solicitacaoTipoEspecificacao
.setIndicadorPavimentoRua(new Short(
atualizarAdicionarSolicitacaoEspecificacaoActionForm
.getIndicadorPavimentoRua()));
}
// refere-se a liga��o de agua
if (atualizarAdicionarSolicitacaoEspecificacaoActionForm
.getIndicadorLigacaoAgua() != null
&& !atualizarAdicionarSolicitacaoEspecificacaoActionForm
.getIndicadorLigacaoAgua().equals("")) {
solicitacaoTipoEspecificacao.setIndicadorLigacaoAgua(new Short(
atualizarAdicionarSolicitacaoEspecificacaoActionForm
.getIndicadorLigacaoAgua()));
}
// Cobran�a de material
if (atualizarAdicionarSolicitacaoEspecificacaoActionForm
.getIndicadorCobrancaMaterial() != null
&& !atualizarAdicionarSolicitacaoEspecificacaoActionForm
.getIndicadorCobrancaMaterial().equals("")) {
solicitacaoTipoEspecificacao
.setIndicadorCobrancaMaterial(new Integer(
atualizarAdicionarSolicitacaoEspecificacaoActionForm
.getIndicadorCobrancaMaterial()));
}
// Matricula do im�vel obrigat�rio
if (atualizarAdicionarSolicitacaoEspecificacaoActionForm
.getIndicadorMatriculaImovel() != null
&& !atualizarAdicionarSolicitacaoEspecificacaoActionForm
.getIndicadorMatriculaImovel().equals("")) {
solicitacaoTipoEspecificacao.setIndicadorMatricula(new Integer(
atualizarAdicionarSolicitacaoEspecificacaoActionForm
.getIndicadorMatriculaImovel()));
}
// Parecer de encerramento obrigat�rio
if (atualizarAdicionarSolicitacaoEspecificacaoActionForm
.getIndicadorParecerEncerramento() != null
&& !atualizarAdicionarSolicitacaoEspecificacaoActionForm
.getIndicadorParecerEncerramento().equals("")) {
solicitacaoTipoEspecificacao
.setIndicadorParecerEncerramento(new Integer(
atualizarAdicionarSolicitacaoEspecificacaoActionForm
.getIndicadorParecerEncerramento()));
}
// Gera d�bito
if (atualizarAdicionarSolicitacaoEspecificacaoActionForm
.getIndicadorGerarDebito() != null
&& !atualizarAdicionarSolicitacaoEspecificacaoActionForm
.getIndicadorGerarDebito().equals("")) {
solicitacaoTipoEspecificacao
.setIndicadorGeracaoDebito(new Integer(
atualizarAdicionarSolicitacaoEspecificacaoActionForm
.getIndicadorGerarDebito()));
}
// Gera Cr�dito
if (atualizarAdicionarSolicitacaoEspecificacaoActionForm
.getIndicadorGerarCredito() != null
&& !atualizarAdicionarSolicitacaoEspecificacaoActionForm
.getIndicadorGerarCredito().equals("")) {
solicitacaoTipoEspecificacao
.setIndicadorGeracaoCredito(new Integer(
atualizarAdicionarSolicitacaoEspecificacaoActionForm
.getIndicadorGerarCredito()));
}
// Unidade inicial tramita��o
if (atualizarAdicionarSolicitacaoEspecificacaoActionForm
.getIdUnidadeTramitacao() != null
&& !atualizarAdicionarSolicitacaoEspecificacaoActionForm
.getIdUnidadeTramitacao().equals("")) {
// Verifica se o c�digo foi modificado
if (atualizarAdicionarSolicitacaoEspecificacaoActionForm
.getDescricaoUnidadeTramitacao() == null
|| atualizarAdicionarSolicitacaoEspecificacaoActionForm
.getDescricaoUnidadeTramitacao().trim().equals(
"")) {
FiltroUnidadeOrganizacional filtroUnidadeOrganizacional = new FiltroUnidadeOrganizacional();
filtroUnidadeOrganizacional
.adicionarParametro(new ParametroSimples(
FiltroUnidadeOrganizacional.ID,
atualizarAdicionarSolicitacaoEspecificacaoActionForm
.getIdUnidadeTramitacao()));
filtroUnidadeOrganizacional
.adicionarParametro(new ParametroSimples(
FiltroUnidadeOrganizacional.INDICADOR_USO,
ConstantesSistema.INDICADOR_USO_ATIVO));
Collection unidadeOrganizacionalEncontrado = fachada
.pesquisar(filtroUnidadeOrganizacional,
UnidadeOrganizacional.class.getName());
if (unidadeOrganizacionalEncontrado != null
&& !unidadeOrganizacionalEncontrado.isEmpty()) {
UnidadeOrganizacional uinidadeOrganizacional = (UnidadeOrganizacional) ((List) unidadeOrganizacionalEncontrado)
.get(0);
solicitacaoTipoEspecificacao
.setUnidadeOrganizacional(uinidadeOrganizacional);
} else {
throw new ActionServletException(
"atencao.pesquisa_inexistente", null,
"Unidade Organizacional");
}
} else {
UnidadeOrganizacional unidadeOrganizacional = new UnidadeOrganizacional();
unidadeOrganizacional.setId(new Integer(
atualizarAdicionarSolicitacaoEspecificacaoActionForm
.getIdUnidadeTramitacao()));
solicitacaoTipoEspecificacao
.setUnidadeOrganizacional(unidadeOrganizacional);
}
}
// id do tipo da solicita��o gerada
if (atualizarAdicionarSolicitacaoEspecificacaoActionForm
.getIdServicoOS() != null
&& !atualizarAdicionarSolicitacaoEspecificacaoActionForm
.getIdServicoOS().equals("")) {
// Verifica se o c�digo foi modificado
if (atualizarAdicionarSolicitacaoEspecificacaoActionForm
.getDescricaoServicoOS() == null
|| atualizarAdicionarSolicitacaoEspecificacaoActionForm
.getDescricaoServicoOS().trim().equals("")) {
FiltroServicoTipo filtroServicoTipo = new FiltroServicoTipo();
filtroServicoTipo.adicionarParametro(new ParametroSimples(
FiltroServicoTipo.ID,
atualizarAdicionarSolicitacaoEspecificacaoActionForm
.getIdServicoOS()));
Collection servicoTipoEncontrado = fachada.pesquisar(
filtroServicoTipo, ServicoTipo.class.getName());
if (servicoTipoEncontrado != null
&& !servicoTipoEncontrado.isEmpty()) {
// [SF0003] - Validar Tipo Servi�o
fachada.verificarServicoTipoReferencia(new Integer(
atualizarAdicionarSolicitacaoEspecificacaoActionForm
.getIdServicoOS()));
ServicoTipo servicoTipo = (ServicoTipo) ((List) servicoTipoEncontrado)
.get(0);
solicitacaoTipoEspecificacao
.setServicoTipo(servicoTipo);
} else {
throw new ActionServletException(
"atencao.pesquisa_inexistente", null,
"Servi�o Tipo");
}
} else {
ServicoTipo servicoTipo = new ServicoTipo();
servicoTipo.setId(new Integer(
atualizarAdicionarSolicitacaoEspecificacaoActionForm
.getIdServicoOS()));
solicitacaoTipoEspecificacao.setServicoTipo(servicoTipo);
}
}
// Gera ordem de servi�o
if (atualizarAdicionarSolicitacaoEspecificacaoActionForm
.getIndicadorGeraOrdemServico() != null
&& !atualizarAdicionarSolicitacaoEspecificacaoActionForm
.getIndicadorGeraOrdemServico().equals("")) {
solicitacaoTipoEspecificacao
.setIndicadorGeracaoOrdemServico(new Short(
atualizarAdicionarSolicitacaoEspecificacaoActionForm
.getIndicadorGeraOrdemServico()));
}
// Cliente Obrigat�rio
if (atualizarAdicionarSolicitacaoEspecificacaoActionForm
.getIndicadorCliente() != null
&& !atualizarAdicionarSolicitacaoEspecificacaoActionForm
.getIndicadorCliente().equals("")) {
solicitacaoTipoEspecificacao.setIndicadorCliente(new Short(
atualizarAdicionarSolicitacaoEspecificacaoActionForm
.getIndicadorCliente()));
}
// Situa��o imovel
if (atualizarAdicionarSolicitacaoEspecificacaoActionForm
.getIdSituacaoImovel() != null
&& !atualizarAdicionarSolicitacaoEspecificacaoActionForm
.getIdSituacaoImovel().equals("")) {
EspecificacaoImovelSituacao especificacaoImovelSituacao = new EspecificacaoImovelSituacao();
especificacaoImovelSituacao.setId(new Integer(
atualizarAdicionarSolicitacaoEspecificacaoActionForm
.getIdSituacaoImovel()));
solicitacaoTipoEspecificacao
.setEspecificacaoImovelSituacao(especificacaoImovelSituacao);
}
Collection colecaoEspecificacaoServicoTipo = (Collection) sessao
.getAttribute("colecaoEspecificacaoServicoTipo");
// recupera a cole��o de especificacao servico tipo
if (colecaoEspecificacaoServicoTipo != null
&& !colecaoEspecificacaoServicoTipo.isEmpty()) {
Collection colecao = new ArrayList();
colecao.addAll(colecaoEspecificacaoServicoTipo);
// [SF0004] - Validar Valor Ordem de Servi�o 2� parte
fachada.verificarOrdemExecucaoForaOrdem(colecao);
solicitacaoTipoEspecificacao
.setEspecificacaoServicoTipos(new HashSet(
colecaoEspecificacaoServicoTipo));
// sessao.removeAttribute("colecaoEspecificacaoServicoTipo");
}
// indicador de uso ativo
solicitacaoTipoEspecificacao.setIndicadorUso(new Short(
ConstantesSistema.INDICADOR_USO_ATIVO));
SolicitacaoTipo solicitacaoTipo = new SolicitacaoTipo();
solicitacaoTipo = (SolicitacaoTipo) sessao
.getAttribute("solicitacaoTipoAtualizar");
solicitacaoTipoEspecificacao.setSolicitacaoTipo(solicitacaoTipo);
sessao.setAttribute("solicitacaoTipoEspecificacao",
solicitacaoTipoEspecificacao);
}
// caso exista o parametro ent�o limpa a sess�o e o form
if (httpServletRequest.getParameter("limpaSessao") != null
&& !httpServletRequest.getParameter("limpaSessao").equals("")) {
atualizarAdicionarSolicitacaoEspecificacaoActionForm
.setDescricaoTipoServico("");
atualizarAdicionarSolicitacaoEspecificacaoActionForm
.setIdTipoServico("");
atualizarAdicionarSolicitacaoEspecificacaoActionForm
.setOrdemExecucao("");
}
// recupera o caminho de retorno passado como parametro no jsp que chama
// essa funcionalidade
if (httpServletRequest.getParameter("retornarTelaPopup") != null) {
sessao.setAttribute("retornarTelaPopup", httpServletRequest
.getParameter("retornarTelaPopup"));
}
// Verifica se o tipoConsulta � diferente de nulo ou vazio.Nesse caso �
// quando um o retorno da consulta vem para o action ao inves de ir
// direto para o jsp
if (httpServletRequest.getParameter("tipoConsulta") != null
&& !httpServletRequest.getParameter("tipoConsulta").equals("")) {
// verifica se retornou da pesquisa de tipo de servi�o
if (httpServletRequest.getParameter("tipoConsulta").equals(
"tipoServico")) {
atualizarAdicionarSolicitacaoEspecificacaoActionForm
.setIdTipoServico(httpServletRequest
.getParameter("idCampoEnviarDados"));
atualizarAdicionarSolicitacaoEspecificacaoActionForm
.setDescricaoTipoServico(httpServletRequest
.getParameter("descricaoCampoEnviarDados"));
}
}
// -------Parte que trata do c�digo quando o usu�rio tecla enter
String idTipoServico = (String) atualizarAdicionarSolicitacaoEspecificacaoActionForm
.getIdTipoServico();
String descricaoServico = atualizarAdicionarSolicitacaoEspecificacaoActionForm
.getDescricaoTipoServico();
// Verifica se o c�digo foi digitado pela primeira vez ou se foi
// modificado
if (idTipoServico != null
&& !idTipoServico.trim().equals("")
&& (descricaoServico == null || descricaoServico.trim().equals(
""))) {
FiltroServicoTipo filtroServicoTipo = new FiltroServicoTipo();
filtroServicoTipo.adicionarParametro(new ParametroSimples(
FiltroServicoTipo.ID, idTipoServico));
Collection servicoTipoEncontrado = fachada.pesquisar(
filtroServicoTipo, ServicoTipo.class.getName());
if (servicoTipoEncontrado != null
&& !servicoTipoEncontrado.isEmpty()) {
atualizarAdicionarSolicitacaoEspecificacaoActionForm
.setIdTipoServico(""
+ ((ServicoTipo) ((List) servicoTipoEncontrado)
.get(0)).getId());
atualizarAdicionarSolicitacaoEspecificacaoActionForm
.setDescricaoTipoServico(((ServicoTipo) ((List) servicoTipoEncontrado)
.get(0)).getDescricao());
httpServletRequest.setAttribute("idTipoServicoNaoEncontrado",
"true");
httpServletRequest.setAttribute("nomeCampo", "ordemExecucao");
} else {
atualizarAdicionarSolicitacaoEspecificacaoActionForm
.setIdTipoServico("");
httpServletRequest.setAttribute("nomeCampo", "idServicoOS");
httpServletRequest.setAttribute("idTipoServicoNaoEncontrado",
"exception");
atualizarAdicionarSolicitacaoEspecificacaoActionForm
.setDescricaoTipoServico("Tipo Servi�o Inexistente");
}
}
sessao.removeAttribute("caminhoRetornoTelaPesquisaServicoTipo");
// -------Fim da Parte que trata do c�digo quando o usu�rio tecla enter
return retorno;
}
}