package gcom.gui.relatorio.seguranca;
import gcom.gui.ActionServletException;
import gcom.gui.seguranca.acesso.usuario.FiltrarSolicitacaoAcessoActionForm;
import gcom.relatorio.ExibidorProcessamentoTarefaRelatorio;
import gcom.relatorio.RelatorioVazioException;
import gcom.relatorio.seguranca.FiltrarRelatorioSolicitacaoAcessoHelper;
import gcom.relatorio.seguranca.RelatorioSolicitacaoAcesso;
import gcom.seguranca.acesso.usuario.Usuario;
import gcom.tarefa.TarefaRelatorio;
import gcom.util.ConstantesSistema;
import gcom.util.SistemaException;
import gcom.util.Util;
import java.util.ArrayList;
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;
/**
* [UC1093] Gerar Relat�rio Solicita��o de Acesso
*
* @author Hugo Leonardo
*
* @date 22/11/2010
*/
public class GerarRelatorioSolicitacaoAcessoAction extends ExibidorProcessamentoTarefaRelatorio {
public ActionForward execute(ActionMapping actionMapping,
ActionForm actionForm, HttpServletRequest httpServletRequest,
HttpServletResponse httpServletResponse) {
// Seta o mapeamento de retorno
ActionForward retorno = null;
HttpSession sessao = httpServletRequest.getSession(false);
httpServletRequest.setAttribute("telaSucessoRelatorio",true);
FiltrarSolicitacaoAcessoActionForm form =
(FiltrarSolicitacaoAcessoActionForm) sessao.getAttribute("filtroForm");
FiltrarRelatorioSolicitacaoAcessoHelper filtroHelper = this.setFiltroHelper(form);
String tipoRelatorio = httpServletRequest.getParameter("tipoRelatorio");
TarefaRelatorio relatorio = new RelatorioSolicitacaoAcesso((Usuario)
(httpServletRequest.getSession(false)).getAttribute("usuarioLogado"));
if (tipoRelatorio == null) {
tipoRelatorio = TarefaRelatorio.TIPO_PDF + "";
}
relatorio.addParametro("tipoFormatoRelatorio",Integer.parseInt(tipoRelatorio));
relatorio.addParametro("filtroSolicitacaoAcesso", filtroHelper);
String periodo = "";
if(filtroHelper.getDataInicial() != null && filtroHelper.getDataFinal() != null){
periodo = filtroHelper.getDataInicial() + " a " + filtroHelper.getDataFinal();
}
relatorio.addParametro("periodo", periodo);
try {
retorno = processarExibicaoRelatorio(relatorio, tipoRelatorio, httpServletRequest,
httpServletResponse, actionMapping);
} catch (SistemaException ex) {
// manda o erro para a p�gina no request atual
reportarErros(httpServletRequest, "erro.sistema");
// seta o mapeamento de retorno para a tela de erro de popup
retorno = actionMapping.findForward("telaErroPopup");
} catch (RelatorioVazioException ex1) {
throw new ActionServletException("atencao.pesquisa.nenhumresultado", null, "");
}
return retorno;
}
/**
* Preenche objeto FiltrarRelatorioSolicitacaoAcessoHelper
*
* @author Hugo Leonardo
* @date 23/11/2010
*
* @param FiltrarSolicitacaoAcessoActionForm
* @return FiltrarRelatorioSolicitacaoAcessoHelper
*/
private FiltrarRelatorioSolicitacaoAcessoHelper setFiltroHelper(FiltrarSolicitacaoAcessoActionForm form) {
FiltrarRelatorioSolicitacaoAcessoHelper filtroHelper = new FiltrarRelatorioSolicitacaoAcessoHelper();
// funcion�rio solicitante
if(Util.verificarNaoVazio(form.getIdFuncionarioSolicitante())){
filtroHelper.setIdFuncionarioSolicitante(form.getIdFuncionarioSolicitante());
}
//Per�odo Inicial e Per�odo Final
if (form.getDataInicial() != null && !form.getDataInicial().equals("")
&& form.getDataFinal() != null && !form.getDataFinal().equals("")){
filtroHelper.setDataInicial(form.getDataInicial());
filtroHelper.setDataFinal(form.getDataFinal());
}
// funcion�rio respons�vel
if(Util.verificarNaoVazio(form.getIdFuncionarioSuperior())){
filtroHelper.setIdFuncionarioSolicitante(form.getIdFuncionarioSuperior());
}
// Empresa
if(Util.verificarNaoVazio(form.getIdEmpresa())){
filtroHelper.setIdEmpresa(form.getIdEmpresa());
}
// funcion�rio usu�rio
if(Util.verificarNaoVazio(form.getIdFuncionario())){
filtroHelper.setIdFuncionario(form.getIdFuncionario());
}
// Nome Usu�rio
if(Util.verificarNaoVazio(form.getNomeUsuario())){
filtroHelper.setNomeUsuario(form.getNomeUsuario());
}
// Unidade de Lota��o
if(Util.verificarNaoVazio(form.getIdLotacao())){
filtroHelper.setIdLotacao(form.getIdLotacao());
}
// Situa��o
if (form.getIdsSituacao() != null && !form.getIdsSituacao().equals("-1") ){
Collection<Integer> colecao = new ArrayList();
String[] array = form.getIdsSituacao();
for (int i = 0; i < array.length; i++) {
if (new Integer(array[i]).intValue() != ConstantesSistema.NUMERO_NAO_INFORMADO) {
colecao.add(new Integer(array[i]));
}
}
if(colecao.size() > 0){
filtroHelper.setIdsSituacao(colecao);
}
}
return filtroHelper;
}
}