package gcom.gui.faturamento.conta;
import gcom.fachada.Fachada;
import gcom.faturamento.conta.ContaMensagem;
import gcom.faturamento.conta.FiltroContaMensagem;
import gcom.gui.ActionServletException;
import gcom.gui.GcomAction;
import gcom.util.Util;
import gcom.util.filtro.ComparacaoTexto;
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;
/**
* < <Descri��o da Classe>>
*
* @author Administrador
*/
public class FiltrarMensagemContaAction extends GcomAction {
public ActionForward execute(ActionMapping actionMapping,
ActionForm actionForm, HttpServletRequest httpServletRequest,
HttpServletResponse httpServletResponse) {
FiltrarMensagemContaActionForm filtrarMensagemContaActionForm = (FiltrarMensagemContaActionForm) actionForm;
Fachada fachada = Fachada.getInstancia();
// Mudar isso quando tiver esquema de seguran�a
HttpSession sessao = httpServletRequest.getSession(false);
// Variavel para testar se o campo naum obrigatorio esta vazio
String referenciaFaturamento = filtrarMensagemContaActionForm
.getReferenciaFaturamento();
String atualizar = httpServletRequest.getParameter("atualizar");
String mensagemConta01 = filtrarMensagemContaActionForm
.getMensagemConta01();
/* String mensagemConta02 = filtrarMensagemContaActionForm
.getMensagemConta02();
String mensagemConta03 = filtrarMensagemContaActionForm
.getMensagemConta03();
*/
String grupoFaturamento = filtrarMensagemContaActionForm
.getGrupoFaturamentoHidden();
String gerenciaRegional = filtrarMensagemContaActionForm
.getGerenciaRegionalHidden();
String localidade = filtrarMensagemContaActionForm.getLocalidade();
String setorComercial = filtrarMensagemContaActionForm
.getSetorComercial();
String quadra = filtrarMensagemContaActionForm.getQuadra();
if ((referenciaFaturamento == null || referenciaFaturamento
.equalsIgnoreCase(""))
&& (grupoFaturamento == null || grupoFaturamento
.equalsIgnoreCase(""))
&& (mensagemConta01 == null || mensagemConta01.equalsIgnoreCase(""))
&& (gerenciaRegional == null || gerenciaRegional
.equalsIgnoreCase(""))
&& (localidade == null || localidade.equalsIgnoreCase(""))
&& (setorComercial == null || setorComercial
.equalsIgnoreCase(""))) {
throw new ActionServletException(
"atencao.filtro.nenhum_parametro_informado");
}
FiltroContaMensagem filtroContaMensagem = new FiltroContaMensagem();
if (referenciaFaturamento != null
&& !referenciaFaturamento.equalsIgnoreCase("")) {
if (Util.validarAnoMes(referenciaFaturamento)) {
throw new ActionServletException("atencao.ano_mes_invalido");
} else {
Integer mes = new Integer(referenciaFaturamento.substring(0, 2));
Integer ano = new Integer(referenciaFaturamento.substring(3, 7));
if (mes <= 0 || mes > 12) {
throw new ActionServletException("atencao.ano_mes_invalido");
}
if (ano < 1900) {
throw new ActionServletException("atencao.ano_mes_invalido");
}
if (referenciaFaturamento != null
&& !referenciaFaturamento.equalsIgnoreCase("")) {
Integer referenciaFaturametoTratado = new Integer(
Util
.formatarMesAnoParaAnoMesSemBarra(referenciaFaturamento));
filtroContaMensagem
.adicionarParametro(new ParametroSimples(
FiltroContaMensagem.ANO_MES_REFERECIA_FATURAMENTO,
referenciaFaturametoTratado));
}
}
}
if (grupoFaturamento != null && !grupoFaturamento.equalsIgnoreCase("")) {
filtroContaMensagem
.adicionarParametro(new ParametroSimples(
FiltroContaMensagem.GRUPO_FATURAMENTO_ID,
grupoFaturamento));
}
if (mensagemConta01 != null && !mensagemConta01.equalsIgnoreCase("")) {
filtroContaMensagem.adicionarParametro(new ComparacaoTexto(
FiltroContaMensagem.MENSAGEM_CONTA_01, mensagemConta01));
}
/* if (mensagemConta02 != null && !mensagemConta02.equalsIgnoreCase("")) {
filtroContaMensagem.adicionarParametro(new ComparacaoTexto(
FiltroContaMensagem.MENSAGEM_CONTA_02, mensagemConta02));
}
if (mensagemConta01 != null && !mensagemConta01.equalsIgnoreCase("")) {
filtroContaMensagem.adicionarParametro(new ComparacaoTexto(
FiltroContaMensagem.MENSAGEM_CONTA_03, mensagemConta03));
}
*/
if (gerenciaRegional != null && !gerenciaRegional.equalsIgnoreCase("")) {
filtroContaMensagem
.adicionarParametro(new ParametroSimples(
FiltroContaMensagem.GERENCIA_REGIONAL_ID,
gerenciaRegional));
}
if (localidade != null && !localidade.equalsIgnoreCase("")) {
filtroContaMensagem.adicionarParametro(new ParametroSimples(
FiltroContaMensagem.LOCALIDADE_ID, localidade));
}
if (setorComercial != null && !setorComercial.equalsIgnoreCase("")) {
filtroContaMensagem.adicionarParametro(new ParametroSimples(
FiltroContaMensagem.SETOR_COMERCIAL_CD, setorComercial));
}
if (quadra != null && !quadra.equalsIgnoreCase("")) {
filtroContaMensagem.adicionarParametro(new ParametroSimples(
FiltroContaMensagem.NUMERO_QUADRA, quadra));
}
filtroContaMensagem
.adicionarCaminhoParaCarregamentoEntidade("faturamentoGrupo");
filtroContaMensagem
.adicionarCaminhoParaCarregamentoEntidade("gerenciaRegional");
filtroContaMensagem
.adicionarCaminhoParaCarregamentoEntidade("localidade");
filtroContaMensagem
.adicionarCaminhoParaCarregamentoEntidade("setorComercial");
filtroContaMensagem
.adicionarCaminhoParaCarregamentoEntidade("quadra");
filtroContaMensagem.setCampoOrderBy(FiltroContaMensagem.ANO_MES_REFERECIA_FATURAMENTO);
Collection<ContaMensagem> colecaoContaMensagem = (Collection<ContaMensagem>) fachada
.pesquisar(filtroContaMensagem, ContaMensagem.class.getName());
sessao.setAttribute("colecaoContaMensagem", colecaoContaMensagem);
ActionForward retorno = null;
if (colecaoContaMensagem != null && !colecaoContaMensagem.isEmpty()) {
if (colecaoContaMensagem.size() == 1 && atualizar != null) {
httpServletRequest.setAttribute("contaMensagemID",
colecaoContaMensagem.iterator().next().getId());
retorno = actionMapping
.findForward("exibirAtualizarMensagemConta");
} else {
retorno = actionMapping
.findForward("exibirManterMensagemConta");
}
} else {
throw new ActionServletException("atencao.pesquisa.nenhumresultado");
}
if (sessao.getAttribute("filtroContaMensagem") != null){
sessao.removeAttribute("filtroContaMensagem");
}
sessao.setAttribute("filtroContaMensagem", filtroContaMensagem);
return retorno;
}
}