package gcom.gui.cadastro.atualizacaocadastral;
import gcom.atualizacaocadastral.ImagemRetorno;
import gcom.atualizacaocadastral.ImovelControleAtualizacaoCadastral;
import gcom.cadastro.SituacaoAtualizacaoCadastral;
import gcom.cadastro.atualizacaocadastral.SituacaoAguaHelper;
import gcom.cadastro.atualizacaocadastral.SituacaoEsgotoHelper;
import gcom.cadastro.atualizacaocadastral.SituacaoSubcategoriaHelper;
import gcom.cadastro.atualizacaocadastral.bean.DadosTabelaAtualizacaoCadastralHelper;
import gcom.cadastro.imovel.FiltroImovel;
import gcom.cadastro.imovel.Imovel;
import gcom.cadastro.imovel.ImovelSubcategoriaAtualizacaoCadastral;
import gcom.cadastro.localidade.Localidade;
import gcom.cadastro.localidade.Quadra;
import gcom.cadastro.localidade.SetorComercial;
import gcom.fachada.Fachada;
import gcom.gui.ActionServletException;
import gcom.gui.GcomAction;
import gcom.seguranca.acesso.usuario.Usuario;
import gcom.seguranca.transacao.AlteracaoTipo;
import gcom.util.AtualizacaoCadastralUtil;
import gcom.util.Util;
import gcom.util.filtro.ParametroSimples;
import java.util.Collection;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
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;
public class ExibirAtualizarDadosImovelAtualizacaoCadastralPopupAction extends GcomAction {
private Fachada fachada = Fachada.getInstancia();
public ActionForward execute(ActionMapping actionMapping, ActionForm actionForm, HttpServletRequest request, HttpServletResponse response) {
ActionForward retorno = actionMapping.findForward("exibirAtualizarDadosImovelAtualizacaoCadastralPopup");
HttpSession sessao = request.getSession(false);
ExibirAtualizarDadosImovelAtualizacaoCadastralPopupActionForm form = (ExibirAtualizarDadosImovelAtualizacaoCadastralPopupActionForm) actionForm;
String idImovel = (String) request.getParameter("idImovel");
String idTipoAlteracao = (String) request.getParameter("idTipoAlteracao");
Usuario usuario = (Usuario) sessao.getAttribute("usuarioLogado");
form.setTemPermissaoAprovarImovel(temPermissaoAprovarImovel(usuario.getId(), idImovel));
try {
Collection<DadosTabelaAtualizacaoCadastralHelper> resumoImovel = new LinkedList<DadosTabelaAtualizacaoCadastralHelper>();
if ((idImovel != null && !idImovel.equals(""))) {
form.setIdImovel(idImovel);
Imovel imovel = null;
if (idTipoAlteracao.equals(AlteracaoTipo.ALTERACAO.toString())
|| idTipoAlteracao.equals(AlteracaoTipo.EXCLUSAO.toString()))
imovel = pesquisarImovel(fachada, idImovel);
if (imovel != null) {
form.setDescricaoImovel(imovel.getId().toString());
Localidade localidade = imovel.getLocalidade();
form.setIdLocalidade(localidade.getId().toString());
form.setDescricaoLocalidade(localidade.getDescricao());
SetorComercial setorComercial = imovel.getSetorComercial();
form.setIdSetorComercial(setorComercial.getId().toString());
form.setCodigoSetorComercial(Integer.toString(setorComercial.getCodigo()));
form.setDescricaoSetorComercial(setorComercial.getDescricao());
Quadra quadra = (Quadra) imovel.getQuadra();
form.setIdQuadra(quadra.getId().toString());
form.setNumeroQuadra(Integer.toString(quadra.getNumeroQuadra()));
resumoImovel.add(new SituacaoAguaHelper(imovel.getLigacaoAguaSituacao().getDescricao()));
resumoImovel.add(new SituacaoEsgotoHelper(imovel.getLigacaoEsgotoSituacao().getDescricao()));
Collection<ImovelSubcategoriaAtualizacaoCadastral> subcategorias = fachada.pesquisarSubCategoriasAtualizacaoCadastral(
imovel.getId());
for (ImovelSubcategoriaAtualizacaoCadastral economia : subcategorias) {
String subcategoria = economia.getDescricaoCategoria() + " - " + economia.getDescricaoSubcategoria();
resumoImovel.add(new SituacaoSubcategoriaHelper(String.valueOf(economia.getQuantidadeEconomias()), subcategoria));
}
} else {
form.setDescricaoImovel("NOVO");
form.limparCampos();
}
}
Collection<ImagemRetorno> colecaoImagens = fachada.pesquisarImagensRetornoPorIdImovel(Integer.parseInt(idImovel));
if (colecaoImagens != null && !colecaoImagens.isEmpty()) {
sessao.setAttribute("colecaoImagens", colecaoImagens);
} else {
sessao.setAttribute("colecaoImagens", null);
}
Map<String, List<DadosTabelaAtualizacaoCadastralHelper>> map = fachada.consultarDadosTabelaColunaAtualizacaoCadastral(
null, null, Integer.valueOf(idImovel), null, null);
Collection<DadosTabelaAtualizacaoCadastralHelper> atualizacoes = new AtualizacaoCadastralUtil().linhasAtualizacaoCadastral(
resumoImovel, map);
if (atualizacoes != null && !atualizacoes.isEmpty()) {
sessao.setAttribute("colecaoDadosTabelaAtualizacaoCadastral", atualizacoes);
}
ImovelControleAtualizacaoCadastral controle = fachada.pesquisarImovelControleAtualizacao(Integer.valueOf(idImovel));
boolean fiscalizado = false;
if (controle != null) {
if (controle.getSituacaoAtualizacaoCadastral().getId().equals(SituacaoAtualizacaoCadastral.EM_FISCALIZACAO)) {
fiscalizado = true;
}
form.setSituacao(controle.getSituacaoAtualizacaoCadastral().getDescricao());
}
sessao.setAttribute("fiscalizado", fiscalizado);
} catch (Exception e) {
throw new ActionServletException("erro.exibir.dados.atualizacao", e, "Dados do Imovel e Cliente");
}
return retorno;
}
private Imovel pesquisarImovel(Fachada fachada, String idImovel) {
FiltroImovel filtro = new FiltroImovel();
filtro.adicionarParametro(new ParametroSimples(FiltroImovel.ID, idImovel));
filtro.adicionarCaminhoParaCarregamentoEntidade(FiltroImovel.LOCALIDADE);
filtro.adicionarCaminhoParaCarregamentoEntidade(FiltroImovel.SETOR_COMERCIAL);
filtro.adicionarCaminhoParaCarregamentoEntidade(FiltroImovel.QUADRA);
filtro.adicionarCaminhoParaCarregamentoEntidade(FiltroImovel.LIGACAO_AGUA_SITUACAO);
filtro.adicionarCaminhoParaCarregamentoEntidade(FiltroImovel.LIGACAO_ESGOTO_SITUACAO);
Imovel imovel = (Imovel) Util.retonarObjetoDeColecao(fachada.pesquisar(filtro, Imovel.class.getName()));
return imovel;
}
public boolean temPermissaoAprovarImovel(Integer idUsuario, String idImovel) {
return fachada.verificarPermissaoAprovarImovel(idUsuario, new Integer(idImovel));
}
}