package gcom.gui.micromedicao;
import gcom.cadastro.empresa.Empresa;
import gcom.cadastro.empresa.FiltroEmpresa;
import gcom.fachada.Fachada;
import gcom.faturamento.FaturamentoGrupo;
import gcom.faturamento.FiltroFaturamentoGrupo;
import gcom.gui.ActionServletException;
import gcom.gui.GcomAction;
import gcom.micromedicao.ArquivoTextoRoteiroEmpresa;
import gcom.micromedicao.ArquivoTextoRoteiroEmpresaDivisao;
import gcom.micromedicao.FiltroArquivoTextoRoteiroEmpresa;
import gcom.micromedicao.FiltroArquivoTextoRoteiroEmpresaDivisao;
import gcom.micromedicao.FiltroLeiturista;
import gcom.micromedicao.Leiturista;
import gcom.micromedicao.SituacaoTransmissaoLeitura;
import gcom.seguranca.acesso.usuario.Usuario;
import gcom.util.ConstantesSistema;
import gcom.util.Util;
import gcom.util.filtro.ParametroSimples;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
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;
public class ExibirAlterarLeituristaArquivoLeituraAction extends GcomAction {
@Override
public ActionForward execute(ActionMapping map,
ActionForm actionForm, HttpServletRequest httpServletRequest,
HttpServletResponse arg3) throws Exception {
// Obt�m a inst�ncia da fachada
Fachada fachada = Fachada.getInstancia();
HttpSession sessao = httpServletRequest.getSession(false);
AlterarLeituristaArquivoLeituraActionForm form = (AlterarLeituristaArquivoLeituraActionForm) actionForm;
ActionForward retorno = map.findForward("AlterarLeituristaArquivoLeitura");
Usuario usuarioLogado = (Usuario)sessao.getAttribute("usuarioLogado");
if (httpServletRequest.getParameter("menu") != null) {
form.setEmpresaID(""+usuarioLogado.getEmpresa().getId());
form.setGrupoFaturamentoID("");
form.setMesAno("");
form.setArquivoID("");
form.setLeitursitaID("");
}
// Permissao da empresa
sessao.removeAttribute("permissao");
if(usuarioLogado.getEmpresa().getIndicadorEmpresaPrincipal().equals(new Short("1"))){
sessao.setAttribute("permissao", "1");
}else{
sessao.setAttribute("permissao", "2");
}
// Parte que passa as cole��es da Empresa necess�rias no jsp
FiltroEmpresa filtroEmpresa = new FiltroEmpresa();
filtroEmpresa.setCampoOrderBy(FiltroEmpresa.ID);
Collection colecaoEmpresa = fachada.pesquisar(
filtroEmpresa, Empresa.class.getName());
if (colecaoEmpresa != null && !colecaoEmpresa.isEmpty()) {
sessao.setAttribute("colecaoEmpresa", colecaoEmpresa);
} else {
throw new ActionServletException("atencao.naocadastrado", null,
"Empresa");
}
// Parte que passa as cole��es da Grupo de Faturamento necess�rias no jsp
FiltroFaturamentoGrupo filtroFaturamentoGrupo = new FiltroFaturamentoGrupo();
filtroFaturamentoGrupo.setCampoOrderBy(FiltroFaturamentoGrupo.ID);
Collection colecaoFaturamentoGrupo = fachada.pesquisar(
filtroFaturamentoGrupo, FaturamentoGrupo.class.getName());
if (colecaoFaturamentoGrupo != null && !colecaoFaturamentoGrupo.isEmpty()) {
sessao.setAttribute("colecaoFaturamentoGrupo", colecaoFaturamentoGrupo);
} else {
throw new ActionServletException("atencao.naocadastrado", null,
"Grupo de Faturamento");
}
String teste = httpServletRequest.getParameter("teste");
if(teste == null){
teste = "2";
}
if(form.getEmpresaID()!=null && !form.getEmpresaID().equals("") && !form.getEmpresaID().equals("-1")
&& form.getGrupoFaturamentoID() != null && !form.getGrupoFaturamentoID().equals("")
&& !form.getGrupoFaturamentoID().equals("-1") && form.getMesAno() !=null &&
Util.validarMesAno(form.getMesAno()) && !teste.equals("1")){
FiltroArquivoTextoRoteiroEmpresa filtroArquivo =
new FiltroArquivoTextoRoteiroEmpresa(FiltroArquivoTextoRoteiroEmpresa.NUMERO_SEQUENCIA_LEITURA);
filtroArquivo.adicionarCaminhoParaCarregamentoEntidade(FiltroArquivoTextoRoteiroEmpresa.ROTA);
filtroArquivo.adicionarCaminhoParaCarregamentoEntidade(FiltroArquivoTextoRoteiroEmpresa.LOCALIDADE);
filtroArquivo.adicionarParametro(new ParametroSimples(
FiltroArquivoTextoRoteiroEmpresa.SITUACAO_TRANS_LEITURA_ID, SituacaoTransmissaoLeitura.DISPONIVEL));
filtroArquivo.adicionarParametro(new ParametroSimples(
FiltroArquivoTextoRoteiroEmpresa.EMPRESA, form.getEmpresaID()));
filtroArquivo.adicionarParametro(new ParametroSimples(
FiltroArquivoTextoRoteiroEmpresa.GRUPO_FATURAMENTO, form.getGrupoFaturamentoID()));
filtroArquivo.adicionarParametro(new ParametroSimples(
FiltroArquivoTextoRoteiroEmpresa.ANO_MES_REFERENCIA,
Util.formatarMesAnoComBarraParaAnoMes(form.getMesAno())));
Collection colecao = fachada.pesquisar(filtroArquivo,ArquivoTextoRoteiroEmpresa.class.getName());
if(colecao!=null && !colecao.isEmpty()){
Collection colecaoArquivo = new ArrayList();
Iterator it = colecao.iterator();
while(it.hasNext()){
ArquivoTextoRoteiroEmpresa arq = (ArquivoTextoRoteiroEmpresa)it.next();
String descricao = arq.getNomeArquivo() + " - Rota: " + arq.getRota().getCodigo();
DadosRota dado = new DadosRota(arq.getId(),descricao);
if ( form.getTipoArquivo().equals( "T" ) ){
colecaoArquivo.add(dado);
} else if ( form.getTipoArquivo().equals( "D" ) ){
if ( fachada.isRotaDividida( arq.getRota().getId() , arq.getAnoMesReferencia()) ){
colecaoArquivo.add(dado);
}
} else {
if ( !fachada.isRotaDividida( arq.getRota().getId(), arq.getAnoMesReferencia() ) ){
colecaoArquivo.add(dado);
}
}
}
sessao.setAttribute("colecaoArquivo", colecaoArquivo);
//Cria o filtro do leiturista
FiltroLeiturista filtroLeiturista = new FiltroLeiturista();
//Adiciona os parametros de pesquisa: empresa e indicador de uso
filtroLeiturista.adicionarParametro(new ParametroSimples(FiltroLeiturista.EMPRESA_ID, form.getEmpresaID()));
filtroLeiturista.adicionarParametro(new ParametroSimples(FiltroLeiturista.INDICADOR_USO, ConstantesSistema.SIM));
filtroLeiturista.adicionarCaminhoParaCarregamentoEntidade(FiltroLeiturista.CLIENTE);
filtroLeiturista.adicionarCaminhoParaCarregamentoEntidade(FiltroLeiturista.FUNCIONARIO);
filtroLeiturista.setCampoOrderBy( FiltroLeiturista.FUNCIONARIO_NOME, FiltroLeiturista.CLIENTE_NOME );
//Pesquisa dos leituristas
Collection colecaoLeit = fachada.pesquisar(filtroLeiturista,Leiturista.class.getName());
it = colecaoLeit.iterator();
Collection colecaoLeiturista = new ArrayList();
while(it.hasNext()){
Leiturista leitu =(Leiturista) it.next();
DadosLeiturista dadosLeiu = null;
if(leitu.getFuncionario()!=null){
dadosLeiu = new DadosLeiturista(leitu.getId(),leitu.getFuncionario().getNome());
}else{
dadosLeiu = new DadosLeiturista(leitu.getId(),leitu.getCliente().getNome());
}
colecaoLeiturista.add(dadosLeiu);
}
sessao.setAttribute("colecaoLeiturista", colecaoLeiturista);
}else{
throw new ActionServletException("atencao.nenhum_arquivo_texto_encontrado", "exibirAlterarLeituristaArquivoLeituraAction.do?teste=1",
"Arquivo Texto");
}
}else{
sessao.setAttribute("colecaoArquivo", null);
}
String arquivoID = form.getArquivoID();
if ( httpServletRequest.getParameter( "pesquisar" ) != null &&
httpServletRequest.getParameter( "pesquisar" ).equals( "consultar" ) ){
arquivoID = "";
}
if ( arquivoID != null && !arquivoID.equals( "" ) && !arquivoID.equals( "-1" ) ){
FiltroArquivoTextoRoteiroEmpresaDivisao filtroDivisao = new FiltroArquivoTextoRoteiroEmpresaDivisao();
filtroDivisao.adicionarParametro( new ParametroSimples( FiltroArquivoTextoRoteiroEmpresaDivisao.ARQUIVO_TEXTO_ROTEIRO_EMPRESA_ID, arquivoID ) );
Collection<ArquivoTextoRoteiroEmpresaDivisao> colDivisao = fachada.pesquisar( filtroDivisao, ArquivoTextoRoteiroEmpresaDivisao.class.getName() );
Collection<DadosRota> colDadosDivisao = new ArrayList();
for (ArquivoTextoRoteiroEmpresaDivisao divisao : colDivisao) {
String descricao = divisao.getNomeArquivo() + " - Seq.: " + divisao.getNumeroSequenciaArquivo();
DadosRota dadosRota = new DadosRota( divisao.getId(), descricao );
colDadosDivisao.add( dadosRota );
}
if ( colDivisao != null && !colDivisao.isEmpty() ){
sessao.setAttribute("colecaoArquivoDividido", colDadosDivisao);
}
} else {
form.setArquivoID( "-1" );
sessao.setAttribute("colecaoArquivoDividido", null);
}
return retorno;
}
}