package gcom.gui.relatorio.atendimentopublico;
import gcom.cadastro.localidade.FiltroLocalidade;
import gcom.cadastro.localidade.FiltroSetorComercial;
import gcom.cadastro.localidade.Localidade;
import gcom.cadastro.localidade.SetorComercial;
import gcom.fachada.Fachada;
import gcom.gui.ActionServletException;
import gcom.gui.atendimentopublico.ordemservico.GerarRelatorioBoletimOrdensServicoConcluidasActionForm;
import gcom.relatorio.ExibidorProcessamentoTarefaRelatorio;
import gcom.relatorio.atendimentopublico.RelatorioBoletimOrdensServicoConcluidas;
import gcom.seguranca.acesso.usuario.Usuario;
import gcom.tarefa.TarefaRelatorio;
import gcom.util.ConstantesSistema;
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;
/**
*
* @author Ivan S�rgio
* @created 07/05/2008
*
* [UC0766] Gerar Relatorio Boletim de Ordens de Servico Concluidas
*
*/
public class GerarRelatorioBoletimOrdensServicoConcluidasAction extends
ExibidorProcessamentoTarefaRelatorio {
/**
* < <Descri��o do m�todo>>
*
* @param actionMapping
* Descri��o do par�metro
* @param actionForm
* Descri��o do par�metro
* @param httpServletRequest
* Descri��o do par�metro
* @param httpServletResponse
* Descri��o do par�metro
* @return Descri��o do retorno
*/
public ActionForward execute(ActionMapping actionMapping,
ActionForm actionForm, HttpServletRequest httpServletRequest,
HttpServletResponse httpServletResponse) {
// cria a vari�vel de retorno
ActionForward retorno = null;
GerarRelatorioBoletimOrdensServicoConcluidasActionForm form =
(GerarRelatorioBoletimOrdensServicoConcluidasActionForm) actionForm;
// Recupera os valores do form para serem passados como par�metros para o Relatorio
String idFirma = form.getIdFirma();
String nomeFirma = form.getNomeFirma();
String idLocalidade = form.getIdLocalidade();
String nomeLocalidade = form.getNomeLocalidade();
String idSetorComercial = form.getIdSetorComercial();
String codigoSetorComercial = form.getCodigoSetorComercial();
String nomeSetorComercial = form.getNomeSetorComercial();
String anoMesReferenciaEncerramento = form.getAnoMesReferenciaEncerramento();
String situacao = form.getSituacao();
// Valida a Localidade Informada
if (idLocalidade != null && !idLocalidade.equals("")) {
Localidade localidade = validarLocalidade(idLocalidade);
if (nomeLocalidade == null || nomeLocalidade.equals("")) {
nomeLocalidade = localidade.getDescricao();
}
}
// Valida o Setor Informado
if (codigoSetorComercial != null && !codigoSetorComercial.equals("")) {
SetorComercial setorComercial = validarSetorComercial(idLocalidade, codigoSetorComercial);
if (idSetorComercial == null || idSetorComercial.equals("")) {
idSetorComercial = setorComercial.getId().toString();
}
if (nomeSetorComercial == null || nomeSetorComercial.equals("")) {
nomeSetorComercial = setorComercial.getDescricao();
}
}
String tipoGeracaoRelatorio = httpServletRequest.getParameter("tipoRelatorio");
RelatorioBoletimOrdensServicoConcluidas relatorio =
new RelatorioBoletimOrdensServicoConcluidas(
(Usuario) (httpServletRequest.getSession(false)).getAttribute("usuarioLogado"));
relatorio.addParametro("idFirma", idFirma);
relatorio.addParametro("nomeFirma", nomeFirma);
relatorio.addParametro("idLocalidade", idLocalidade);
relatorio.addParametro("nomeLocalidade", nomeLocalidade);
relatorio.addParametro("idSetorComercial", idSetorComercial);
relatorio.addParametro("codigoSetorComercial", codigoSetorComercial);
relatorio.addParametro("nomeSetorComercial", nomeSetorComercial);
relatorio.addParametro("anoMesReferenciaEncerramento", anoMesReferenciaEncerramento);
relatorio.addParametro("situacao", situacao);
if (tipoGeracaoRelatorio == null) {
tipoGeracaoRelatorio = TarefaRelatorio.TIPO_PDF + "";
}
relatorio.addParametro("tipoFormatoRelatorio", Integer.parseInt(tipoGeracaoRelatorio));
retorno = processarExibicaoRelatorio(
relatorio, tipoGeracaoRelatorio, httpServletRequest,
httpServletResponse, actionMapping);
return retorno;
}
private Localidade validarLocalidade(String localidade) {
Localidade retorno = null;
Fachada fachada = Fachada.getInstancia();
FiltroLocalidade filtroLocalidade = null;
Collection colecaoLocalidade = null;
// Verifica se a Localidade existe
if (localidade != null && !localidade.equals("")) {
filtroLocalidade = new FiltroLocalidade();
filtroLocalidade.adicionarParametro(new ParametroSimples(
FiltroLocalidade.ID, localidade));
filtroLocalidade.adicionarParametro(new ParametroSimples(
FiltroLocalidade.INDICADORUSO, ConstantesSistema.INDICADOR_USO_ATIVO));
colecaoLocalidade = fachada.pesquisar(filtroLocalidade, Localidade.class.getName());
if (colecaoLocalidade != null && !colecaoLocalidade.isEmpty()) {
Iterator iColecaoLocalidade = colecaoLocalidade.iterator();
retorno = (Localidade) iColecaoLocalidade.next();
}else {
throw new ActionServletException("atencao.pesquisa_inexistente", null, "Localidade");
}
}
return retorno;
}
private SetorComercial validarSetorComercial(String localidade, String codigoSetorComercial) {
SetorComercial retorno = null;
Fachada fachada = Fachada.getInstancia();
FiltroSetorComercial filtroSetorComercial = null;
Collection colecaoSetorComercial = null;
// Verifica se o Setor existe
if (codigoSetorComercial != null && !codigoSetorComercial.equals("")) {
filtroSetorComercial = new FiltroSetorComercial();
filtroSetorComercial.adicionarParametro(new ParametroSimples(
FiltroSetorComercial.ID_LOCALIDADE, localidade));
filtroSetorComercial.adicionarParametro(new ParametroSimples(
FiltroSetorComercial.CODIGO_SETOR_COMERCIAL, codigoSetorComercial));
filtroSetorComercial.adicionarParametro(new ParametroSimples(
FiltroSetorComercial.INDICADORUSO, ConstantesSistema.INDICADOR_USO_ATIVO));
colecaoSetorComercial = fachada.pesquisar(filtroSetorComercial, SetorComercial.class.getName());
if (colecaoSetorComercial != null && !colecaoSetorComercial.isEmpty()) {
Iterator iColecaoSetorComercial = colecaoSetorComercial.iterator();
retorno = (SetorComercial) iColecaoSetorComercial.next();
}else {
throw new ActionServletException("atencao.pesquisa_inexistente", null, "Setor Comercial");
}
}
return retorno;
}
}