package gcom.gui.micromedicao;
import gcom.cadastro.localidade.FiltroSetorComercial;
import gcom.cadastro.localidade.SetorComercial;
import gcom.fachada.Fachada;
import gcom.gui.ActionServletException;
import gcom.gui.GcomAction;
import gcom.micromedicao.FiltroRota;
import gcom.micromedicao.Rota;
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;
/**
* Realiza o filtro da rota de acordo com os par�metros informados
*
* @author Vivianne Sousa
* @created 28/03/2006
*/
public class FiltrarRotaAction extends GcomAction {
/**
* Este caso de uso permite a inclus�o de uma nova rota
*
* [UC0129] Filtrar Rota
*
*
* @author Vivianne Sousa
* @date 28/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("retornarFiltroRota");
RotaActionForm rotaActionForm = (RotaActionForm) actionForm;
HttpSession sessao = httpServletRequest.getSession(false);
Fachada fachada = Fachada.getInstancia();
Boolean peloMenosUmParametroInformado = false;
String idLocalidade = rotaActionForm.getIdLocalidade();
String codigoSetorComercial = rotaActionForm.getCodigoSetorComercial();
String codigoRota = rotaActionForm.getCodigoRota();
String idFaturamentoGrupo = rotaActionForm.getFaturamentoGrupo();
String idEmpresaLeituristica = rotaActionForm.getEmpresaLeituristica();
String idEmpresaCobranca = rotaActionForm.getEmpresaCobranca();
String indicadorUso = rotaActionForm.getIndicadorUso();
String indicadorRotaAlternativa = rotaActionForm.getIndicadorRotaAlternativa();
String empresaEntregaContas = rotaActionForm.getEmpresaEntregaContas();
String indicadorTransmissaoOffline = rotaActionForm.getIndicadorTransmissaoOffline();
// 1 check --- null uncheck
String indicadorAtualizar = httpServletRequest.getParameter("indicadorAtualizar");
validacaoFinal( codigoRota,idLocalidade, codigoSetorComercial,fachada, httpServletRequest);
FiltroRota filtroRota = new FiltroRota();
if (codigoRota != null && !codigoRota.equals("")){
filtroRota.adicionarParametro(new ParametroSimples(
FiltroRota.CODIGO_ROTA,new Integer(codigoRota).intValue()));
// Retorna caso j� exista uma rota com o c�digo informado
Collection colecaoPesquisa = null;
colecaoPesquisa = fachada.pesquisar(filtroRota,
Rota.class.getName());
if ((colecaoPesquisa == null) ||( colecaoPesquisa.isEmpty())) {
//Verificar exist�ncia da rota
throw new ActionServletException(
"atencao.rota_inexistente");
}
}
filtroRota.adicionarCaminhoParaCarregamentoEntidade("setorComercial.localidade");
filtroRota.adicionarCaminhoParaCarregamentoEntidade("faturamentoGrupo");
filtroRota.adicionarCaminhoParaCarregamentoEntidade("cobrancaGrupo");
filtroRota.adicionarCaminhoParaCarregamentoEntidade("empresa");
if ((idLocalidade != null)&& (!idLocalidade.trim().equals(""))) {
filtroRota.adicionarParametro(new ParametroSimples(
FiltroRota.LOCALIDADE_ID,idLocalidade));
peloMenosUmParametroInformado = true;
}
if ((codigoSetorComercial != null)&& (!codigoSetorComercial.trim().equals(""))) {
//Filtro para descobrir id do setor comercial
FiltroSetorComercial filtroSetorComercial = new FiltroSetorComercial();
if (idLocalidade != null && !idLocalidade.equalsIgnoreCase("")){
filtroSetorComercial.adicionarParametro(new ParametroSimples(
FiltroSetorComercial.ID_LOCALIDADE, new Integer(
idLocalidade)));
}
filtroSetorComercial.adicionarParametro(new ParametroSimples(
FiltroSetorComercial.CODIGO_SETOR_COMERCIAL, new Integer(
codigoSetorComercial)));
Collection<SetorComercial> colectionSetorComerciais = fachada.pesquisar(
filtroSetorComercial, SetorComercial.class.getName());
if (colectionSetorComerciais != null && !colectionSetorComerciais.isEmpty()) {
Integer idSetorComercial = colectionSetorComerciais
.iterator().next().getId();
filtroRota.adicionarParametro(new ParametroSimples(
FiltroRota.SETOR_COMERCIAL_ID,idSetorComercial));
peloMenosUmParametroInformado = true;
}
}
if ((codigoRota != null)&& (!codigoRota.trim().equals(""))) {
filtroRota.adicionarParametro(new ParametroSimples(
FiltroRota.CODIGO_ROTA,codigoRota));
peloMenosUmParametroInformado = true;
}
if ((idFaturamentoGrupo != null)&& (!idFaturamentoGrupo.equals(""
+ ConstantesSistema.NUMERO_NAO_INFORMADO))) {
filtroRota.adicionarParametro(new ParametroSimples(
FiltroRota.FATURAMENTO_GRUPO_ID,idFaturamentoGrupo));
peloMenosUmParametroInformado = true;
}
if (idEmpresaLeituristica != null &&
!idEmpresaLeituristica.equals("" + ConstantesSistema.NUMERO_NAO_INFORMADO)) {
filtroRota.adicionarParametro(new ParametroSimples(
FiltroRota.EMPRESA_ID, idEmpresaLeituristica));
peloMenosUmParametroInformado = true;
}
if (empresaEntregaContas != null &&
!empresaEntregaContas.equals("" + ConstantesSistema.NUMERO_NAO_INFORMADO)) {
filtroRota.adicionarParametro(new ParametroSimples(
FiltroRota.EMPRESA_ENTREGA_CONTAS, empresaEntregaContas));
peloMenosUmParametroInformado = true;
}
if (idEmpresaCobranca != null &&
!idEmpresaCobranca.equals("" + ConstantesSistema.NUMERO_NAO_INFORMADO)) {
filtroRota.adicionarParametro(new ParametroSimples(
FiltroRota.EMPRESA_COBRANCA_ID, idEmpresaCobranca));
peloMenosUmParametroInformado = true;
}
if ((indicadorUso != null &&
!indicadorUso.equals("" + ConstantesSistema.NUMERO_NAO_INFORMADO))
&& (!indicadorUso.equals("3"))) {
filtroRota.adicionarParametro(new ParametroSimples(
FiltroRota.INDICADOR_USO,indicadorUso));
peloMenosUmParametroInformado = true;
}
if(indicadorRotaAlternativa != null){
filtroRota.adicionarParametro(new ParametroSimples(
FiltroRota.INDICADOR_ROTA_ALTERNATIVA,indicadorRotaAlternativa));
peloMenosUmParametroInformado = true;
}
if(indicadorTransmissaoOffline != null && !indicadorTransmissaoOffline.equals("")){
filtroRota.adicionarParametro(new ParametroSimples(
FiltroRota.INDICADOR_TRANSMISSAO_OFFLINE,indicadorTransmissaoOffline));
peloMenosUmParametroInformado = true;
}
//Verificar preenchimento dos campos
if (!peloMenosUmParametroInformado){
throw new ActionServletException(
"atencao.filtro.nenhum_parametro_informado");
}
sessao.setAttribute("filtroRota",filtroRota);
sessao.setAttribute("indicadorAtualizar",indicadorAtualizar );
return retorno;
}
private void verificaExistenciaCodSetorComercial(String idDigitadoEnterLocalidade,
String codigoDigitadoEnterSetorComercial,
Fachada fachada,HttpServletRequest httpServletRequest) {
//Verifica se o c�digo do Setor Comercial foi digitado
if ((codigoDigitadoEnterSetorComercial != null &&
!codigoDigitadoEnterSetorComercial.toString().trim().equalsIgnoreCase(""))) {
String msg = "";
FiltroSetorComercial filtroSetorComercial = new FiltroSetorComercial();
if (idDigitadoEnterLocalidade != null
&& !idDigitadoEnterLocalidade.toString().trim().equalsIgnoreCase("")) {
filtroSetorComercial.adicionarParametro(new ParametroSimples(
FiltroSetorComercial.ID_LOCALIDADE, new Integer(
idDigitadoEnterLocalidade)));
msg = "atencao.setor_comercial_nao_existe";
}else{
msg = "atencao.setor_comercial.inexistente";
}
filtroSetorComercial.adicionarParametro(new ParametroSimples(
FiltroSetorComercial.CODIGO_SETOR_COMERCIAL, new Integer(
codigoDigitadoEnterSetorComercial)));
Collection<SetorComercial> setorComerciais = fachada.pesquisar(
filtroSetorComercial, SetorComercial.class.getName());
if (setorComerciais == null || setorComerciais.isEmpty()) {
//o setor comercial n�o foi encontrado
//Setor Comercial n�o existe para esta localidade
httpServletRequest.setAttribute("nomeCampo","codigoSetorComercial");
throw new ActionServletException(
msg);
}
}
}
private void validacaoFinal(String codigoRota,
String idLocalidade,String codigoSetorComercial,
Fachada fachada,HttpServletRequest httpServletRequest){
if (idLocalidade != null &&
!idLocalidade.equalsIgnoreCase("")&&
Util.validarValorNaoNumerico(idLocalidade)){
//Localidade n�o num�rico.
httpServletRequest.setAttribute("nomeCampo","idLocalidade");
throw new ActionServletException("atencao.nao.numerico",
null,"Localidade ");
}
if(codigoSetorComercial != null &&
!codigoSetorComercial.equalsIgnoreCase("")&&
Util.validarValorNaoNumerico(codigoSetorComercial)){
//Setor Comercial n�o num�rico.
httpServletRequest.setAttribute("nomeCampo","codigoSetorComercial");
throw new ActionServletException("atencao.nao.numerico",
null,"Setor Comercial ");
}else{
verificaExistenciaCodSetorComercial(idLocalidade,
codigoSetorComercial,fachada,httpServletRequest);
}
if (codigoRota != null &&
!codigoRota.equalsIgnoreCase("") &&
Util.validarValorNaoNumerico(codigoRota)){
//C�digo da Rota n�o num�rico.
httpServletRequest.setAttribute("nomeCampo","codigoRota");
throw new ActionServletException("atencao.nao.numerico",
null,"C�digo da Rota ");
}
}
}