package gcom.gui.micromedicao;
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.faturamento.FaturamentoGrupo;
import gcom.faturamento.FiltroFaturamentoGrupo;
import gcom.gui.ActionServletException;
import gcom.gui.GcomAction;
import gcom.util.ConstantesSistema;
import gcom.util.Util;
import gcom.util.filtro.ParametroSimples;
import java.util.Collection;
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 rota
*
* @author Vivianne Sousa
* @created 27/03/2006
*/
public class ExibirFiltrarRotaAction extends GcomAction {
/**
* Este caso de uso permite o filtro de uma(s) rota(s)
*
* [UC0129] Filtrar Rota
*
*
* @author Vivianne Sousa
* @date 27/03/2006
*
* @param actionMapping
* @param actionForm
* @param httpServletRequest
* @param httpServletResponse
* @return
*/
public ActionForward execute(ActionMapping actionMapping,
ActionForm actionForm, HttpServletRequest httpServletRequest,
HttpServletResponse httpServletResponse) {
ActionForward retorno = actionMapping.findForward("filtrarRota");
RotaActionForm rotaActionForm = (RotaActionForm) actionForm;
Fachada fachada = Fachada.getInstancia();
HttpSession sessao = httpServletRequest.getSession(false);
//Pesquisando grupo de faturamento
FiltroFaturamentoGrupo filtroFaturamentoGrupo = new FiltroFaturamentoGrupo();
filtroFaturamentoGrupo.setCampoOrderBy(FiltroFaturamentoGrupo.DESCRICAO);
Collection<FaturamentoGrupo> collectionFaturamentoGrupo = fachada.pesquisar(filtroFaturamentoGrupo, FaturamentoGrupo.class.getName());
httpServletRequest.setAttribute("collectionFaturamentoGrupo", collectionFaturamentoGrupo);
//Fim de pesquisando grupo de faturamento
// Pesquisando empresa leitur�stica
FiltroEmpresa filtroEmpresa = new FiltroEmpresa();
filtroEmpresa.setCampoOrderBy(FiltroEmpresa.DESCRICAO);
Collection<Empresa> collectionEmpresa = fachada.pesquisar(filtroEmpresa, Empresa.class.getName());
sessao.setAttribute("collectionEmpresa", collectionEmpresa);
//Fim de pesquisando empresa leitur�stica
if (httpServletRequest.getParameter("desfazer") != null
&& httpServletRequest.getParameter("desfazer").equalsIgnoreCase("S")) {
//-------------- bt DESFAZER ---------------
rotaActionForm.setEmpresaEntregaContas("");
rotaActionForm.setIdLocalidade("");
rotaActionForm.setLocalidadeDescricao("");
rotaActionForm.setCodigoSetorComercial("");
rotaActionForm.setSetorComercialDescricao("");
rotaActionForm.setCodigoRota("");
rotaActionForm.setFaturamentoGrupo("" + ConstantesSistema.NUMERO_NAO_INFORMADO);
rotaActionForm.setIndicadorRotaAlternativa(ConstantesSistema.NAO.shortValue()+"");
rotaActionForm.setIndicadorTransmissaoOffline(ConstantesSistema.NAO.shortValue()+"");
rotaActionForm.setIndicadorUso("3");
rotaActionForm.setEmpresaCobranca("");
rotaActionForm.setEmpresaEntregaContas("");
rotaActionForm.setEmpresaLeituristica("");
sessao.setAttribute("indicadorAtualizar","1");
sessao.removeAttribute("caminhoRetornoTelaPesquisa");
}
//-------Parte que trata do c�digo quando o usu�rio tecla enter
String idDigitadoEnterLocalidade = rotaActionForm.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 ");
}
verificaExistenciaCodLocalidade(idDigitadoEnterLocalidade,rotaActionForm,
httpServletRequest,fachada,sessao);
String idDigitadoEnterSetorComercial = rotaActionForm.getCodigoSetorComercial();
if(idDigitadoEnterSetorComercial != null &&
!idDigitadoEnterSetorComercial.equalsIgnoreCase("")&&
Util.validarValorNaoNumerico(idDigitadoEnterSetorComercial)){
//Setor Comercial n�o num�rico.
httpServletRequest.setAttribute("nomeCampo","codigoSetorComercial");
throw new ActionServletException("atencao.nao.numerico",
null,"Setor Comercial ");
}
verificaExistenciaCodSetorComercial(idDigitadoEnterLocalidade,idDigitadoEnterSetorComercial,rotaActionForm,
httpServletRequest,fachada,sessao);
//-------Fim de parte que trata do c�digo quando o usu�rio tecla enter
// c�digo para checar ou naum o Atualizar
/* String primeiraVez = httpServletRequest.getParameter("menu");
if ((primeiraVez != null && !primeiraVez.equals(""))
|| (sessao.getAttribute("idRegistroAtualizacao") != null)) {
sessao.setAttribute("indicadorAtualizar","1");
rotaActionForm.setIndicadorUso("3");
}
*/
//teste
if (rotaActionForm.getIndicadorUso() == null
|| rotaActionForm.getIndicadorUso().equalsIgnoreCase("")){
rotaActionForm.setIndicadorUso("3");
}
if(rotaActionForm.getIndicadorRotaAlternativa() == null || rotaActionForm.getIndicadorRotaAlternativa().equalsIgnoreCase("") ){
rotaActionForm.setIndicadorRotaAlternativa(ConstantesSistema.NAO.shortValue()+"");
}
if(rotaActionForm.getIndicadorTransmissaoOffline() == null || rotaActionForm.getIndicadorTransmissaoOffline().equalsIgnoreCase("") ){
rotaActionForm.setIndicadorTransmissaoOffline(ConstantesSistema.NAO.shortValue()+"");
}
// c�digo para checar ou naum o Atualizar
String primeiraVez = httpServletRequest.getParameter("menu");
if (primeiraVez != null && !primeiraVez.equals("")) {
sessao.setAttribute("indicadorAtualizar","1");
rotaActionForm.setIndicadorUso("3");
}
// se voltou da tela de Atualizar Localidade
if (sessao.getAttribute("voltar") !=null &&
sessao.getAttribute("voltar").equals("filtrar")){
sessao.setAttribute("indicadorAtualizar","1");
}
sessao.removeAttribute("voltar");
sessao.removeAttribute("idRegistroAtualizacao");
sessao.removeAttribute("caminhoRetornoTelaPesquisa");
sessao.removeAttribute("collectionRotaAcaoCriterio");
return retorno;
}
private void verificaExistenciaCodLocalidade(String idDigitadoEnterLocalidade,
RotaActionForm rotaActionForm,
HttpServletRequest httpServletRequest,
Fachada fachada,
HttpSession sessao) {
//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
rotaActionForm.setIdLocalidade("" + (localidadeEncontrada.getId()));
rotaActionForm.setLocalidadeDescricao(localidadeEncontrada.getDescricao());
httpServletRequest.setAttribute("idLocalidadeNaoEncontrada",
"true");
httpServletRequest.setAttribute("nomeCampo","codigoSetorComercial");
} else {
//a localidade n�o foi encontrada
rotaActionForm.setIdLocalidade("");
httpServletRequest.setAttribute("idLocalidadeNaoEncontrada",
"exception");
rotaActionForm
.setLocalidadeDescricao("LOCALIDADE INEXISTENTE");
httpServletRequest.setAttribute("nomeCampo","idLocalidade");
}
if (httpServletRequest.getParameter("desfazer") == null){
String indicadorAtualizar = httpServletRequest.getParameter("indicadorAtualizar");
sessao.setAttribute("indicadorAtualizar",indicadorAtualizar );
}
}
}
private void verificaExistenciaCodSetorComercial(String idDigitadoEnterLocalidade,
String idDigitadoEnterSetorComercial,
RotaActionForm rotaActionForm,
HttpServletRequest httpServletRequest,
Fachada fachada,
HttpSession sessao) {
// Verifica se o c�digo do Setor Comercial foi digitado
if ((idDigitadoEnterSetorComercial != null && !idDigitadoEnterSetorComercial.toString()
.trim().equalsIgnoreCase(""))
&& (idDigitadoEnterLocalidade != null && !idDigitadoEnterLocalidade.toString().trim()
.equalsIgnoreCase(""))) {
FiltroSetorComercial filtroSetorComercial = new FiltroSetorComercial();
if (idDigitadoEnterLocalidade != null
&& !idDigitadoEnterLocalidade.toString().trim().equalsIgnoreCase("")) {
filtroSetorComercial.adicionarParametro(new ParametroSimples(
FiltroSetorComercial.ID_LOCALIDADE, new Integer(
idDigitadoEnterLocalidade)));
}
filtroSetorComercial.adicionarParametro(new ParametroSimples(
FiltroSetorComercial.CODIGO_SETOR_COMERCIAL, new Integer(
idDigitadoEnterSetorComercial)));
Collection<SetorComercial> setorComerciais = fachada.pesquisar(
filtroSetorComercial, SetorComercial.class.getName());
if (setorComerciais != null && !setorComerciais.isEmpty()) {
//o setor comercial foi encontrado
SetorComercial setorComercialEncontrado = (SetorComercial) Util.retonarObjetoDeColecao(setorComerciais);
rotaActionForm.setCodigoSetorComercial( "" + (setorComercialEncontrado.getCodigo()));
rotaActionForm.setSetorComercialDescricao(setorComercialEncontrado.getDescricao());
httpServletRequest.setAttribute("idSetorComercialNaoEncontrada","true");
httpServletRequest.setAttribute("nomeCampo","codigoRota");
} else {
//o setor comercial n�o foi encontrado
rotaActionForm.setCodigoSetorComercial("");
httpServletRequest.setAttribute("idSetorComercialNaoEncontrada",
"exception");
rotaActionForm
.setSetorComercialDescricao("SETOR COMERCIAL INEXISTENTE");
httpServletRequest.setAttribute("nomeCampo","codigoSetorComercial");
}
if (httpServletRequest.getParameter("desfazer") == null){
String indicadorAtualizar = httpServletRequest.getParameter("indicadorAtualizar");
sessao.setAttribute("indicadorAtualizar",indicadorAtualizar );
}
}
}
}