package gcom.gui.atendimentopublico.ordemservico;
import gcom.atendimentopublico.ordemservico.Equipe;
import gcom.atendimentopublico.ordemservico.FiltroEquipe;
import gcom.atendimentopublico.ordemservico.OrdemServico;
import gcom.fachada.Fachada;
import gcom.gui.ActionServletException;
import gcom.gui.GcomAction;
import gcom.seguranca.acesso.usuario.Usuario;
import gcom.util.ConstantesSistema;
import gcom.util.Util;
import gcom.util.filtro.ParametroSimples;
import gcom.util.filtro.ParametroSimplesDiferenteDe;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Date;
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 ExibirAcompanharRoteiroProgramacaoOrdemServicoRemanejarEquipeAction extends GcomAction {
public ActionForward execute(ActionMapping actionMapping,ActionForm actionForm,
HttpServletRequest httpServletRequest,HttpServletResponse httpServletResponse) {
// Seta o mapeamento de retorno
ActionForward retorno = actionMapping.findForward("remanejarEquipe");
HttpSession sessao = httpServletRequest.getSession(false);
Fachada fachada = Fachada.getInstancia();
Usuario usuario = (Usuario) sessao.getAttribute("usuarioLogado");
// Form
AcompanharRoteiroProgramacaoOrdemServicoActionForm
acompanharActionForm = (AcompanharRoteiroProgramacaoOrdemServicoActionForm) actionForm;
String chaveOs = httpServletRequest.getParameter("chave");
OrdemServico ordemServico = fachada.recuperaOSPorId(new Integer(chaveOs));
if(ordemServico.getSituacao() == OrdemServico.SITUACAO_ENCERRADO.shortValue()){
throw new ActionServletException("atencao.ordem_servico_encerrada_para_alocar");
}
// Precisa pegar a unidade do usuario do login que esta na sessao
Integer idUnidadeLotacao = usuario.getUnidadeOrganizacional().getId();
Date dataRoteiro =
Util.converteStringParaDate(acompanharActionForm.getDataRoteiro());
Collection<Equipe> colecao =
fachada.recuperaEquipeDaOSProgramacaoPorDataRoteiro(new Integer(chaveOs),dataRoteiro);
if(colecao != null && colecao.size() > 1){
throw new ActionServletException("atencao.ordem_servico_programada_varias_equipes");
}
Equipe equipeAtual = (Equipe) Util.retonarObjetoDeColecao(colecao);
Collection<Equipe> colecaoEquipe = this.pesquisarEquipes(idUnidadeLotacao,equipeAtual.getId());
acompanharActionForm.setIdEquipeAtual(""+equipeAtual.getId());
acompanharActionForm.setNomeEquipeAtual(equipeAtual.getNome());
acompanharActionForm.setIdOrdemServico(chaveOs);
acompanharActionForm.setDescricaoOrdemServico(ordemServico.getServicoTipo().getDescricao());
acompanharActionForm.setEquipes(colecaoEquipe);
return retorno;
}
/**
* Pesquisa todas as equipes que est�o ligadas a unidade organizacional do usuario
*
* @author Rafael Pinto
* @date 17/08/2006
*
* @param sessao,id da Unidade Organizacional
* @return Collection de Equipe
*/
private Collection<Equipe> pesquisarEquipes(Integer idUnidadeLotacao,Integer idEquipe){
Collection<Equipe> retorno = new ArrayList();
FiltroEquipe filtroEquipe = new FiltroEquipe();
filtroEquipe.adicionarParametro(new ParametroSimples(
FiltroEquipe.ID_UNIDADE_ORGANIZACIONAL,idUnidadeLotacao));
filtroEquipe.adicionarParametro(new ParametroSimplesDiferenteDe(
FiltroEquipe.ID,idEquipe));
filtroEquipe.adicionarParametro(new ParametroSimples(
FiltroEquipe.INDICADOR_USO,ConstantesSistema.SIM));
filtroEquipe.setCampoOrderBy(FiltroEquipe.NOME);
retorno = Fachada.getInstancia().pesquisar(filtroEquipe, Equipe.class.getName());
return retorno;
}
}