package gcom.gui.atendimentopublico.ordemservico;
import gcom.atendimentopublico.ordemservico.Equipe;
import gcom.atendimentopublico.ordemservico.FiltroServicoPerfilTipo;
import gcom.atendimentopublico.ordemservico.ServicoPerfilTipo;
import gcom.cadastro.unidade.FiltroUnidadeOrganizacional;
import gcom.cadastro.unidade.UnidadeOrganizacional;
import gcom.fachada.Fachada;
import gcom.gui.ActionServletException;
import gcom.gui.GcomAction;
import gcom.seguranca.acesso.usuario.FiltroUsuario;
import gcom.seguranca.acesso.usuario.Usuario;
import gcom.util.ConstantesSistema;
import gcom.util.Util;
import gcom.util.filtro.ParametroSimples;
import java.math.BigDecimal;
import java.util.Collection;
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;
/**
* [UC0371] Inserir Equipe
*
* @author Leonardo Regis
* @created 24 de Julho de 2006
*/
public class AtualizarEquipeAction extends GcomAction {
/**
* [UC0372] Manter Equipe
*
* @author Rafael Corr�a
* @date 13/11/2006
*
* @param actionMapping
* @param actionForm
* @param httpServletRequest
* @param httpServletResponse
* @return Description of the Return Value
*/
public ActionForward execute(ActionMapping actionMapping,
ActionForm actionForm, HttpServletRequest httpServletRequest,
HttpServletResponse httpServletResponse) {
// Seta Retorno (Forward = Sucesso)
ActionForward retorno = actionMapping.findForward("telaSucesso");
// Form
AtualizarEquipeActionForm atualizarEquipeActionForm = (AtualizarEquipeActionForm) actionForm;
// Fachada
Fachada fachada = Fachada.getInstancia();
// Sess�o
HttpSession sessao = httpServletRequest.getSession(false);
String nomeEquipe = atualizarEquipeActionForm.getNomeEquipe();
String placa = atualizarEquipeActionForm.getPlacaVeiculo();
String cargaTrabalho = atualizarEquipeActionForm.getCargaTrabalhoDia();
String idUnidade = atualizarEquipeActionForm.getIdUnidade();
String idPerfilServico = atualizarEquipeActionForm.getIdServicoPerfilTipo();
String indicadorUso = atualizarEquipeActionForm.getIndicadorUso();
String codigoDdd = atualizarEquipeActionForm.getCodigoDdd();
String numeroTelefone = atualizarEquipeActionForm.getNumeroTelefone();
String numeroImei = atualizarEquipeActionForm.getNumeroImei();
String cdUsuarioRespExecServico = atualizarEquipeActionForm.getCdUsuarioRespExecServico();
UnidadeOrganizacional unidade = null;
// Verifica se a unidade organizacional existe e em caso afirmativo
// seta-a no filtro
if (idUnidade != null && !idUnidade.trim().equals("")) {
FiltroUnidadeOrganizacional filtroUnidadeOrganizacional = new FiltroUnidadeOrganizacional();
filtroUnidadeOrganizacional
.adicionarParametro(new ParametroSimples(
FiltroUnidadeOrganizacional.ID, idUnidade));
Collection colecaoUnidade = fachada.pesquisar(
filtroUnidadeOrganizacional, UnidadeOrganizacional.class
.getName());
if (colecaoUnidade == null || colecaoUnidade.isEmpty()) {
throw new ActionServletException(
"atencao.pesquisa_inexistente", null,
"Unidade Organizacional");
}
unidade = (UnidadeOrganizacional) Util.retonarObjetoDeColecao(colecaoUnidade);
}
ServicoPerfilTipo servicoPerfilTipo = null;
// Verifica se o servi�o perfil tipo existe e em caso afirmativo seta-o
// no filtro
if (idPerfilServico != null && !idPerfilServico.trim().equals("")) {
FiltroServicoPerfilTipo filtroServicoPerfilTipo = new FiltroServicoPerfilTipo();
filtroServicoPerfilTipo.adicionarParametro(new ParametroSimples(
FiltroServicoPerfilTipo.ID, idPerfilServico));
Collection colecaoPerfilServico = fachada.pesquisar(
filtroServicoPerfilTipo, ServicoPerfilTipo.class.getName());
if (colecaoPerfilServico == null || colecaoPerfilServico.isEmpty()) {
throw new ActionServletException(
"atencao.pesquisa_inexistente", null,
"Servi�o Perfil Tipo");
}
servicoPerfilTipo = (ServicoPerfilTipo) Util.retonarObjetoDeColecao(colecaoPerfilServico);
}
// Equipe
Equipe equipe = null;
if (sessao.getAttribute("equipeAtualizar") != null) {
// Recupera informa��es da equipe
equipe = (Equipe) sessao.getAttribute("equipeAtualizar");
equipe.setNome(nomeEquipe);
int cargaHoraria = Integer.parseInt(cargaTrabalho)*60;
equipe.setCargaTrabalho(cargaHoraria);
if (placa != null && !placa.trim().equals("")) {
equipe.setPlacaVeiculo(placa);
} else {
equipe.setPlacaVeiculo(null);
}
if (indicadorUso != null && indicadorUso.equals(ConstantesSistema.INDICADOR_USO_ATIVO.toString())) {
equipe.setIndicadorUso(ConstantesSistema.INDICADOR_USO_ATIVO);
} else {
equipe.setIndicadorUso(ConstantesSistema.INDICADOR_USO_DESATIVO);
}
equipe.setCodigoDdd(codigoDdd);
equipe.setNumeroTelefone(numeroTelefone);
equipe.setNumeroImei(new BigDecimal(numeroImei));
equipe.setUnidadeOrganizacional(unidade);
equipe.setServicoPerfilTipo(servicoPerfilTipo);
// Cole��o de Componentes
Collection colecaoEquipeComponentes = (Collection) sessao.getAttribute("colecaoEquipeComponentes");
if (servicoPerfilTipo != null) {
if (servicoPerfilTipo.getComponentesEquipe().intValue() != colecaoEquipeComponentes.size()) {
throw new ActionServletException(
"atencao.quantidade.componentes.diferente.permitido");
}
}
Usuario usuarioLogado = (Usuario) sessao.getAttribute("usuarioLogado");
/*
* -Erivan-
* Verifica a existencia do c�digo do usu�rio informado,
* caso exista, insere na equipe
*/
FiltroUsuario filtroUsuario = new FiltroUsuario();
filtroUsuario.adicionarParametro(new ParametroSimples(FiltroUsuario.ID, cdUsuarioRespExecServico));
Collection colecaoUsuario = Fachada.getInstancia().pesquisar(filtroUsuario, Usuario.class.getName());
if(colecaoUsuario != null && !colecaoUsuario.isEmpty()){
equipe.setUsuarioRespExecServico((Usuario)colecaoUsuario.iterator().next());
}else{
throw new ActionServletException("atencao.pesquisa.usuario.inexistente");
}
equipe.setIndicadorProgramacaoAutomatica(new Short(atualizarEquipeActionForm.getIndicadorProgramacaoAutomatica()));
// Atualiza a Equipe e os equipamentos especiais
fachada.atualizarEquipe(equipe, colecaoEquipeComponentes, usuarioLogado,atualizarEquipeActionForm.getEquipeEquipamentosEspeciais());
// [FS008] Monta a p�gina de sucesso
montarPaginaSucesso(httpServletRequest,
"Equipe "+equipe.getNome()+" atualizada com sucesso.",
"Realizar outra manuten��o de Equipe",
"exibirFiltrarEquipeAction.do?menu=sim");
}
return retorno;
}
}