package gcom.gui.cadastro.imovel; import gcom.cadastro.cliente.Cliente; import gcom.cadastro.cliente.ClienteImovel; import gcom.cadastro.cliente.ClienteRelacaoTipo; import gcom.cadastro.imovel.Categoria; import gcom.cadastro.imovel.Imovel; import gcom.fachada.Fachada; import gcom.gui.ActionServletException; import gcom.gui.GcomAction; import gcom.seguranca.acesso.PermissaoEspecial; import gcom.seguranca.acesso.usuario.Usuario; import gcom.util.ConstantesSistema; import java.util.ArrayList; import java.util.Collection; 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; /** * Remover Cliente do Imovel em Manter Imovel * * @author Rafael Santos * @created 09/02/2006 */ public class RemoverAtualizarImovelClienteAction extends GcomAction { /** * < <Descri��o do m�todo>> * * @param actionMapping * Descri��o do par�metro * @param actionForm * Descri��o do par�metro * @param httpServletRequest * Descri��o do par�metro * @param httpServletResponse * Descri��o do par�metro * @return Descri��o do retorno */ public ActionForward execute(ActionMapping actionMapping, ActionForm actionForm, HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) { HttpSession sessao = httpServletRequest.getSession(false); Fachada fachada = Fachada.getInstancia(); Usuario usuarioLogado = (Usuario) sessao.getAttribute("usuarioLogado"); Collection imovelClientesNovos = (Collection) sessao.getAttribute("imovelClientesNovos"); String[] clientesImoveis = httpServletRequest.getParameterValues("idRemocaoClienteImovel"); if (clientesImoveis != null) { sessao.setAttribute("arrayClientesImoveis", clientesImoveis); } else { clientesImoveis = (String[]) sessao.getAttribute("arrayClientesImoveis"); } ActionForward retorno = actionMapping.findForward("atualizarImovelCliente"); Imovel imovel = (Imovel) sessao.getAttribute("imovelAtualizacao"); Collection colecaoClientesImoveisFimRelacao = new ArrayList(); // instancia cliente Collection colecaoClientesImoveisRemovidos = new ArrayList(); if(sessao.getAttribute("colecaoClientesImoveisRemovidos") != null ){ colecaoClientesImoveisRemovidos = (Collection) sessao.getAttribute("colecaoClientesImoveisRemovidos"); } if (imovelClientesNovos != null && !imovelClientesNovos.equals("")) { Iterator clienteImovelIterator = imovelClientesNovos.iterator(); while (clienteImovelIterator.hasNext()) { ClienteImovel clienteImovel = (ClienteImovel) clienteImovelIterator.next(); //Verifica se pode remover o cliente. for (int i = 0; i < clientesImoveis.length; i++) { if (obterTimestampIdObjeto(clienteImovel) == new Long(clientesImoveis[i]).longValue()) { validarRemocaoCliente(imovel, clienteImovel); if (clienteImovel.getId() != null && !clienteImovel.getId().equals("")) { // caso seja um cliente im�vel da base ent�o vai para o exibirManterImovelFimRelacaoClienteImovel para colocar o motivo do fim da rela��o httpServletRequest.setAttribute("aberturaPopup", "1"); // Verifica permiss�o especial para manter cliente responsavel do imovel. Categoria categoria = fachada.obterPrincipalCategoriaImovel(clienteImovel.getImovel().getId()); if(categoria.isPublico() && clienteImovel.isClienteResponsavel()){ boolean possuiPermissaoManterClienteResponsavelImoveisPublicos = fachada.verificarPermissaoEspecialAtiva(PermissaoEspecial.ALTERAR_CLIENTE_RESPONSAVEL_PARA_IMOVEIS_PUBLICOS,usuarioLogado); if(!possuiPermissaoManterClienteResponsavelImoveisPublicos){ httpServletRequest.removeAttribute("aberturaPopup"); throw new ActionServletException("atencao.nao_usuario_nao_possui_permissao_alterar_cliente_reponsavel"); } } fachada.verificaRestricaoDaTabelaClienteImovel(clienteImovel); colecaoClientesImoveisFimRelacao.add(clienteImovel); // [FS0019] - Verificar exist�ncia de negativa��o para o cliente-im�vel Cliente cliente = clienteImovel.getCliente(); Imovel im = clienteImovel.getImovel(); if (cliente != null) { if (Fachada.getInstancia().verificarNegativacaoDoClienteImovel(cliente.getId(), im.getId())) { String confirmado = httpServletRequest.getParameter("confirmado"); if (confirmado == null || !confirmado.equals("ok")) { httpServletRequest.setAttribute("nomeBotao1", "Prosseguir"); return montarPaginaConfirmacao("atencao.advertencia.imovel.negativado", httpServletRequest, actionMapping, new String[] { cliente.getDescricao(), im.getId().toString() }); } } } colecaoClientesImoveisRemovidos.addAll(colecaoClientesImoveisFimRelacao); sessao.setAttribute("colecaoClientesImoveisFimRelacao", colecaoClientesImoveisFimRelacao); validarRemocaoClientePorTipo(sessao, clienteImovel); }else{ validarRemocaoClientePorTipo(sessao, clienteImovel); if(!(colecaoClientesImoveisRemovidos.contains(clienteImovel))){ fachada.verificaRestricaoDaTabelaClienteImovel(clienteImovel); colecaoClientesImoveisRemovidos.add(clienteImovel); } clienteImovelIterator.remove(); } } } } } sessao.setAttribute("colecaoClientesImoveisRemovidos", colecaoClientesImoveisRemovidos); imovelClientesNovos.removeAll(colecaoClientesImoveisFimRelacao); sessao.setAttribute("imovelClientesNovos", imovelClientesNovos); return retorno; } private void validarRemocaoCliente(Imovel imovel, ClienteImovel clienteImovel) { if (imovel.isTarifaSocial() && clienteImovel.isClienteUsuario()){ throw new ActionServletException("atencao.remover.cliente.atualizar.imovel"); } if (imovel.isTarifaSocial() && (clienteImovel.isClienteProprietario())){ throw new ActionServletException("atencao.remover.cliente.atualizar.imovel"); } } private void validarRemocaoClientePorTipo(HttpSession sessao, ClienteImovel clienteImovel) { if (clienteImovel.isClienteUsuario()) { if(sessao.getAttribute("idClienteImovelUsuario") != null){ sessao.removeAttribute("idClienteImovelUsuario"); } } if ((clienteImovel.isClienteResponsavel())) { if(sessao.getAttribute("idClienteImovelResponsavel") != null){ sessao.removeAttribute("idClienteImovelResponsavel"); } } } }