package gcom.gui.atendimentopublico.registroatendimento;
import gcom.atendimentopublico.registroatendimento.AtendimentoMotivoEncerramento;
import gcom.atendimentopublico.registroatendimento.FiltroRaDadosAgenciaReguladora;
import gcom.atendimentopublico.registroatendimento.FiltroRaDadosAgenciaReguladoraFone;
import gcom.atendimentopublico.registroatendimento.RaDadosAgenciaReguladora;
import gcom.atendimentopublico.registroatendimento.RaDadosAgenciaReguladoraFone;
import gcom.atendimentopublico.registroatendimento.RegistroAtendimento;
import gcom.atendimentopublico.registroatendimento.RegistroAtendimentoSolicitante;
import gcom.atendimentopublico.registroatendimento.SolicitacaoTipoEspecificacao;
import gcom.atendimentopublico.registroatendimento.bean.ObterDadosRegistroAtendimentoHelper;
import gcom.cadastro.cliente.Cliente;
import gcom.cadastro.geografico.BairroArea;
import gcom.cadastro.imovel.Imovel;
import gcom.cadastro.localidade.Localidade;
import gcom.cadastro.localidade.Quadra;
import gcom.cadastro.localidade.SetorComercial;
import gcom.cadastro.unidade.UnidadeOrganizacional;
import gcom.fachada.Fachada;
import gcom.gui.GcomAction;
import gcom.operacional.DivisaoEsgoto;
import gcom.util.ConstantesSistema;
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;
/**
* [UC0537] Consultar Dados da Agencia Reguladora
*
* @author K�ssia Albuquerque
* @date 09/05/2007
*/
public class ExibirConsultarRaDadosAgenciaReguladoraAction extends GcomAction {
public ActionForward execute(ActionMapping actionMapping,
ActionForm actionForm, HttpServletRequest httpServletRequest,
HttpServletResponse httpServletResponse) {
ActionForward retorno = actionMapping.findForward("consultarRaDadosAgenciaReguladora");
ConsultarRaDadosAgenciaReguladoraActionForm form = (ConsultarRaDadosAgenciaReguladoraActionForm) actionForm;
Fachada fachada = Fachada.getInstancia();
HttpSession sessao = httpServletRequest.getSession(false);
Integer idRegistroAtendimento;
RaDadosAgenciaReguladora raDadosAgenciaReguladora;
if (httpServletRequest.getParameter("idRa") != null) {
// Vem do Manter
idRegistroAtendimento = new Integer(httpServletRequest.getParameter("idRa"));
RaDadosAgenciaReguladora raDadosAgenciaReguladoraFiltro = new RaDadosAgenciaReguladora();
FiltroRaDadosAgenciaReguladora filtroRaDadosAgenciaReguladora = (FiltroRaDadosAgenciaReguladora)raDadosAgenciaReguladoraFiltro.retornaFiltro();
filtroRaDadosAgenciaReguladora.limparListaParametros();
filtroRaDadosAgenciaReguladora.adicionarParametro(new ParametroSimples(FiltroRaDadosAgenciaReguladora.REGISTRO_ATENDIMENTO_ID, idRegistroAtendimento));
Collection colecaoRaDadosAgenciaReguladora = fachada.pesquisar(filtroRaDadosAgenciaReguladora,RaDadosAgenciaReguladora.class.getName());
raDadosAgenciaReguladora = (RaDadosAgenciaReguladora) Util.retonarObjetoDeColecao(colecaoRaDadosAgenciaReguladora);
}else{
// Vem do Filtrar
raDadosAgenciaReguladora = (RaDadosAgenciaReguladora)sessao.getAttribute("raDadosAgenciaReguladora");
idRegistroAtendimento = raDadosAgenciaReguladora.getRegistroAtendimento().getId();
}
ObterDadosRegistroAtendimentoHelper registroAtendimentoHelper = fachada.obterDadosRegistroAtendimento(idRegistroAtendimento);
// Dados Gerais do Registro de Atendimento
setDadosRA(form, registroAtendimentoHelper);
setDadosSolicitante(form, registroAtendimentoHelper);
setDadosEnderecoOcorrencia(form, registroAtendimentoHelper);
setUnidades(form, registroAtendimentoHelper);
//XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXx
// Pesquisando a cole�ao de fones com o valor do Id da Agencia Reguladora
FiltroRaDadosAgenciaReguladoraFone filtroRaDadosAgenciaReguladoraFone = new FiltroRaDadosAgenciaReguladoraFone();
filtroRaDadosAgenciaReguladoraFone.adicionarParametro(new ParametroSimples
(FiltroRaDadosAgenciaReguladoraFone.AGENCIA_REGULADORA_ID,raDadosAgenciaReguladora.getId()));
filtroRaDadosAgenciaReguladoraFone.adicionarCaminhoParaCarregamentoEntidade("foneTipo");
Collection colecaoRaDadosAgenciaReguladoraFone = fachada.pesquisar
(filtroRaDadosAgenciaReguladoraFone,RaDadosAgenciaReguladoraFone.class.getName());
if (colecaoRaDadosAgenciaReguladoraFone != null && !colecaoRaDadosAgenciaReguladoraFone.isEmpty()){
sessao.setAttribute("colecaoRaDadosAgenciaReguladoraFone",colecaoRaDadosAgenciaReguladoraFone);
}
// Dados da Reclama��o na Ag�ncia Reguladora
form.setNumReclamacao(""+raDadosAgenciaReguladora.getAgenciaReguladora());
if (raDadosAgenciaReguladora.getCodigoSituacao()!= ConstantesSistema.SITUACAO_AGENCIA_TODOS){
if (raDadosAgenciaReguladora.getCodigoSituacao()== ConstantesSistema.SITUACAO_AGENCIA_ENCERRADO ){
form.setSitAgReguladora("ENCERRADO");
}else{
form.setSitAgReguladora("PENDENTE");
}
}
form.setDtPrevAgRegOriginal(Util.formatarData(raDadosAgenciaReguladora.getDataPrevisaoOriginal()));
form.setDtPrevAgRegAtual(Util.formatarData(raDadosAgenciaReguladora.getDataPrevisaoAtual()));
if(raDadosAgenciaReguladora.getAgenciaReguladoraMotReclamacao()!= null ){
form.setMotivoReclamacaoId(raDadosAgenciaReguladora.getAgenciaReguladoraMotReclamacao().getId().toString());
form.setMotivoReclamacaoDescricao(raDadosAgenciaReguladora.getAgenciaReguladoraMotReclamacao().getDescricao());
}
form.setDataReclamacao(Util.formatarData(raDadosAgenciaReguladora.getDataReclamacao()));
form.setHoraReclamacao(Util.formatarHoraSemData(raDadosAgenciaReguladora.getDataReclamacao()));
if (raDadosAgenciaReguladora.getDescricaoReclamacao() != null
&& !raDadosAgenciaReguladora.getDescricaoReclamacao().equals("")){
form.setDescricaoReclamacao(raDadosAgenciaReguladora.getDescricaoReclamacao());
}
if (raDadosAgenciaReguladora.getAtendimentoMotivoEncerramento()!= null){
form.setMotEncerramentoId(raDadosAgenciaReguladora.getAtendimentoMotivoEncerramento().getId().toString());
form.setDescricaoMotEncerramento(raDadosAgenciaReguladora.getAtendimentoMotivoEncerramento().getDescricao());
}
// Dados do Retorno para Ag�ncia
if(raDadosAgenciaReguladora.getAgenciaReguladoraMotRetorno() != null){
form.setMotivoRetornoId(raDadosAgenciaReguladora.getAgenciaReguladoraMotRetorno().getId().toString());
form.setMotivoRetornoDescricao(raDadosAgenciaReguladora.getAgenciaReguladoraMotRetorno().getDescricao());
}
if (raDadosAgenciaReguladora.getDataRetorno()!= null &&
!raDadosAgenciaReguladora.getDataRetorno().equals("")){
form.setDataRetorno(Util.formatarData(raDadosAgenciaReguladora.getDataRetorno()));
form.setHoraRetorno(Util.formatarHoraSemData(raDadosAgenciaReguladora.getDataRetorno()));
}
if (raDadosAgenciaReguladora.getDescricaoRetorno() != null
&& !raDadosAgenciaReguladora.getDescricaoRetorno().equals("")){
form.setDescricaoRetorno(raDadosAgenciaReguladora.getDescricaoRetorno());
}
// Dados do Contato para Ag�ncia
if (raDadosAgenciaReguladora.getContato() != null
&& !raDadosAgenciaReguladora.getContato().equals("")){
form.setNomeContato(raDadosAgenciaReguladora.getContato());
}
if (raDadosAgenciaReguladora.getEmailContato()!= null
&& !raDadosAgenciaReguladora.getEmailContato().equals("")){
form.setMailContato(raDadosAgenciaReguladora.getEmailContato());
}
if (raDadosAgenciaReguladora.getOrgaoContato()!= null
&& !raDadosAgenciaReguladora.getOrgaoContato().equals("")){
form.setNomeOrgaoContato(raDadosAgenciaReguladora.getOrgaoContato());
}
if (raDadosAgenciaReguladora.getDddContato()!=null
&& !raDadosAgenciaReguladora.getDddContato().equals("")){
form.setDddContato(Short.toString(raDadosAgenciaReguladora.getDddContato()));
}
if (raDadosAgenciaReguladora.getFoneContato()!= null
&& !raDadosAgenciaReguladora.getFoneContato().equals("")){
form.setTelefoneContato(raDadosAgenciaReguladora.getFoneContato());
}
if (raDadosAgenciaReguladora.getRamalContato()!=null
&& !raDadosAgenciaReguladora.getFoneContato().equals("")){
form.setRamalContato(raDadosAgenciaReguladora.getFoneContato());
}
if (raDadosAgenciaReguladora.getFaxContato()!=null
&& !raDadosAgenciaReguladora.getFoneContato().equals("")){
form.setFaxContato(raDadosAgenciaReguladora.getFoneContato());
}
// XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
return retorno;
}
/**
* Carrega Unidades (Atendimento e Atual)
*
* @param form
* @param registroAtendimentoHelper
*/
private void setUnidades(ConsultarRaDadosAgenciaReguladoraActionForm form,
ObterDadosRegistroAtendimentoHelper registroAtendimentoHelper) {
UnidadeOrganizacional unidadeAtendimento = registroAtendimentoHelper.getUnidadeAtendimento();
if (unidadeAtendimento != null) {
form.setUnidadeAtendimentoId("" + unidadeAtendimento.getId());
form.setUnidadeAtendimentoDescricao(unidadeAtendimento.getDescricao());
}
UnidadeOrganizacional unidadeAtual = registroAtendimentoHelper.getUnidadeAtual();
if (unidadeAtual != null) {
form.setUnidadeAtualId("" + unidadeAtual.getId());
form.setUnidadeAtualDescricao(unidadeAtual.getDescricao());
}
}
/**
* Carrega Dados do RA
*
* @param form
* @param registroAtendimentoHelper
*/
private void setDadosRA(ConsultarRaDadosAgenciaReguladoraActionForm form,
ObterDadosRegistroAtendimentoHelper registroAtendimentoHelper) {
RegistroAtendimento registroAtendimento = registroAtendimentoHelper.getRegistroAtendimento();
// Dados Gerais do Registro de Atendimento
form.setNumeroRADados("" + registroAtendimento.getId());
form.setSituacaoRA(registroAtendimentoHelper.getDescricaoSituacaoRA());
if (registroAtendimentoHelper.getRAAssociado() != null) {
form.setNumeroRaAssociado(""+ registroAtendimentoHelper.getRAAssociado().getId());
form.setSituacaoRaAssociado(registroAtendimentoHelper.getDescricaoSituacaoRAAssociado());
}
SolicitacaoTipoEspecificacao solicitacaoTipoEspecificacao = registroAtendimento.getSolicitacaoTipoEspecificacao();
if (solicitacaoTipoEspecificacao != null) {
if (solicitacaoTipoEspecificacao.getSolicitacaoTipo() != null) {
form.setTipoSolicitacaoId(solicitacaoTipoEspecificacao.getSolicitacaoTipo().getId()+ "");
form.setTipoSolicitacaoDescricao(solicitacaoTipoEspecificacao.getSolicitacaoTipo().getDescricao());
}
form.setEspecificacaoId(solicitacaoTipoEspecificacao.getId() + "");
form.setEspecificacaoDescricao(solicitacaoTipoEspecificacao.getDescricao());
}
if (registroAtendimento.getMeioSolicitacao() != null) {
form.setMeioSolicitacaoId(registroAtendimento.getMeioSolicitacao().getId()+ "");
form.setMeioSolicitacaoDescricao(registroAtendimento.getMeioSolicitacao().getDescricao());
}
// Imovel
Imovel imovel = registroAtendimento.getImovel();
if (imovel != null) {
form.setMatriculaImovel("" + imovel.getId());
form.setInscricaoImovel(imovel.getInscricaoFormatada());
}
Date dataAtendimento = registroAtendimento.getRegistroAtendimento();
form.setDataAtendimento(Util.formatarData(dataAtendimento));
form.setHoraAtendimento(Util.formatarHoraSemData(dataAtendimento));
form.setDataPrevista(Util.formatarData(registroAtendimento.getDataPrevistaAtual()));
// Encerramento
setDadosEncerramento(form, registroAtendimento);
// Dados necess�rio p/ inserir o novo RA
if (registroAtendimento.getLogradouroBairro() != null) {
form.setLogradouroBairro(registroAtendimento.getLogradouroBairro().getId());
}
if (registroAtendimento.getLogradouroCep() != null) {
form.setLogradouroCep(registroAtendimento.getLogradouroCep().getId());
}
form.setComplementoEndereco(registroAtendimento.getComplementoEndereco());
if (registroAtendimento.getLocalOcorrencia() != null) {
form.setLocalOcorrencia(registroAtendimento.getLocalOcorrencia().getId());
}
if (registroAtendimento.getPavimentoRua() != null) {
form.setPavimentoRua(registroAtendimento.getPavimentoRua().getId());
}
if (registroAtendimento.getPavimentoCalcada() != null) {
form.setPavimentoCalcada(registroAtendimento.getPavimentoCalcada().getId());
}
form.setDescricaoLocalOcorrencia(registroAtendimento.getDescricaoLocalOcorrencia());
}
/**
* Carrega Dados do RA
*
* @param form
* @param registroAtendimento
*/
private void setDadosEncerramento(ConsultarRaDadosAgenciaReguladoraActionForm form,RegistroAtendimento registroAtendimento) {
AtendimentoMotivoEncerramento atendimentoMotivoEncerramento = registroAtendimento.getAtendimentoMotivoEncerramento();
if (atendimentoMotivoEncerramento != null) {
form.setIdMotivoEncerramento(""+ atendimentoMotivoEncerramento.getId());
form.setMotivoEncerramento(atendimentoMotivoEncerramento.getDescricao());
Date dataEncerramento = registroAtendimento.getDataEncerramento();
form.setDataEncerramento(Util.formatarData(dataEncerramento));
}
}
/**
* Carrega Dados do Solicitante
*
* @param form
* @param registroAtendimentoHelper
*/
private void setDadosSolicitante(ConsultarRaDadosAgenciaReguladoraActionForm form,ObterDadosRegistroAtendimentoHelper registroAtendimentoHelper) {
// Dados do Solicitante
RegistroAtendimentoSolicitante registroAtendimentoSolicitante = registroAtendimentoHelper.getSolicitante();
if (registroAtendimentoSolicitante != null) {
form.setIdRaSolicitante(registroAtendimentoSolicitante.getID());
Cliente cliente = registroAtendimentoSolicitante.getCliente();
UnidadeOrganizacional unidadeSolicitante = registroAtendimentoSolicitante.getUnidadeOrganizacional();
// Caso o principal solicitante do registro de atendimento seja um
// cliente
// obter os dados do cliente
if (cliente != null) {
form.setIdClienteSolicitante("" + cliente.getId());
form.setClienteSolicitante(cliente.getNome());
// Caso o principal solicitante do registro de atendimento seja
// uma unidade
// obter os dados da unidade
} else if (unidadeSolicitante != null) {
form.setIdUnidadeSolicitante("" + unidadeSolicitante.getId());
form.setUnidadeSolicitante(unidadeSolicitante.getDescricao());
// Caso o principal solicitante do registro de atendimento n�o
// seja um cliente, nem uma unidade
// obter os dados do solicitante
} else {
form.setNomeSolicitante(registroAtendimentoSolicitante.getSolicitante());
}
}
}
/**
* Carrega Dados do Endere�o de Ocorr�ncia
*
* @param form
* @param registroAtendimentoHelper
*/
private void setDadosEnderecoOcorrencia(ConsultarRaDadosAgenciaReguladoraActionForm form,ObterDadosRegistroAtendimentoHelper registroAtendimentoHelper) {
String enderecoOcorrencia = registroAtendimentoHelper.getEnderecoOcorrencia();
form.setEnderecoOcorrencia(enderecoOcorrencia);
form.setPontoReferencia(registroAtendimentoHelper.getRegistroAtendimento().getPontoReferencia());
// Caso o registro atendimento esteja associado a uma �rea de bairro,
// obter os dados da �rea do bairro
BairroArea bairroArea = registroAtendimentoHelper.getRegistroAtendimento().getBairroArea();
if (bairroArea != null) {
form.setBairroId("" + bairroArea.getBairro().getId());
form.setBairroDescricao(bairroArea.getBairro().getNome());
form.setAreaBairroId("" + bairroArea.getId());
form.setAreaBairroDescricao(bairroArea.getNome());
}
Localidade localidade = registroAtendimentoHelper.getRegistroAtendimento().getLocalidade();
if (localidade != null) {
form.setLocalidadeId("" + localidade.getId());
form.setLocalidadeDescricao(localidade.getDescricao());
}
SetorComercial setorComercial = registroAtendimentoHelper.getRegistroAtendimento().getSetorComercial();
if (setorComercial != null) {
form.setSetorComercialId("" + setorComercial.getId());
form.setSetorComercialCodigo("" + setorComercial.getCodigo());
}
Quadra quadra = registroAtendimentoHelper.getRegistroAtendimento().getQuadra();
if (quadra != null) {
form.setQuadraId("" + quadra.getId());
form.setQuadraNumero("" + quadra.getNumeroQuadra());
}
DivisaoEsgoto divisaoEsgoto = registroAtendimentoHelper.getRegistroAtendimento().getDivisaoEsgoto();
if (divisaoEsgoto != null) {
form.setDivisaoEsgotoId("" + divisaoEsgoto.getId());
form.setDivisaoEsgotoDescricao(divisaoEsgoto.getDescricao());
}
}
}