package gcom.gui.atendimentopublico.ordemservico;
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;
import gcom.atendimentopublico.registroatendimento.AtendimentoMotivoEncerramento;
import gcom.atendimentopublico.registroatendimento.FiltroAtendimentoMotivoEncerramento;
import gcom.fachada.Fachada;
import gcom.gui.ActionServletException;
import gcom.gui.GcomAction;
import gcom.util.ConstantesSistema;
import gcom.util.filtro.ParametroSimples;
import gcom.util.filtro.ParametroSimplesIn;
/**
* <<>>
*
* @author Raimundo Martins
* @date 21/07/2011
*/
public class ExibirPesquisarMotivoDeEncerramentoAction extends GcomAction{
/**
* Efetua pesquisa, adi��o e remo��o do motivo do encerramento
*
* [UC0412] Manter Tipo de Servi�o
*
* @author Raimundo Martins
* @date 21/07/2011
*
* @param actionMapping
* @param actionForm
* @param httpServletRequest
* @param httpServletResponse
* @return
*/
public ActionForward execute(ActionMapping actionMapping,
ActionForm actionForm,
HttpServletRequest httpServletRequest,
HttpServletResponse httpServletResponse) {
HttpSession sessao = httpServletRequest.getSession(false);
ActionForward retorno = actionMapping.findForward("exibirMotivoEncerramentoPopup");
Fachada fachada = Fachada.getInstancia();
Collection colecaoAtendimentoMotivosEncerramentoInseridos = (Collection) sessao.getAttribute("colecaoAtendimentoMotivosEncerramentoInseridos");
if(colecaoAtendimentoMotivosEncerramentoInseridos == null){
colecaoAtendimentoMotivosEncerramentoInseridos = new ArrayList();
}
if(httpServletRequest.getParameter("limpar") != null){
FiltroAtendimentoMotivoEncerramento filtroAtendimentoMotivoEncerramento = new FiltroAtendimentoMotivoEncerramento();
filtroAtendimentoMotivoEncerramento.adicionarParametro(new ParametroSimples(FiltroAtendimentoMotivoEncerramento.INDICADOR_USO, ConstantesSistema.SIM));
filtroAtendimentoMotivoEncerramento.setCampoOrderBy(FiltroAtendimentoMotivoEncerramento.DESCRICAO);
Collection colecaoAtendimentoMotivoEncerramento = fachada.pesquisar(filtroAtendimentoMotivoEncerramento, AtendimentoMotivoEncerramento.class.getName());
sessao.setAttribute("colecaoAtendimentoMotivoEncerramento", colecaoAtendimentoMotivoEncerramento);
}
else if(httpServletRequest.getParameter("idRemover") !=null){
String idMotivoEncerramento = httpServletRequest.getParameter("idRemover");
ArrayList<AtendimentoMotivoEncerramento> motivos = null;
if(idMotivoEncerramento !=null && !idMotivoEncerramento.equals("") && !idMotivoEncerramento.equals(" ")){
int idMotivo = Integer.parseInt(idMotivoEncerramento);
motivos = new ArrayList<AtendimentoMotivoEncerramento>(colecaoAtendimentoMotivosEncerramentoInseridos);
for(int i = 0; i < motivos.size(); i++){
if(motivos.get(i).getId().intValue() == idMotivo){
motivos.remove(i);
i = motivos.size();
}
}
}
sessao.setAttribute("colecaoAtendimentoMotivosEncerramentoInseridos",motivos);
retorno = actionMapping.findForward("atualizarTipoServico");
}
//Adiciona um novo motivo de encerramento
else{
PesquisarMotivoDeEncerramentoActionForm form = (PesquisarMotivoDeEncerramentoActionForm) actionForm;
ArrayList idsMotivos = new ArrayList();
Collection<AtendimentoMotivoEncerramento> motivosEncerramento = null;
if(sessao.getAttribute("colecaoAtendimentoMotivosEncerramentoInseridos") != null){
motivosEncerramento = (Collection<AtendimentoMotivoEncerramento>) sessao.getAttribute("colecaoAtendimentoMotivosEncerramentoInseridos");
for (AtendimentoMotivoEncerramento motivo : motivosEncerramento) {
for (String idMotivoEncerrado : form.getIdsMotivoEncerramento()) {
if(motivo.getId().intValue() == Integer.parseInt(idMotivoEncerrado)){
throw new ActionServletException(
"atencao.motivo.encerramento.ja.existe", null, "");
}
}
}
}
for(String idMotivo : form.getIdsMotivoEncerramento()){
idsMotivos.add(Integer.parseInt(idMotivo));
}
FiltroAtendimentoMotivoEncerramento filtroAtendimentoMotivoEncerramento = new FiltroAtendimentoMotivoEncerramento();
filtroAtendimentoMotivoEncerramento.adicionarParametro(new ParametroSimplesIn(FiltroAtendimentoMotivoEncerramento.ID, idsMotivos));
Collection colecao = fachada.pesquisar(filtroAtendimentoMotivoEncerramento, AtendimentoMotivoEncerramento.class.getName());
Iterator iter = colecao.iterator();
while(iter.hasNext()){
colecaoAtendimentoMotivosEncerramentoInseridos.add(iter.next());
}
sessao.setAttribute("colecaoAtendimentoMotivosEncerramentoInseridos",colecaoAtendimentoMotivosEncerramentoInseridos);
httpServletRequest.setAttribute("fecharPopup", "OK");
}
return retorno;
}
}