package gcom.gui.cadastro.cliente;
import gcom.cadastro.cliente.ClienteFone;
import gcom.cadastro.cliente.FiltroFoneTipo;
import gcom.cadastro.cliente.FoneTipo;
import gcom.cadastro.geografico.FiltroMunicipio;
import gcom.cadastro.geografico.Municipio;
import gcom.fachada.Fachada;
import gcom.gui.ActionServletException;
import gcom.gui.GcomAction;
import gcom.util.ConstantesSistema;
import gcom.util.filtro.ParametroSimples;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Date;
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;
import org.apache.struts.validator.DynaValidatorForm;
/**
* < <Descri��o da Classe>>
*
* @author Luis Octavio
*/
public class ExibirInserirClienteTelefoneAction extends GcomAction {
public ActionForward execute(ActionMapping actionMapping,
ActionForm actionForm, HttpServletRequest httpServletRequest,
HttpServletResponse httpServletResponse) {
// Prepara o retorno da A��o
ActionForward retorno = actionMapping
.findForward("inserirClienteTelefone");
// Cria a sess�o
HttpSession session = httpServletRequest.getSession(false);
// Obt�m o action form
DynaValidatorForm clienteActionForm = (DynaValidatorForm) actionForm;
// Obtendo o idMuncipio corrente
String idMunicipio = ((String) clienteActionForm.get("idMunicipio"));
// Obt�m a inst�ncia da fachada
Fachada fachada = Fachada.getInstancia();
Collection colecaoClienteFone = (Collection) session
.getAttribute("colecaoClienteFone");
if (colecaoClienteFone == null) {
colecaoClienteFone = new ArrayList();
}
// Pega a refer�ncia do Gerenciador de P�ginas
// GerenciadorPaginas gerenciadorPaginas = null;
// Inicializa a cole��o de FoneTipo
Collection foneTipos = null;
ClienteFone clienteFone = null;
Collection municipios = null;
// Filtro de tipos de telefone
FiltroFoneTipo filtroFoneTipo = new FiltroFoneTipo();
filtroFoneTipo.adicionarParametro(new ParametroSimples(
FiltroFoneTipo.INDICADOR_USO,
ConstantesSistema.INDICADOR_USO_ATIVO));
FiltroMunicipio filtroMunicipio = new FiltroMunicipio();
// S� vai mandar fazer a pesquisa do munic�pio se o usu�rio apertou o
// enter e n�o o bot�o "adicionar"
if (clienteActionForm.get("botaoClicado") == null
|| clienteActionForm.get("botaoClicado").equals("")) {
if (idMunicipio != null && !idMunicipio.trim().equalsIgnoreCase("")) {
// Adiciona Parametro para pesquisar municipio
filtroMunicipio.adicionarParametro(new ParametroSimples(
FiltroMunicipio.ID, idMunicipio));
filtroMunicipio.adicionarParametro(new ParametroSimples(
FiltroMunicipio.INDICADOR_USO,
ConstantesSistema.INDICADOR_USO_ATIVO));
// Recebe a cole��o de munic�pio conforme o idMuncipio informado
municipios = fachada.pesquisar(filtroMunicipio, Municipio.class
.getName());
// Verifica se o retorno da pesquisa trouxe resultados
if (municipios != null && !municipios.isEmpty()) {
// Prepara o iterator para percorrer a cole��o resultante da
// pesquisa
Iterator iteratorMunicipio = municipios.iterator();
// Posiciona-se no primeiro registro
Municipio municipio = (Municipio) iteratorMunicipio.next();
// Passa pelo request o municipio encontrado na pesquisa
clienteActionForm
.set("idMunicipio", "" + municipio.getId());
clienteActionForm.set("descricaoMunicipio", municipio
.getNome());
clienteActionForm.set("ddd", "" + municipio.getDdd());
// Manda para a p�gina a informa��o do campo para que seja
// focado no retorno da pesquisa
httpServletRequest.setAttribute("nomeCampo",
"telefone");
} else {
httpServletRequest.setAttribute("municipioNaoEncontrado",
"true");
clienteActionForm.set("idMunicipio", "");
clienteActionForm.set("descricaoMunicipio",
"Munic�pio Inexistente");
clienteActionForm.set("ddd", "");
// Manda para a p�gina a informa��o do campo para que seja
// focado no retorno da pesquisa
httpServletRequest.setAttribute("nomeCampo",
"idMunicipio");
}
}
}
// Realiza a pesquisa de tipos de telefone
foneTipos = fachada.pesquisar(filtroFoneTipo, FoneTipo.class.getName());
if (foneTipos == null || foneTipos.isEmpty()) {
// Nenhum tipo de telefone cadastrado
new ActionServletException("erro.naocadastrado", null,
"tipo de telefone");
} else {
// Envia os objetos no request
session.setAttribute("foneTipos", foneTipos);
}
municipios = fachada.pesquisar(filtroMunicipio, Municipio.class
.getName());
// Envia para sessao a colecao de municipios
session.setAttribute("municipios", municipios);
if (clienteActionForm.get("botaoClicado") != null
&& !clienteActionForm.get("botaoClicado").equals("")) {
if ((clienteActionForm.get("botaoClicado").equals("ADICIONAR"))
&& (clienteActionForm.get("ddd") != null && !((String) clienteActionForm
.get("ddd")).trim().equalsIgnoreCase(""))
&& (clienteActionForm.get("idTipoTelefone") != null && !((String) clienteActionForm
.get("idTipoTelefone")).trim().equalsIgnoreCase(""))
&& (clienteActionForm.get("telefone") != null && !((String) clienteActionForm
.get("telefone")).trim().equalsIgnoreCase(""))) {
// Verificar se o usu�rio digitou um DDD que existe no sistema
filtroMunicipio.limparListaParametros();
filtroMunicipio.adicionarParametro(new ParametroSimples(
FiltroMunicipio.DDD, (String) clienteActionForm
.get("ddd")));
Collection municipiosComDDDValido = fachada.pesquisar(
filtroMunicipio, Municipio.class.getName());
if (municipiosComDDDValido.isEmpty()) {
clienteActionForm.set("ddd", "");
clienteActionForm.set("botaoAdicionar", null);
clienteActionForm.set("botaoClicado", null);
// O DDD n�o existe no sistema
throw new ActionServletException(
"atencao.telefone.ddd.nao_existente");
}
clienteFone = new ClienteFone();
clienteFone.setDdd((String) clienteActionForm.get("ddd"));
clienteFone.setTelefone((String) clienteActionForm
.get("telefone"));
if (clienteActionForm.get("ramal") != null
&& !((String) clienteActionForm.get("ramal")).trim()
.equalsIgnoreCase("")) {
clienteFone.setRamal((String) clienteActionForm
.get("ramal"));
}
if (clienteActionForm.get("contato") != null
&& !((String) clienteActionForm.get("contato")).trim()
.equalsIgnoreCase("")) {
clienteFone.setContato((String) clienteActionForm
.get("contato"));
}
FoneTipo foneTipo = new FoneTipo();
foneTipo.setId(new Integer(clienteActionForm.get(
"idTipoTelefone").toString()));
foneTipo.setDescricao(clienteActionForm.get("textoSelecionado")
.toString());
clienteFone.setFoneTipo(foneTipo);
clienteFone.setUltimaAlteracao(new Date());
// Verifica se o telefone j� existe na cole��o
if (!colecaoClienteFone.contains(clienteFone))
{
colecaoClienteFone.add(clienteFone);
}
else
{
httpServletRequest.setAttribute("telefoneJaExistente", true);
}
clienteActionForm.set("botaoAdicionar", null);
clienteActionForm.set("botaoClicado", null);
clienteActionForm.set("ddd", null);
clienteActionForm.set("telefone", null);
clienteActionForm.set("idTipoTelefone", null);
clienteActionForm.set("idMunicipio", null);
clienteActionForm.set("ramal", null);
clienteActionForm.set("contato", null);
clienteActionForm.set("descricaoMunicipio", null);
}
}
session.setAttribute("colecaoClienteFone", colecaoClienteFone);
// Limpa a indica��o que o bot�o adicionar foi clicado
clienteActionForm.set("botaoClicado", "");
// Se a cole��o de telefones tiver apenas um item, ent�o este item tem
// que estar selecionado
// como telefone principal
Iterator iterator = colecaoClienteFone.iterator();
if (colecaoClienteFone != null && colecaoClienteFone.size() == 1) {
clienteFone = (ClienteFone) iterator.next();
clienteActionForm.set("indicadorTelefonePadrao", new Long(
obterTimestampIdObjeto(clienteFone)));
}
//**********************************************************************
// CRC2103
// Autor: Ivan Sergio
// Data: 02/07/2009
// Verifica se a tela deve ser exibida como um PopUp
//**********************************************************************
if (httpServletRequest.getParameter("POPUP") != null) {
if (httpServletRequest.getParameter("POPUP").equals("true")) {
session.setAttribute("POPUP", "true");
}else {
session.setAttribute("POPUP", "false");
}
}else if (session.getAttribute("POPUP") == null) {
session.setAttribute("POPUP", "false");
}
//**********************************************************************
return retorno;
}
}