package gcom.gui.atendimentopublico.hidrometro;
import gcom.atendimentopublico.ordemservico.OrdemServico;
import gcom.cadastro.cliente.Cliente;
import gcom.cadastro.cliente.ClienteImovel;
import gcom.cadastro.cliente.ClienteRelacaoTipo;
import gcom.cadastro.cliente.ClienteTipo;
import gcom.cadastro.cliente.FiltroClienteImovel;
import gcom.cadastro.imovel.FiltroImovel;
import gcom.cadastro.imovel.FiltroPocoTipo;
import gcom.cadastro.imovel.Imovel;
import gcom.cadastro.imovel.PocoTipo;
import gcom.fachada.Fachada;
import gcom.gui.ActionServletException;
import gcom.gui.GcomAction;
import gcom.micromedicao.hidrometro.FiltroHidrometroLocalInstalacao;
import gcom.micromedicao.hidrometro.FiltroHidrometroProtecao;
import gcom.micromedicao.hidrometro.HidrometroInstalacaoHistorico;
import gcom.micromedicao.hidrometro.HidrometroLocalInstalacao;
import gcom.micromedicao.hidrometro.HidrometroProtecao;
import gcom.micromedicao.medicao.MedicaoTipo;
import gcom.seguranca.acesso.PermissaoEspecial;
import gcom.seguranca.acesso.usuario.Usuario;
import gcom.util.ConstantesSistema;
import gcom.util.Util;
import gcom.util.filtro.ParametroNulo;
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 lms
* @date 17/07/2006
*/
public class ExibirAtualizarInstalacaoHidrometroAction extends GcomAction {
/**
* Este caso de uso permite efetuar a atualiza��o dos atributos da
* instala��o do hidr�metro
*
* [UC0368] Atualizar Instala��o de Hidr�metro
*
* @param actionMapping
* @param actionForm
* @param httpServletRequest
* @param httpServletResponse
* @return
*/
public ActionForward execute(ActionMapping actionMapping,
ActionForm actionForm, HttpServletRequest httpServletRequest,
HttpServletResponse httpServletResponse) {
ActionForward retorno = actionMapping
.findForward("atualizarInstalacaoHidrometro");
AtualizarInstalacaoHidrometroActionForm form = (AtualizarInstalacaoHidrometroActionForm) actionForm;
Fachada fachada = Fachada.getInstancia();
/* // Flag indicando que o usu�rio fez uma consulta a partir da tecla Enter
String objetoConsulta = httpServletRequest.getParameter("objetoConsulta");
String tipoConsulta = httpServletRequest.getParameter("tipoConsulta");*/
Boolean veioEncerrarOS = null;
if (httpServletRequest.getAttribute("veioEncerrarOS") != null) {
veioEncerrarOS = Boolean.TRUE;
} else {
veioEncerrarOS = Boolean.FALSE;
}
HttpSession sessao = httpServletRequest.getSession(false);
Usuario usuarioLogado = (Usuario) sessao.getAttribute("usuarioLogado");
if (form.getReset().equals("true")) {
form.reset();
} else if (form.getReset().equals("hidrometro")) {
form.resetHidrometro();
}
// Permissao Especial Efetuar Ligacao de Agua sem RA
boolean atualizarInstalcaoHidrometroSemRA = Fachada.getInstancia()
.verificarPermissaoEspecial(PermissaoEspecial.ATUALIZAR_INSTALACAO_DO_HIDROMETRO,usuarioLogado);
httpServletRequest.setAttribute("atualizarInstalcaoHidrometroSemRA",atualizarInstalcaoHidrometroSemRA);
form.setPermissaoAtualizarInstalacaoHidrometrosemRA("false");
// Constr�i filtro para pesquisa dos locais de instala��o
FiltroHidrometroLocalInstalacao filtroHidrometroLocalInstalacao = new FiltroHidrometroLocalInstalacao();
filtroHidrometroLocalInstalacao.setCampoOrderBy(FiltroHidrometroLocalInstalacao.DESCRICAO);
filtroHidrometroLocalInstalacao.adicionarParametro(new ParametroSimples(
FiltroHidrometroLocalInstalacao.INDICADOR_USO, ConstantesSistema.INDICADOR_USO_ATIVO));
sessao.setAttribute("colecaoLocalInstalacao", fachada.pesquisar(
filtroHidrometroLocalInstalacao, HidrometroLocalInstalacao.class.getName()));
// Constr�i o filtro para pesquisa das prote��es
FiltroHidrometroProtecao filtroHidrometroProtecao = new FiltroHidrometroProtecao();
filtroHidrometroProtecao.setCampoOrderBy(FiltroHidrometroProtecao.DESCRICAO);
filtroHidrometroProtecao.adicionarParametro(new ParametroSimples(
FiltroHidrometroProtecao.INDICADOR_USO, ConstantesSistema.INDICADOR_USO_ATIVO));
sessao.setAttribute("colecaoProtecao", fachada.pesquisar(
filtroHidrometroProtecao, HidrometroProtecao.class.getName()));
Integer idOrdemServico = Util.converterStringParaInteger(httpServletRequest.getParameter("idOrdemServico"));
form.setUsuarioNaoEncontrado("false");
FiltroPocoTipo filtroPocoTipo = new FiltroPocoTipo();
filtroPocoTipo.setCampoOrderBy(FiltroPocoTipo.DESCRICAO);
filtroPocoTipo.adicionarParametro(
new ParametroSimples(
FiltroPocoTipo.INDICADOR_USO,
ConstantesSistema.INDICADOR_USO_ATIVO));
filtroPocoTipo.adicionarParametro(
new ParametroSimples(
FiltroPocoTipo.INDICADOR_HIDROMETRO_TIPO_POCO,
ConstantesSistema.INDICADOR_USO_ATIVO));
Collection colecaoTipoPoco =
Fachada.getInstancia().pesquisar(filtroPocoTipo,
PocoTipo.class.getName());
httpServletRequest.setAttribute("colecaoTipoPoco", colecaoTipoPoco);
String idImovel = null;
if (httpServletRequest.getParameter("matriculaImovel") != null
&& !httpServletRequest.getParameter("matriculaImovel").equalsIgnoreCase("")) {
idImovel = (String) httpServletRequest.getParameter("matriculaImovel");
} else {
idImovel = form.getIdImovel();
}
if (idImovel != null && !idImovel.trim().equals("")) {
// Pesquisa o imovel na base
String inscricaoImovelEncontrado = fachada
.pesquisarInscricaoImovel(new Integer(idImovel));
if (inscricaoImovelEncontrado != null
&& !inscricaoImovelEncontrado.equalsIgnoreCase("")) {
form.setMatriculaImovel(idImovel);
form.setInscricaoImovel(inscricaoImovelEncontrado);
FiltroImovel filtroImovel = new FiltroImovel();
filtroImovel.adicionarParametro(new ParametroSimples(
FiltroImovel.ID, idImovel));
filtroImovel.adicionarCaminhoParaCarregamentoEntidade(FiltroImovel.LIGACAO_AGUA_SITUACAO);
filtroImovel.adicionarCaminhoParaCarregamentoEntidade(FiltroImovel.LIGACAO_ESGOTO_SITUACAO);
filtroImovel.adicionarCaminhoParaCarregamentoEntidade("hidrometroInstalacaoHistorico.hidrometro");
filtroImovel.adicionarCaminhoParaCarregamentoEntidade("hidrometroInstalacaoHistorico.hidrometroProtecao");
filtroImovel.adicionarCaminhoParaCarregamentoEntidade("quadra");
filtroImovel.adicionarCaminhoParaCarregamentoEntidade("ligacaoAgua.hidrometroInstalacaoHistorico");
filtroImovel.adicionarCaminhoParaCarregamentoEntidade("ligacaoAgua.hidrometroInstalacaoHistorico.hidrometro");
filtroImovel.adicionarCaminhoParaCarregamentoEntidade("ligacaoAgua.hidrometroInstalacaoHistorico.hidrometroProtecao");
Collection colecaoImovel = fachada.pesquisar(filtroImovel,
Imovel.class.getName());
Imovel imovel = (Imovel) colecaoImovel.iterator().next();
// [FS0002] Verificar Situa��o do Imovel.
if (ConstantesSistema.INDICADOR_IMOVEL_EXCLUIDO == imovel
.getIndicadorExclusao()) {
throw new ActionServletException(
"atencao.atualizar_imovel_situacao_invalida", null,
imovel.getId().toString());
}
form.setSituacaoLigacaoAgua(imovel.getLigacaoAguaSituacao().getDescricao());
form.setSituacaoLigacaoEsgoto(imovel.getLigacaoEsgotoSituacao().getDescricao());
FiltroClienteImovel filtroClienteImovel = new FiltroClienteImovel();
filtroClienteImovel.adicionarParametro(new ParametroSimples(
FiltroClienteImovel.IMOVEL_ID, idImovel));
filtroClienteImovel
.adicionarCaminhoParaCarregamentoEntidade(FiltroClienteImovel.CLIENTE);
filtroClienteImovel
.adicionarCaminhoParaCarregamentoEntidade(FiltroClienteImovel.CLIENTE_TIPO);
Collection colecaoClienteImovel = fachada.pesquisar(
filtroClienteImovel, ClienteImovel.class.getName());
if (colecaoClienteImovel != null
&& !colecaoClienteImovel.isEmpty()) {
ClienteImovel clienteImovel = (ClienteImovel) colecaoClienteImovel
.iterator().next();
form
.setClienteUsuario(clienteImovel.getCliente()
.getNome());
if (clienteImovel.getCliente().getClienteTipo().getId()
.intValue() == ClienteTipo.INDICADOR_PESSOA_FISICA
.intValue()) {
form.setCpfCnpjCliente(clienteImovel.getCliente()
.getCpfFormatado());
} else if (clienteImovel.getCliente().getClienteTipo()
.getId().intValue() == ClienteTipo.INDICADOR_PESSOA_JURIDICA
.intValue()) {
form.setCpfCnpjCliente(clienteImovel.getCliente()
.getCnpjFormatado());
} else {
form.setCpfCnpjCliente("");
}
}
HidrometroInstalacaoHistorico hidrometroInstalacaoHistorico = null;
// Verifica se o tipo de medi��o foi informado
if (Util.validarStringNumerica(form.getMedicaoTipo())) {
Integer medicaoTipo = Integer.parseInt(form
.getMedicaoTipo());
fachada.validarExistenciaHidrometro(imovel, medicaoTipo);
if (MedicaoTipo.LIGACAO_AGUA.equals(medicaoTipo)) {
hidrometroInstalacaoHistorico = imovel.getLigacaoAgua()
.getHidrometroInstalacaoHistorico();
} else if (MedicaoTipo.POCO.equals(medicaoTipo)) {
hidrometroInstalacaoHistorico = imovel
.getHidrometroInstalacaoHistorico();
}
// Seta os campos obrigat�rios do form
form.setDataInstalacao(Util
.formatarData(hidrometroInstalacaoHistorico
.getDataInstalacao()));
form.setHidrometro(hidrometroInstalacaoHistorico
.getHidrometro().getNumero());
form.setLocalInstalacao(hidrometroInstalacaoHistorico
.getHidrometroLocalInstalacao().getId().toString());
form
.setIndicadorExistenciaCavalete(hidrometroInstalacaoHistorico
.getIndicadorExistenciaCavalete()
.toString());
form.setLeituraInstalacao(hidrometroInstalacaoHistorico
.getNumeroLeituraInstalacao().toString());
// Seta os campos opcionais do form
form
.setNumeroSelo(Util
.converterObjetoParaString(hidrometroInstalacaoHistorico
.getNumeroSelo()));
form
.setLeituraCorte(Util
.converterObjetoParaString(hidrometroInstalacaoHistorico
.getNumeroLeituraCorte()));
form
.setLeituraSupressao(Util
.converterObjetoParaString(hidrometroInstalacaoHistorico
.getNumeroLeituraSupressao()));
form
.setLeituraRetirada(Util
.converterObjetoParaString(hidrometroInstalacaoHistorico
.getNumeroLeituraRetirada()));
form
.setNumeroLacre(Util
.converterObjetoParaString(hidrometroInstalacaoHistorico
.getNumeroLacre()));
form.setProtecao(hidrometroInstalacaoHistorico
.getHidrometroProtecao().getId().toString());
httpServletRequest.setAttribute(
"hidrometroInstalacaoHistorico",
hidrometroInstalacaoHistorico);
}
}
}
if (Util.validarNumeroMaiorQueZERO(idOrdemServico)) {
OrdemServico ordemServico = fachada.recuperaOSPorId(idOrdemServico);
if (ordemServico != null) {
sessao.setAttribute("ordemServicoEncontrada", "true");
// Realiza a pesquisa do im�vel
fachada.validarExibirAtualizarInstalacaoHidrometro(
ordemServico, veioEncerrarOS);
form.setVeioEncerrarOS("" + veioEncerrarOS);
Imovel imovel = ordemServico.getRegistroAtendimento()
.getImovel();
// Constr�i o filtro para pesquisa do cliente do im�vel
FiltroClienteImovel filtroClienteImovel = new FiltroClienteImovel();
filtroClienteImovel
.adicionarCaminhoParaCarregamentoEntidade("cliente");
filtroClienteImovel.adicionarParametro(new ParametroSimples(
FiltroClienteImovel.IMOVEL_ID, imovel.getId()));
filtroClienteImovel.adicionarParametro(new ParametroSimples(
FiltroClienteImovel.CLIENTE_RELACAO_TIPO,
ClienteRelacaoTipo.USUARIO));
filtroClienteImovel.adicionarParametro(new ParametroNulo(
FiltroClienteImovel.DATA_FIM_RELACAO));
// Realiza a pesquisa do cliente usu�rio
ClienteImovel clienteImovel = (ClienteImovel) fachada
.pesquisar(filtroClienteImovel,
ClienteImovel.class.getName()).iterator()
.next();
Cliente cliente = clienteImovel.getCliente();
String cpfCnpjCliente = "";
if (cliente.getCpf() != null && !cliente.getCpf().equals("")) {
cpfCnpjCliente = cliente.getCpfFormatado();
} else {
cpfCnpjCliente = cliente.getCnpjFormatado();
}
// Seta os campos obrigat�rios do form
form.setIdOrdemServico(idOrdemServico.toString());
form.setNomeOrdemServico(ordemServico.getServicoTipo()
.getDescricao());
form.setMatriculaImovel(imovel.getId().toString());
String inscricaoFormatada = fachada
.pesquisarInscricaoImovel(imovel.getId());
form.setInscricaoImovel(inscricaoFormatada);
form.setSituacaoLigacaoAgua(imovel.getLigacaoAguaSituacao()
.getDescricao());
form.setSituacaoLigacaoEsgoto(imovel.getLigacaoEsgotoSituacao()
.getDescricao());
form.setClienteUsuario(cliente.getNome());
if ("00.000.000/0000-00".equals(cpfCnpjCliente)) {
form.setCpfCnpjCliente("");
} else {
form.setCpfCnpjCliente(cpfCnpjCliente);
}
HidrometroInstalacaoHistorico hidrometroInstalacaoHistorico = null;
// Verifica se o tipo de medi��o foi informado
if (Util.validarStringNumerica(form.getMedicaoTipo())) {
Integer medicaoTipo = Integer.parseInt(form
.getMedicaoTipo());
fachada.validarExistenciaHidrometro(imovel, medicaoTipo);
if (MedicaoTipo.LIGACAO_AGUA.equals(medicaoTipo)) {
hidrometroInstalacaoHistorico = imovel.getLigacaoAgua()
.getHidrometroInstalacaoHistorico();
} else if (MedicaoTipo.POCO.equals(medicaoTipo)) {
hidrometroInstalacaoHistorico = imovel
.getHidrometroInstalacaoHistorico();
Imovel imovelPoco = fachada.pesquisarImovel(imovel.getId());
if (imovelPoco.getPocoTipo() != null){
form.setTipoPoco(
imovelPoco.getPocoTipo().getId().toString());
}
}
// Seta os campos obrigat�rios do form
form.setDataInstalacao(Util
.formatarData(hidrometroInstalacaoHistorico
.getDataInstalacao()));
form.setHidrometro(hidrometroInstalacaoHistorico
.getHidrometro().getNumero());
form.setLocalInstalacao(hidrometroInstalacaoHistorico
.getHidrometroLocalInstalacao().getId().toString());
form.setProtecao(hidrometroInstalacaoHistorico
.getHidrometroProtecao().getId().toString());
form
.setIndicadorExistenciaCavalete(hidrometroInstalacaoHistorico
.getIndicadorExistenciaCavalete()
.toString());
form.setLeituraInstalacao(hidrometroInstalacaoHistorico
.getNumeroLeituraInstalacao().toString());
// Seta os campos opcionais do form
form
.setNumeroSelo(Util
.converterObjetoParaString(hidrometroInstalacaoHistorico
.getNumeroSelo()));
form
.setLeituraCorte(Util
.converterObjetoParaString(hidrometroInstalacaoHistorico
.getNumeroLeituraCorte()));
form
.setLeituraSupressao(Util
.converterObjetoParaString(hidrometroInstalacaoHistorico
.getNumeroLeituraSupressao()));
form
.setLeituraRetirada(Util
.converterObjetoParaString(hidrometroInstalacaoHistorico
.getNumeroLeituraRetirada()));
form
.setNumeroLacre(Util
.converterObjetoParaString(hidrometroInstalacaoHistorico
.getNumeroLacre()));
httpServletRequest.setAttribute(
"hidrometroInstalacaoHistorico",
hidrometroInstalacaoHistorico);
}
} else {
sessao.removeAttribute("ordemServicoEncontrada");
form.setIdOrdemServico("");
form.setNomeOrdemServico("Ordem de Servi�o Inexistente");
}
} else {
form.setDataCorrente(new Date());
httpServletRequest.setAttribute("nomeCampo", "idOrdemServico");
}
return retorno;
}
}