package gcom.gui.micromedicao;
import gcom.cadastro.sistemaparametro.SistemaParametro;
import gcom.fachada.Fachada;
import gcom.gui.ActionServletException;
import gcom.gui.GcomAction;
import gcom.micromedicao.FiltroLeiturista;
import gcom.micromedicao.Leiturista;
import gcom.seguranca.acesso.usuario.Usuario;
import gcom.util.filtro.ParametroNaoNulo;
import gcom.util.filtro.ParametroSimples;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
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;
/**
* @see gcom.gui.micromedicao.InformarSubdivisoesDeRotaAction
* @see gcom.gui.micromedicao.InformarSubdivisoesDeRotaActionForm
* @see gcom.gui.micromedicao.ExibirInformarSubdivisoesDeRotaAction
*
* @author Ivan Sergio
* @date 18/02/2010
*/
public class ExibirAlterarSubdivisoesDeRotaAction extends GcomAction {
@Override
public ActionForward execute(
ActionMapping mapping,
ActionForm actionForm,
HttpServletRequest request,
HttpServletResponse response) throws Exception {
Fachada fachada = Fachada.getInstancia();
ActionForward retorno = mapping.findForward("exibirAlterarSubdivisoesDeRotaAction");
SistemaParametro sistemaParametro = fachada.pesquisarParametrosDoSistema();
HttpSession session = request.getSession();
String opcao = request.getParameter("opcao");
Usuario usuario = (Usuario) request.getSession(false).getAttribute("usuarioLogado");
if (usuario.getEmpresa() == null) {
throw new ActionServletException("atencao.pesquisa_inexistente", null, "Empresa do usu�rio logado.");
}
// Adicionando subdivisao de ROTA
if (opcao != null && opcao.equals("adicionarSubrota")) {
List<InformarSubdivisoesDeRotaActionForm> subdivisoesDeRota = new ArrayList<InformarSubdivisoesDeRotaActionForm>();
if (session.getAttribute("subdivisoesDeRota") != null) {
subdivisoesDeRota = (List<InformarSubdivisoesDeRotaActionForm>) request.getSession().getAttribute("subdivisoesDeRota");
}
// Atualiza a Lista antes de adicionar a nova Rota
List<InformarSubdivisoesDeRotaActionForm> subdivisoesDeRotaNova = new ArrayList<InformarSubdivisoesDeRotaActionForm>();
for (InformarSubdivisoesDeRotaActionForm subdivisao : subdivisoesDeRota) {
subdivisao.setQuadraInicial(request.getParameter("quadra_ini_" + subdivisao.getCodigoRota()));
subdivisao.setQuadraFinal(request.getParameter("quadra_fim_" + subdivisao.getCodigoRota()));
subdivisao.setIdLeiturista(request.getParameter("leiturista_" + subdivisao.getCodigoRota()));
subdivisoesDeRotaNova.add(subdivisao);
session.setAttribute("quadraFinalAnterior", new Integer(subdivisao.getQuadraFinal()));
}
InformarSubdivisoesDeRotaActionForm form = (InformarSubdivisoesDeRotaActionForm) actionForm;
Integer quadraFinalAnterior = (Integer) session.getAttribute("quadraFinalAnterior");
int quadraInicial = Integer.parseInt(form.getQuadraInicial());
int quadraFinal = Integer.parseInt(form.getQuadraFinal());
if (quadraFinal < quadraInicial) {
throw new ActionServletException("atencao.quadraInicial.maior.que.quadraFinal");
}
if (quadraFinalAnterior != null && quadraInicial <= quadraFinalAnterior) {
throw new ActionServletException("atencao.quadraInicial.menor.que.quadraFinal.anterior");
}
InformarSubdivisoesDeRotaActionForm linha = new InformarSubdivisoesDeRotaActionForm();
// Informa -1 como flag de nova Rota
linha.setIdRota("-1");
linha.setQuadraInicial(form.getQuadraInicial());
linha.setQuadraFinal(form.getQuadraFinal());
linha.setIdLeiturista(form.getIdLeiturista());
Integer codigoRota = new Integer(session.getAttribute("codigoRotaFinalAnterior").toString());
codigoRota++;
linha.setCodigoRota(codigoRota.toString());
subdivisoesDeRotaNova.add(linha);
session.setAttribute("quadraFinalAnterior", quadraFinal);
session.setAttribute("subdivisoesDeRota", subdivisoesDeRotaNova);
}
// Pesquisa LEITURISTA
FiltroLeiturista filtroLeiturista = new FiltroLeiturista();
if (!usuario.getEmpresa().getDescricao().equals(sistemaParametro.getNomeAbreviadoEmpresa())) {
request.setAttribute("idEmpresaLeituristica", "?idEmpresaLeituristicaRecebida=" + usuario.getEmpresa().getId() + "&");
filtroLeiturista.adicionarParametro(new ParametroSimples(FiltroLeiturista.EMPRESA_ID, usuario.getEmpresa().getId()));
}
filtroLeiturista.adicionarCaminhoParaCarregamentoEntidade(FiltroLeiturista.CLIENTE);
//*******************************************************
// Autor: Ivan Segio
// Data: 15/07/2009
// Evita erro quando o Leiturista esta cadastrado como
// Funcionario. Foi definido que um Leiturista deve ser
// cadastrado como Cliente.
//*******************************************************
filtroLeiturista.adicionarParametro(new ParametroNaoNulo(FiltroLeiturista.CLIENTE));
//*******************************************************
filtroLeiturista.setCampoOrderBy("cliente.nome");
Collection<Leiturista> colecaoLeiturista = fachada.pesquisar(filtroLeiturista, Leiturista.class.getName());
request.setAttribute("colecaoLeiturista", colecaoLeiturista);
// Recupera o ultimo codigo da rota para o caso do usuario inserir novas rotas
List<InformarSubdivisoesDeRotaActionForm> subdivisoesDeRota =
(List<InformarSubdivisoesDeRotaActionForm>) request.getSession().getAttribute("subdivisoesDeRota");
InformarSubdivisoesDeRotaActionForm ultimo = subdivisoesDeRota.get(subdivisoesDeRota.size() -1);
session.setAttribute("codigoRotaFinalAnterior", new Integer(ultimo.getCodigoRota()));
session.setAttribute("quadraFinalAnterior", new Integer(ultimo.getQuadraFinal()));
return retorno;
}
}