package gcom.gui.micromedicao;
import gcom.cadastro.cliente.FiltroEsferaPoder;
import gcom.cadastro.empresa.Empresa;
import gcom.cadastro.empresa.FiltroEmpresa;
import gcom.cadastro.localidade.FiltroSetorComercial;
import gcom.cadastro.localidade.Localidade;
import gcom.cadastro.localidade.SetorComercial;
import gcom.fachada.Fachada;
import gcom.gui.ActionServletException;
import gcom.gui.GcomAction;
import gcom.micromedicao.FiltroLeiturista;
import gcom.micromedicao.Leiturista;
import gcom.util.ConstantesSistema;
import gcom.util.Util;
import gcom.util.filtro.ParametroSimples;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
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;
/**
* Action que define o pr�-processamento da p�gina de Filtrar Roteiro Empresa
*
* @author Francisco Nascimento
* @created 10/08/2007
*/
public class ExibirFiltrarRoteiroEmpresaAction extends GcomAction {
/**
* Este caso de uso cria um filtro que ser� usado na pesquisa de Roteiro Empresa
*
* [UC0585] Filtrar Roteiro Empresa
*
*
* @author Francisco Nascimento
* @date 10/08/2007
*
* @param actionMapping
* @param actionForm
* @param httpServletRequest
* @param httpServletResponse
* @return
*/
public ActionForward execute(ActionMapping actionMapping,
ActionForm actionForm, HttpServletRequest httpServletRequest,
HttpServletResponse httpServletResponse) {
ActionForward retorno = actionMapping.findForward("filtrarRoteiroEmpresa");
FiltrarRoteiroEmpresaActionForm form = (FiltrarRoteiroEmpresaActionForm) actionForm;
Fachada fachada = Fachada.getInstancia();
HttpSession sessao = httpServletRequest.getSession(false);
sessao.removeAttribute("equipeAtualizar");
if (httpServletRequest.getParameter("menu") != null) {
form.setAtualizar("1");
form.setIndicadorUso("");
httpServletRequest.setAttribute("nomeCampo", "codigo");
sessao.setAttribute("atualizar", "1");
} else {
if (httpServletRequest.getParameter("paginacao") == null && sessao.getAttribute("filtrar") == null) {
String atualizar = httpServletRequest.getParameter("atualizar");
if (atualizar != null && !atualizar.equals("")) {
sessao.setAttribute("atualizar", atualizar);
} else {
sessao.removeAttribute("atualizar");
}
}
}
//Pesquisando empresas
if (sessao.getAttribute("colecaoEmpresa") == null){
FiltroEmpresa filtroEmpresa = new FiltroEmpresa(FiltroEsferaPoder.DESCRICAO);
filtroEmpresa.setConsultaSemLimites(true);
filtroEmpresa.adicionarParametro(new ParametroSimples(FiltroEsferaPoder.INDICADOR_USO,
ConstantesSistema.INDICADOR_USO_ATIVO));
Collection colecaoEmpresa = fachada.pesquisar(filtroEmpresa,
Empresa.class.getName());
if (colecaoEmpresa == null || colecaoEmpresa.isEmpty()){
throw new ActionServletException("atencao.entidade_sem_dados_para_selecao", null, "EMPRESA");
}
sessao.setAttribute("colecaoEmpresa", colecaoEmpresa);
}
//Fim de pesquisando empresas
Collection colecaoSetorComercial = (Collection) sessao.getAttribute("colecaoSetorComercial");
String idLocalidade = form.getIdLocalidade();
// Pesquisando Setor Comercial
if (idLocalidade != null
&& !idLocalidade.trim().equalsIgnoreCase("")) {
FiltroSetorComercial filtroSetorComercial = new FiltroSetorComercial();
// Adiciona o id da localidade que est� no formul�rio para
// compor a pesquisa.
filtroSetorComercial.adicionarParametro(new ParametroSimples(
FiltroSetorComercial.ID_LOCALIDADE, idLocalidade));
filtroSetorComercial.adicionarParametro(new ParametroSimples(
FiltroSetorComercial.INDICADORUSO,
ConstantesSistema.INDICADOR_USO_ATIVO));
// Retorna cole��o de setor comercial
colecaoSetorComercial = fachada.pesquisar(filtroSetorComercial,
SetorComercial.class.getName());
if (colecaoSetorComercial != null && !colecaoSetorComercial.isEmpty()) {
sessao.setAttribute("colecaoSetorComercial",
colecaoSetorComercial);
}
}
if (colecaoSetorComercial == null || colecaoSetorComercial.isEmpty()) {
sessao.setAttribute("colecaoSetorComercial", new ArrayList());
}
if (httpServletRequest.getParameter("desfazer") != null
&& httpServletRequest.getParameter("desfazer").equalsIgnoreCase("S")) {
//-------------- bt DESFAZER ---------------
form.setIdLocalidade("");
form.setDescricaoLocalidade("");
form.setEmpresa("");
form.setIdLeiturista("");
form.setNomeLeiturista("");
form.setIdSetorComercial("");
form.setIndicadorUso("3");
sessao.setAttribute("indicadorAtualizar","1");
sessao.removeAttribute("caminhoRetornoTelaPesquisa");
}
if (form.getIndicadorUso() == null
|| form.getIndicadorUso().equalsIgnoreCase("")){
form.setIndicadorUso("3");
}
// c�digo para checar ou naum o Atualizar
String primeiraVez = httpServletRequest.getParameter("menu");
if (primeiraVez != null && !primeiraVez.equals("")) {
sessao.setAttribute("indicadorAtualizar","1");
form.setIndicadorUso("3");
}
// se voltou da tela de Atualizar Localidade
if (sessao.getAttribute("voltar") !=null &&
sessao.getAttribute("voltar").equals("filtrar")){
sessao.setAttribute("indicadorAtualizar","1");
}
//-------Parte que trata do c�digo quando o usu�rio tecla enter
String idDigitadoEnterLocalidade = form.getIdLocalidade();
if (idDigitadoEnterLocalidade != null &&
!idDigitadoEnterLocalidade.equalsIgnoreCase("")&&
Util.validarValorNaoNumerico(idDigitadoEnterLocalidade)){
//Localidade n�o num�rico.
httpServletRequest.setAttribute("nomeCampo","idLocalidade");
throw new ActionServletException("atencao.nao.numerico",
null,"Localidade ");
} else {
verificaExistenciaCodLocalidade(idDigitadoEnterLocalidade,form,
httpServletRequest,fachada);
}
String idDigitadoEnterLeiturista = form.getIdLeiturista();
if (idDigitadoEnterLeiturista != null &&
!idDigitadoEnterLeiturista.equalsIgnoreCase("")&&
Util.validarValorNaoNumerico(idDigitadoEnterLeiturista)){
//Leiturista n�o num�rico.
httpServletRequest.setAttribute("nomeCampo","idLeiturista");
throw new ActionServletException("atencao.nao.numerico",
null,"Leiturista ");
} else {
verificaExistenciaCodLeiturista(idDigitadoEnterLeiturista,form,
httpServletRequest,fachada);
}
//-------Fim de parte que trata do c�digo quando o usu�rio tecla enter
sessao.removeAttribute("caminhoRetornoTelaPesquisa");
// DEFINI��O QUE IR� AUXILIAR O RETORNO DOS POPUPS
sessao.setAttribute("UseCase", "FILTRARROTEIROEMPRESA");
return retorno;
}
private void verificaExistenciaCodLocalidade(String idDigitadoEnterLocalidade,
FiltrarRoteiroEmpresaActionForm form,
HttpServletRequest httpServletRequest,
Fachada fachada) {
//Verifica se o c�digo da Localidade foi digitado
if (idDigitadoEnterLocalidade != null
&& !idDigitadoEnterLocalidade.trim().equals("")
&& Integer.parseInt(idDigitadoEnterLocalidade) > 0) {
//Recupera a localidade informada pelo usu�rio
Localidade localidadeEncontrada = fachada.pesquisarLocalidadeDigitada(new Integer(idDigitadoEnterLocalidade));
//Caso a localidade informada pelo usu�rio esteja cadastrada no sistema
//Seta os dados da localidade no form
//Caso contr�rio seta as informa��es da localidade para vazio
//e indica ao usu�rio que a localidade n�o existe
if (localidadeEncontrada != null) {
//a localidade foi encontrada
form.setIdLocalidade("" + (localidadeEncontrada.getId()));
form.setDescricaoLocalidade(localidadeEncontrada.getDescricao());
httpServletRequest.setAttribute("idLocalidadeNaoEncontrada",
"true");
httpServletRequest.setAttribute("nomeCampo","codigoSetorComercial");
} else {
//a localidade n�o foi encontrada
form.setIdLocalidade("");
httpServletRequest.setAttribute("idLocalidadeNaoEncontrada",
"exception");
form.setDescricaoLocalidade("LOCALIDADE INEXISTENTE");
}
}
}
private void verificaExistenciaCodLeiturista(String idDigitadoEnterLeiturista,
FiltrarRoteiroEmpresaActionForm inserirRoteiroEmpresaActionForm,
HttpServletRequest httpServletRequest,
Fachada fachada) {
//Verifica se o c�digo do Leiturista foi digitado
if (idDigitadoEnterLeiturista != null
&& !idDigitadoEnterLeiturista.trim().equals("")
&& Integer.parseInt(idDigitadoEnterLeiturista) > 0) {
//Recupera o leiturista informado pelo usu�rio
FiltroLeiturista filtroLeiturista = new FiltroLeiturista();
filtroLeiturista.adicionarCaminhoParaCarregamentoEntidade(FiltroLeiturista.FUNCIONARIO);
filtroLeiturista.adicionarCaminhoParaCarregamentoEntidade(FiltroLeiturista.CLIENTE);
filtroLeiturista.adicionarParametro(new ParametroSimples(
FiltroLeiturista.ID, idDigitadoEnterLeiturista));
filtroLeiturista.adicionarParametro(new ParametroSimples(
FiltroLeiturista.INDICADOR_USO,
ConstantesSistema.INDICADOR_USO_ATIVO));
Collection leituristaEncontrado = fachada.pesquisar(filtroLeiturista,
Leiturista.class.getName());
//Caso o leiturista informado pelo usu�rio esteja cadastrado no sistema
//Seta os dados do leiturista no form
//Caso contr�rio seta as informa��es de leiturista para vazio
//e indica ao usu�rio que o leiturista n�o existe
if (leituristaEncontrado != null && leituristaEncontrado.size() > 0) {
//leiturista foi encontrado
Leiturista leiturista = (Leiturista) ((List) leituristaEncontrado).get(0);
inserirRoteiroEmpresaActionForm.setIdLeiturista("" +
leiturista.getId());
if (leiturista.getFuncionario() != null){
inserirRoteiroEmpresaActionForm.setNomeLeiturista(leiturista.getFuncionario().getNome());
} else if (leiturista.getCliente() != null){
inserirRoteiroEmpresaActionForm.setNomeLeiturista(leiturista.getCliente().getNome());
}
httpServletRequest.setAttribute("idLeituristaEncontrado","true");
httpServletRequest.setAttribute("nomeCampo","codigoSetorComercial");
} else {
//o leiturista n�o foi encontrado
inserirRoteiroEmpresaActionForm.setIdLeiturista("");
inserirRoteiroEmpresaActionForm.setNomeLeiturista("LEITURISTA INEXISTENTE");
httpServletRequest.setAttribute("nomeCampo","idLeiturista");
}
}
}
}