package gcom.gui.relatorio;
import gcom.cadastro.empresa.Empresa;
import gcom.faturamento.FaturamentoGrupo;
import gcom.gui.ActionServletException;
import gcom.gui.micromedicao.ConsultarArquivoTextoLeituraActionForm;
import gcom.gui.relatorio.micromedicao.FiltroRelatorioLeituraConsultarArquivosTextoHelper;
import gcom.micromedicao.FiltroLeiturista;
import gcom.micromedicao.FiltroSituacaoTransmissaoLeitura;
import gcom.micromedicao.Leiturista;
import gcom.micromedicao.SituacaoTransmissaoLeitura;
import gcom.relatorio.ExibidorProcessamentoTarefaRelatorio;
import gcom.relatorio.RelatorioVazioException;
import gcom.relatorio.micromedicao.RelatorioLeituraConsultarArquivoTextos;
import gcom.seguranca.acesso.usuario.Usuario;
import gcom.tarefa.TarefaRelatorio;
import gcom.util.ConstantesSistema;
import gcom.util.SistemaException;
import gcom.util.Util;
import gcom.util.filtro.ParametroSimples;
import java.util.Collection;
import java.util.Iterator;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
public class GerarRelatorioLeituraConsultarArquivosTextoAction extends
ExibidorProcessamentoTarefaRelatorio {
@Override
public ActionForward execute(ActionMapping actionMapping,
ActionForm actionForm, HttpServletRequest request,
HttpServletResponse response) throws Exception {
// cria a vari�vel de retorno
ActionForward retorno = null;
//form que vem do arquivo_texto_Leitura_consultar.jsp
ConsultarArquivoTextoLeituraActionForm form = (ConsultarArquivoTextoLeituraActionForm) actionForm;
request.setAttribute("telaSucessoRelatorio",true);
FiltroRelatorioLeituraConsultarArquivosTextoHelper helper = new FiltroRelatorioLeituraConsultarArquivosTextoHelper();
boolean peloMenosUmParametroInformado = false;
//Parte que pega as variaveis do form passado como par�metro e armazena localmente
String empresaID = form.getEmpresaID();
String grupoFaturamentoID = form.getGrupoFaturamentoID();
String mesAno = form.getMesAno();
String situaTransmLeitura = form.getSituaTransmLeitura();
String leiturista = form.getLeituristaID();
String servicoTipoCelular = form.getServicoTipoCelular();
String localidade = form.getIdLocalidade();
Usuario usuarioLogado = (Usuario) this.getSessao(request).getAttribute("usuarioLogado");
//fim da parte que pega as variaveis do form passado como par�metro e armazena localmente
this.getSessao(request).removeAttribute("permissao");
if (usuarioLogado.getEmpresa().getIndicadorEmpresaPrincipal().equals(
new Short("1"))) {
this.getSessao(request).setAttribute("permissao", "1");
} else {
this.getSessao(request).setAttribute("permissao", "2");
}
//verifica se o campo empresa Id foi informado
if (empresaID != null &&
!empresaID.trim().equalsIgnoreCase("" + ConstantesSistema.NUMERO_NAO_INFORMADO)) {
peloMenosUmParametroInformado = true;
helper.setIdEmpresa(empresaID);
}
//verifica se o campo empresa Id foi informado
if (localidade != null &&
!localidade.equals("")&&
!localidade.trim().equalsIgnoreCase("" + ConstantesSistema.NUMERO_NAO_INFORMADO)) {
peloMenosUmParametroInformado = true;
helper.setIdLocalidade(localidade);
}
// Verifica se o campo Grupo de Faturamento foi informado
if (grupoFaturamentoID != null
&& !grupoFaturamentoID.trim().equalsIgnoreCase(
"" + ConstantesSistema.NUMERO_NAO_INFORMADO)) {
peloMenosUmParametroInformado = true;
helper.setIdGrupoFaturamento(grupoFaturamentoID);
}
// // M�s de Refer�ncia
if (mesAno != null && !mesAno.trim().equals("")) {
peloMenosUmParametroInformado = true;
helper.setAnoMes(Util.formatarMesAnoComBarraParaAnoMes(mesAno).toString());
}
if (leiturista != null && !leiturista.equals("")
&& !leiturista.equals("-1")) {
peloMenosUmParametroInformado = true;
helper.setIdLeiturista(leiturista);
}
// Verifica se o campo Situa��o Texto para Leitura foi informado
if (situaTransmLeitura != null
&& !situaTransmLeitura.trim().equalsIgnoreCase("")) {
peloMenosUmParametroInformado = true;
helper.setIdSituacaoTransmissaoLeitura(situaTransmLeitura);
}
if(servicoTipoCelular != null &&
!servicoTipoCelular.trim().equalsIgnoreCase("")){
peloMenosUmParametroInformado = true;
helper.setIdServicoTipoCelular(servicoTipoCelular);
}
// Erro caso o usu�rio mandou Pesquisar sem nenhum par�metro
if (!peloMenosUmParametroInformado) {
throw new ActionServletException(
"atencao.filtro.nenhum_parametro_informado");
}
Integer quantidade = this.getFachada().consultarCountRelatorioLeituraConsultarArquivosTexto(helper);
if (quantidade == null || quantidade.intValue() == 0) {
throw new ActionServletException(
"atencao.nenhum_arquivo_texto_roteiro_empresa", null,
"Arquivo Texto Leitura");
}
this.getSessao(request).removeAttribute("grupoFaturamentoID");
// cria uma inst�ncia da classe do relat�rio
RelatorioLeituraConsultarArquivoTextos relatorioArquivosTextos = new RelatorioLeituraConsultarArquivoTextos(
(Usuario)(request.getSession(false)).getAttribute("usuarioLogado"));
relatorioArquivosTextos.addParametro("mesAno",form.getMesAno());
relatorioArquivosTextos.addParametro("tamanhoColecaoArquivosText",quantidade);
relatorioArquivosTextos.addParametro("helper",helper);
if(situaTransmLeitura != null && !situaTransmLeitura.equals("") && !situaTransmLeitura.equals("-1")){
FiltroSituacaoTransmissaoLeitura filtroSituacaoTransmissaoLeitura =
new FiltroSituacaoTransmissaoLeitura();
filtroSituacaoTransmissaoLeitura.adicionarParametro(
new ParametroSimples( FiltroSituacaoTransmissaoLeitura.ID, situaTransmLeitura));
Collection colecaoRetorno = this.getFachada().pesquisar(filtroSituacaoTransmissaoLeitura, SituacaoTransmissaoLeitura.class.getName());
SituacaoTransmissaoLeitura situacaoTransmissaoLeitura = (SituacaoTransmissaoLeitura) Util.retonarObjetoDeColecao(colecaoRetorno);
relatorioArquivosTextos.addParametro("situacaoTextoLeitura",situacaoTransmissaoLeitura.getDescricaoSituacao());
}else{
relatorioArquivosTextos.addParametro("situacaoTextoLeitura","TODOS");
}
Collection colecaoFaturamentoGrupo = (Collection)
this.getSessao(request).getAttribute("colecaoFaturamentoGrupo");
//esse for procura pelo faturamento grupo selecionado no form de consulta
for (Iterator iter = colecaoFaturamentoGrupo.iterator(); iter.hasNext();) {
FaturamentoGrupo faturamentoGrupo = (FaturamentoGrupo) iter.next();
if(faturamentoGrupo.getId().intValue() == Integer.parseInt(form.getGrupoFaturamentoID())){
relatorioArquivosTextos.addParametro("nomeGrupoFaturamento",faturamentoGrupo.getDescricao());
}
}
Collection colecaoEmpresa = (Collection) this.getSessao(request).getAttribute("colecaoEmpresa");
Empresa empresa = null;
for (Iterator iter = colecaoEmpresa.iterator(); iter.hasNext();) {
empresa = (Empresa) iter.next();
if(empresa.getId() == Integer.parseInt(form.getEmpresaID())){
break;
}
}
if(empresa != null){
relatorioArquivosTextos.addParametro("nomeEmpresa",empresa.getDescricao());
}
if(leiturista != null && !leiturista.equals("") && !leiturista.equals("-1")){
FiltroLeiturista filtroLeiturista = new FiltroLeiturista();
filtroLeiturista.adicionarParametro( new ParametroSimples( FiltroLeiturista.ID, leiturista));
filtroLeiturista.adicionarCaminhoParaCarregamentoEntidade(FiltroLeiturista.FUNCIONARIO);
filtroLeiturista.adicionarCaminhoParaCarregamentoEntidade(FiltroLeiturista.CLIENTE);
Collection colecaoLeiturista = this.getFachada().pesquisar(filtroLeiturista, Leiturista.class.getName());
Leiturista leitu = (Leiturista) Util.retonarObjetoDeColecao(colecaoLeiturista);
if(leitu != null){
if( leitu.getFuncionario() != null ) {
relatorioArquivosTextos.addParametro("nomeLeiturista",leitu.getFuncionario().getNome());
} else {
relatorioArquivosTextos.addParametro("nomeLeiturista",leitu.getCliente().getNome());
}
}
}
String tipoRelatorio = request.getParameter("tipoRelatorio");
if (tipoRelatorio == null) {
tipoRelatorio = TarefaRelatorio.TIPO_PDF + "";
}
relatorioArquivosTextos.addParametro("tipoFormatoRelatorio", Integer
.parseInt(tipoRelatorio));
try {
retorno = processarExibicaoRelatorio(relatorioArquivosTextos,
TarefaRelatorio.TIPO_PDF, request, response,
actionMapping);
} catch (SistemaException ex) {
reportarErros(request, "erro.sistema");
// seta o mapeamento de retorno para a tela de erro de popup
retorno = actionMapping.findForward("telaErroPopup");
} catch (RelatorioVazioException ex1) {
// manda o erro para a p�gina no request atual
reportarErros(request, "erro.relatorio.vazio");
// seta o mapeamento de retorno para a tela de aten��o de popup
retorno = actionMapping.findForward("telaAtencaoPopup");
}
return retorno;
}
}