package gcom.gui.atendimentopublico.ordemservico;
import gcom.atendimentopublico.ordemservico.ArquivoTextoAcompanhamentoServico;
import gcom.atendimentopublico.ordemservico.FiltroArquivoTextoAcompanhamentoServico;
import gcom.atendimentopublico.ordemservico.FiltroMensagemAcompanhamentoServico;
import gcom.atendimentopublico.ordemservico.MensagemAcompanhamentoServico;
import gcom.fachada.Fachada;
import gcom.gui.ActionServletException;
import gcom.gui.GcomAction;
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.Collection;
import java.util.Date;
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;
/**
* [UC12008] Cadastrar Mensagens de Acompanhamento de Servi�os
*
* @author Magno Gouveia
* @since 11/08/2011
*/
public class CadastrarMensagemAcompanhamentoServicoPopupAction extends GcomAction {
public static final String TXAC_ID_PARAMETER = "txac_id";
@Override
public ActionForward execute(ActionMapping actionMapping, ActionForm actionForm, HttpServletRequest httpServletRequest,
HttpServletResponse httpServletResponse) throws Exception {
Integer MAX_LENGTH = 60;
ActionForward retorno = actionMapping.findForward("telaSucessoPopup");
CadastrarMensagemAcompanhamentoServicoPopupActionForm form = (CadastrarMensagemAcompanhamentoServicoPopupActionForm) actionForm;
HttpSession sessao = httpServletRequest.getSession(false);
Fachada fachada = Fachada.getInstancia();
Usuario usuarioLogado = (Usuario) sessao.getAttribute("usuarioLogado");
FiltroArquivoTextoAcompanhamentoServico filtroArquivoTextoAcompanhamentoServico = new FiltroArquivoTextoAcompanhamentoServico();
filtroArquivoTextoAcompanhamentoServico.adicionarParametro(new ParametroSimples(FiltroArquivoTextoAcompanhamentoServico.ID,
httpServletRequest.getParameter(TXAC_ID_PARAMETER)));
filtroArquivoTextoAcompanhamentoServico.adicionarCaminhoParaCarregamentoEntidade("equipe");
filtroArquivoTextoAcompanhamentoServico.adicionarCaminhoParaCarregamentoEntidade("situacaoTransmissaoLeitura");
ArquivoTextoAcompanhamentoServico arquivoTextoAcompanhamentoServico = (ArquivoTextoAcompanhamentoServico) Util.retonarObjetoDeColecao(fachada.pesquisar(filtroArquivoTextoAcompanhamentoServico, ArquivoTextoAcompanhamentoServico.class.getName()));
// FS0001 - Validar Situa��o do Arquivo
if (!arquivoTextoAcompanhamentoServico.getSituacaoTransmissaoLeitura().getId().equals(SituacaoTransmissaoLeitura.EM_CAMPO)) {
throw new ActionServletException("atencao.situacao_diferente_em_campo");
}
// FS0002 - Validar Mensagem
if (form.getMensagem().trim().equals("")) {
throw new ActionServletException("atencao.mensagem_invalida");
}
//Verifica se existe uma mensagem que nao foi recebida ainda pela equipe
FiltroMensagemAcompanhamentoServico filtroMensagemAcompanhamentoServico = new FiltroMensagemAcompanhamentoServico();
filtroMensagemAcompanhamentoServico.adicionarParametro(new ParametroSimples(FiltroMensagemAcompanhamentoServico.ARQUIVO_TEXTO_ACOMPANHAMENTO_SERVICO_ID,
arquivoTextoAcompanhamentoServico.getId()));
Collection colecaoMensagem = fachada.pesquisar(filtroMensagemAcompanhamentoServico,MensagemAcompanhamentoServico.class.getName());
if (colecaoMensagem != null && !colecaoMensagem.equals(null)){
Iterator<MensagemAcompanhamentoServico> itera = colecaoMensagem.iterator();
while (itera.hasNext()) {
MensagemAcompanhamentoServico mensagemAcompanhamentoServico = (MensagemAcompanhamentoServico) itera.next();
if (mensagemAcompanhamentoServico.getIndicadorSituacao() == ConstantesSistema.NAO.intValue() &&
mensagemAcompanhamentoServico.getIndicadorSituacao().equals(ConstantesSistema.NAO.intValue())){
throw new ActionServletException("atencao.nao_possivel.cadastrar_mensagem");
}
}
}
// SB0001 - Cadastrar Mensagem
MensagemAcompanhamentoServico mensagem = new MensagemAcompanhamentoServico();
String msg = form.getMensagem().trim();
if (msg.length() < MAX_LENGTH) {
MAX_LENGTH = msg.length();
}
mensagem.setDescricaoMensagem(msg.substring(0, MAX_LENGTH));
mensagem.setUsuario(usuarioLogado);
mensagem.setArquivoTextoAcompanhamentoServico(arquivoTextoAcompanhamentoServico);
mensagem.setIndicadorSituacao(MensagemAcompanhamentoServico.INDICADOR_SITUACAO_CADASTRADA);
mensagem.setUltimaAlteracao(new Date());
fachada.inserir(mensagem);
sessao.setAttribute("caminhoRetornoVoltar", "/gsan/exibirCadastrarMensagemAcompanhamentoServicoAction.do"
+ CadastrarMensagemAcompanhamentoServicoPopupAction.adicionarParametroIdArquivo(httpServletRequest));
// Monta a p�gina de sucesso
montarPaginaSucesso(httpServletRequest, "Mensagem para equipe "
+ arquivoTextoAcompanhamentoServico.getEquipe().getNome() + " cadastrada com sucesso.", "Retorna para cadastramento de mensagens", "exibirCadastrarMensagemAcompanhamentoServicoAction.do"
+ CadastrarMensagemAcompanhamentoServicoPopupAction.adicionarParametroIdArquivo(httpServletRequest));
form.setMensagem("");
return retorno;
}
public static String adicionarParametroIdArquivo(HttpServletRequest httpServletRequest) {
return "?" + TXAC_ID_PARAMETER + "=" + httpServletRequest.getParameter(TXAC_ID_PARAMETER);
}
}