package gcom.gui.atendimentopublico;
import gcom.cadastro.cliente.ClienteFone;
import gcom.cadastro.cliente.ClienteImovel;
import gcom.cadastro.cliente.ClienteRelacaoTipo;
import gcom.cadastro.cliente.FiltroClienteImovel;
import gcom.cadastro.cliente.IClienteFone;
import gcom.cadastro.imovel.Imovel;
import gcom.cadastro.imovel.ImovelSubcategoria;
import gcom.gui.GcomAction;
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.HashMap;
import java.util.HashSet;
import java.util.Iterator;
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 Daniel Alves
* @date 27/07/2010
*/
public class ExibirAtualizarDadosClientesPopupAction extends GcomAction {
public ActionForward execute(ActionMapping actionMapping,
ActionForm actionForm, HttpServletRequest httpServletRequest,
HttpServletResponse httpServletResponse) {
ActionForward retorno = actionMapping.findForward("exibirAtualizarDadosClientes");
HttpSession sessao = getSessao(httpServletRequest);
ExibirAtualizarDadosClientesPopupActionForm exibirAtualizarDadosClientesPopupActionForm =
(ExibirAtualizarDadosClientesPopupActionForm) actionForm;
//fun��o para fechar o popup quando for selecionada a fun��o atualizar cliente/imovel.
String fecharPopup = (String)httpServletRequest.getParameter("fecharPopup");
if(fecharPopup != null && !fecharPopup.equals("")){
exibirAtualizarDadosClientesPopupActionForm.setFecharPopup(fecharPopup);
}else{
exibirAtualizarDadosClientesPopupActionForm.setFecharPopup(null);
}
String idImovel = (String)httpServletRequest.getParameter("atualizaImovel");
if( idImovel!= null && !idImovel.equals("") ){
exibirAtualizarDadosClientesPopupActionForm.setMatricula(idImovel);
Imovel imovel = this.getFachada().consultarImovelDadosCadastrais(new Integer(idImovel));
if(imovel != null){
String inscricao = this.getFachada().pesquisarInscricaoImovel(imovel.getId());
String endereco = this.getFachada().pesquisarEndereco(imovel.getId());
exibirAtualizarDadosClientesPopupActionForm.setInscricao(inscricao);
exibirAtualizarDadosClientesPopupActionForm.setEndereco(endereco);
/*if(imovel.getNomeImovel() != null && !imovel.getNomeImovel().equals("")){
exibirAtualizarDadosClientesPopupActionForm.setNomeConta(imovel.getNomeImovel());
}else{
exibirAtualizarDadosClientesPopupActionForm.setNomeConta(null);
}*/
//SubCategorias
Collection colecaoSubcategorias =
this.getFachada().pesquisarCategoriasImovel(imovel.getId());
if(colecaoSubcategorias != null && !colecaoSubcategorias.isEmpty()){
exibirAtualizarDadosClientesPopupActionForm.setCategoriaSubcategoriaEconomia(colecaoSubcategorias);
//trecho que soma o total de economias
Iterator iterator = colecaoSubcategorias.iterator();
int contadorEconomias = 0;
while(iterator.hasNext()){
ImovelSubcategoria imovelSubcategoria = (ImovelSubcategoria) iterator.next();
contadorEconomias += imovelSubcategoria.getQuantidadeEconomias();
}
exibirAtualizarDadosClientesPopupActionForm.setTotalEconomias(String.valueOf(contadorEconomias));
}
//ClienteImovel
Collection colecaoClienteImovel = this.montarColecaoClienteImovel(imovel.getId(),httpServletRequest,exibirAtualizarDadosClientesPopupActionForm);
exibirAtualizarDadosClientesPopupActionForm.setColecaoClienteImovel(colecaoClienteImovel);
}
}
String chaveRemoverFone = (String)httpServletRequest.getParameter("removerFone");
if(chaveRemoverFone != null && !chaveRemoverFone.equals("")){
this.removerClienteFone(exibirAtualizarDadosClientesPopupActionForm,
httpServletRequest,
chaveRemoverFone);
if(httpServletRequest.getParameter("nomeDigitado")!=null
&& httpServletRequest.getParameter("cpfCnpj")!=null){
httpServletRequest.setAttribute("nomeDigitado", httpServletRequest.getParameter("nomeDigitado"));
httpServletRequest.setAttribute("cpfCnpj", httpServletRequest.getParameter("cpfCnpj"));
}
sessao.setAttribute("mudouTelefonePadrao", true);
}
//Adiciona na cole��o Cliente Imovel adicionado pelo pop up
if(sessao.getAttribute("clienteFoneAdicionar")!=null){
ClienteFone clienteFone =
(ClienteFone) sessao.getAttribute("clienteFoneAdicionar");
this.adicionarTelefone(exibirAtualizarDadosClientesPopupActionForm,clienteFone);
sessao.removeAttribute("clienteFoneAdicionar");
sessao.setAttribute("mudouTelefonePadrao", true);
if(sessao.getAttribute("clienteImovel")!=null
&& sessao.getAttribute("nomeDigitado")!=null
&& sessao.getAttribute("cpfCnpj")!=null){
/*String idClienteImovel = (String) sessao.getAttribute("clienteImovel");
for (ClienteImovel clienteImovel :
exibirAtualizarDadosClientesPopupActionForm.getColecaoClienteImovel()) {
if(clienteImovel.getId().toString().equals(idClienteImovel)){
if(clienteImovel.getCliente().getClienteTipo()
.getIndicadorPessoaFisicaJuridica().compareTo(ConstantesSistema.SIM)==0){
clienteImovel.getCliente().setCpf((String) sessao.getAttribute("cpfCnpj"));
}else{
clienteImovel.getCliente().setCnpj((String)sessao.getAttribute("cpfCnpj"));
}
clienteImovel.getCliente().setNome((String)sessao.getAttribute("nomeDigitado"));
}
}*/
httpServletRequest.setAttribute("nomeDigitado", sessao.getAttribute("nomeDigitado"));
httpServletRequest.setAttribute("cpfCnpj", sessao.getAttribute("cpfCnpj"));
httpServletRequest.setAttribute("clienteImovel", sessao.getAttribute("clienteImovel"));
}
}
//Mudar fone padr�o da cole��o temporaria
if(httpServletRequest.getParameter("fonePadrao")!=null && httpServletRequest.getParameter("idCliente")!=null){
String idCliente = httpServletRequest.getParameter("idCliente");
String idFone = httpServletRequest.getParameter("fonePadrao");
Collection colecaoClienteImovel = exibirAtualizarDadosClientesPopupActionForm.getColecaoClienteImovel();
if(colecaoClienteImovel != null && !colecaoClienteImovel.isEmpty()){
Iterator itera = colecaoClienteImovel.iterator();
while (itera.hasNext()) {
ClienteImovel clienteImovel = (ClienteImovel) itera.next();
if(idCliente.equals(""+clienteImovel.getId())){
Collection colecaoClienteFone = clienteImovel.getCliente().getClienteFones();
Iterator iteraFone = colecaoClienteFone.iterator();
while (iteraFone.hasNext()) {
ClienteFone clienteFone = (ClienteFone) iteraFone.next();
if(clienteFone.getId().toString().equals(idFone)){
clienteFone.setIndicadorTelefonePadrao(ConstantesSistema.SIM);
}else{
clienteFone.setIndicadorTelefonePadrao(ConstantesSistema.NAO);
}
}
}
}
}
sessao.setAttribute("mudouTelefonePadrao", true);
}
if(httpServletRequest.getAttribute("cliente")==null && exibirAtualizarDadosClientesPopupActionForm.getCodClienteImovel()!=null){
httpServletRequest.setAttribute("cliente", exibirAtualizarDadosClientesPopupActionForm.getCodClienteImovel());
}
return retorno;
}
private void adicionarTelefone(
ExibirAtualizarDadosClientesPopupActionForm exibirAtualizarDadosClientesPopupActionForm,
ClienteFone clienteFone) {
for (ClienteImovel clienteImovel : exibirAtualizarDadosClientesPopupActionForm.getColecaoClienteImovel()) {
if(clienteImovel.getCliente().getId().compareTo(clienteFone.getCliente().getId())==0){
if(clienteImovel.getCliente().getClienteFones()==null){
clienteImovel.getCliente().setClienteFones(new HashSet());
}
if(clienteFone.getIndicadorTelefonePadrao().compareTo(ConstantesSistema.SIM)==0){
Collection<ClienteFone> colecaoFones = clienteImovel.getCliente().getClienteFones();
for (ClienteFone clienteFoneRemoverIndicador: colecaoFones) {
clienteFoneRemoverIndicador.setIndicadorTelefonePadrao(ConstantesSistema.NAO);
}
}
clienteImovel.getCliente().getClienteFones().add(clienteFone);
}
}
}
private void removerClienteFone(ExibirAtualizarDadosClientesPopupActionForm form,HttpServletRequest httpServletRequest,String chaveRemoverFone){
String codigoClienteRemover = (String)httpServletRequest.getParameter("codigoClienteRemover");
Collection colecaoClienteImovel = form.getColecaoClienteImovel();
if(colecaoClienteImovel != null && !colecaoClienteImovel.isEmpty()){
Iterator itera = colecaoClienteImovel.iterator();
while (itera.hasNext()) {
ClienteImovel clienteImovel = (ClienteImovel) itera.next();
if(codigoClienteRemover.equals(""+clienteImovel.getId())){
Collection colecaoClienteFone = clienteImovel.getCliente().getClienteFones();
if(colecaoClienteFone != null && !colecaoClienteFone.isEmpty()){
int count = 1;
Iterator iteraFone = colecaoClienteFone.iterator();
while (iteraFone.hasNext()) {
IClienteFone clienteFone = (IClienteFone) iteraFone.next();
if(chaveRemoverFone.equals(""+count)){
colecaoClienteFone.remove(clienteFone);
break;
}else{
count++;
}
}
}
}
}
}
}
private Collection montarColecaoClienteImovel(Integer idImovel,HttpServletRequest httpServletRequest, ExibirAtualizarDadosClientesPopupActionForm exibirAtualizarDadosClientesPopupActionForm){
HashMap colecaoClienteImovelNova = new HashMap();
/*Collection colecaoClienteImovel =
this.getFachada().pesquisarClientesImovel(idImovel);*/
FiltroClienteImovel filtroClienteImovel = new FiltroClienteImovel();
filtroClienteImovel.adicionarParametro(new ParametroSimples(FiltroClienteImovel.IMOVEL_ID, idImovel));
filtroClienteImovel.adicionarParametro(new ParametroNulo(FiltroClienteImovel.CLIENTE_IMOVEL_FIM_RELACAO_MOTIVO));
filtroClienteImovel.adicionarCaminhoParaCarregamentoEntidade(FiltroClienteImovel.IMOVEL);
filtroClienteImovel.adicionarCaminhoParaCarregamentoEntidade(FiltroClienteImovel.CLIENTE);
filtroClienteImovel.adicionarCaminhoParaCarregamentoEntidade(FiltroClienteImovel.CLIENTE_TIPO);
filtroClienteImovel.adicionarCaminhoParaCarregamentoEntidade(FiltroClienteImovel.CLIENTE_RELACAO_TIPO);
//filtroClienteImovel.adicionarCaminhoParaCarregamentoEntidade(FiltroClienteImovel.CLIENTE_FONE);
filtroClienteImovel.setCampoOrderBy(FiltroClienteImovel.CLIENTE_RELACAO_TIPO_DESCRICAO + " DESC");
Collection colecaoClienteImovel = this.getFachada().pesquisar(filtroClienteImovel, ClienteImovel.class.getName());
if(colecaoClienteImovel != null && !colecaoClienteImovel.isEmpty()){
Iterator iteratorClienteImovel = colecaoClienteImovel.iterator();
while (iteratorClienteImovel.hasNext()) {
ClienteImovel clienteImovel = (ClienteImovel) iteratorClienteImovel.next();
Integer idCliente = clienteImovel.getCliente().getId();
if(exibirAtualizarDadosClientesPopupActionForm.getCodClienteImovel()!=null){
httpServletRequest.setAttribute("cliente", exibirAtualizarDadosClientesPopupActionForm.getCodClienteImovel());
}else{
if(clienteImovel.getClienteRelacaoTipo().getId().toString().equals(ClienteRelacaoTipo.USUARIO.toString())){
httpServletRequest.setAttribute("cliente", clienteImovel.getId());
}
}
if(!colecaoClienteImovelNova.containsKey(idCliente)){
//Cliente cliente = this.getFachada().consultarCliente(idCliente);
Collection colecaoClienteFone = this.getFachada().pesquisarClienteFone(idCliente);
//cliente.setId(idCliente);
if(!Util.isVazioOrNulo(colecaoClienteFone)){
clienteImovel.getCliente().setClienteFones(new HashSet(colecaoClienteFone));
}else{
clienteImovel.getCliente().setClienteFones(null);
}
//clienteImovel.setCliente(cliente);
colecaoClienteImovelNova.put(idCliente,clienteImovel);
}
}
}
return colecaoClienteImovelNova.values();
}
}