public synchronized void enviarMensagem(int escolhaUsuario) {
if (StringHelper.isBlank(mensagem)) {
return;
}
try {
Mensagens mensagens = new Mensagens();
mensagens.setDataUltimaMensagem(new Date(System.currentTimeMillis()));
mensagens.setMensagem(mensagem);
Map<String, String> params = getExternalContext().getRequestParameterMap();
String uid = params.get("uid");
if (restringirFraseOfensivas(mensagem)) {
if (escolhaUsuario == 1) {
mensagens.setLogin(visitantes.getLoginVisitante());
mensagens.setUniqueId(visitantes.getUniqueId());
mensagens.setMensagem(MSG_PALAVRAS_OFENSIVA);
mensagens.setNome(visitantes.getNomeVisitante());
} else if (escolhaUsuario == 2) {
mensagens.setLogin(operador.getLogin());
mensagens.setUniqueId(uid);
mensagens.setMensagem(MSG_PALAVRAS_OFENSIVA);
mensagens.setNome(operador.getNome());
}
chatMensagens.add(mensagens);
throw new MensagemException(MSG_PALAVRAS_OFENSIVA, Constants.MSG_ALERT);
}
if (escolhaUsuario == 1) {
Operadores operadoresEmAtendimento = chatOperadores.getOperadoresMap().get(visitantes.getUniqueId());
if (operadoresEmAtendimento != null&&operadoresEmAtendimento.isProntoConversa() && chatOperadores.contains(new Operadores(operadoresEmAtendimento.getLogin()))) {
String hash = visitantes.getUniqueId() + "#mensagemNova";
if (chatMensagens.getMensagensNovasMap().get(hash) != null) {
Mensagens mensagenEspera = new Mensagens();
mensagens.setNome("Sistema");
mensagenEspera.setLogin("Sistema");
mensagenEspera.setDataUltimaMensagem(new Date(System.currentTimeMillis()));
mensagenEspera.setMensagem("Aguarde enquanto sua mensagem é aprovada!");
mensagenEspera.setUniqueId(visitantes.getUniqueId());
BeanHelper.copiarPropriedade(mensagenEspera, mensagens);
chatMensagens.add(mensagenEspera);
} else {
Mensagens mensagenNova = new Mensagens();
//mensagem para o operador
mensagenNova.setDataUltimaMensagem(new Date(System.currentTimeMillis()));
mensagenNova.setMensagem(mensagem);
mensagenNova.setNome(visitantes.getNomeVisitante());
mensagenNova.setTipoUsuario(1);
mensagenNova.setVisitantes(visitantes);
operador.setIdUnique(visitantes.getUniqueId());
mensagenNova.setOperador(operador);
mensagenNova.setUniqueId(visitantes.getUniqueId());
mensagenNova.setLogin(visitantes.getLoginVisitante());
BeanHelper.copiarPropriedade(mensagenNova, mensagens);
ControleMensagens controleMensagens = controleMensagensSBeanLocal.consultaPorLogin(operadoresEmAtendimento.getLogin());
if (controleMensagens != null && !controleMensagens.getMensagemAutomatica()) {
chatMensagens.addMsgNova(visitantes.getUniqueId() + "#mensagemNova", mensagenNova);
info("Aguarde enquanto sua mensagem esta sendo aprovada!");
RequestContext.getCurrentInstance().update(":visitantesForm:growMsgs");
mensagem = null;
return;
} else {
LinkedList<Mensagens> mensagensList = (LinkedList<Mensagens>) chatMensagens.getMensagensList(uid);
boolean b = false;
if (mensagensList != null) {
for (int i = mensagensList.size() - 1; i >= 0; i--) {
Mensagens m = mensagensList.get(i);
if ((m.getVisitantes() != null) && (m.getTipoUsuario() == 1)) {
m.setMensagem(m.getMensagem() + "<br />" + mensagenNova.getMensagem());
b = true;
break;
} else {
break;
}
}
if (b) {
chatMensagens.put(uid, mensagensList);
}
}
if (!b) {
chatMensagens.add(mensagenNova);
}
}
}
} else if (chatOperadores.getOperadoresMap().get(visitantes.getUniqueId()) == null || !chatOperadores.getOperadoresList().isEmpty()) {
mensagens.setNome("Sistema");
mensagens.setLogin("Sistema");
mensagens.setUniqueId(visitantes.getUniqueId());
mensagens.setVisitantes(visitantes);
mensagens.setMensagem("Aguarde enquanto um dos operadores fiquem online!");
chatMensagens.add(mensagens);
}
} else {
if (!chatVisitantes.getVisitantesList().isEmpty()) {
if (StringHelper.isBlank(uid)) {
return;
}
LinkedList<Mensagens> mensagensList = (LinkedList<Mensagens>) chatMensagens.getMensagensList(uid);
boolean b = false;
if (mensagensList != null) {
for (int i = mensagensList.size() - 1; i >= 0; i--) {
Mensagens m = mensagensList.get(i);
if ((m.getOperador() != null) && (m.getTipoUsuario() == 2)) {
m.setMensagem(m.getMensagem() + "<br />" + mensagens.getMensagem());
b = true;
break;
} else {
break;
}