try {
if(!statusChat){
throw new MensagemException("Você tem que ficar online para abrir um chat de conversa!", Constants.MSG_ALERT);
}
RequestContext requestContext = RequestContext.getCurrentInstance();
Map<String, String> params = getExternalContext().getRequestParameterMap();
final String uid = params.get("uid");
Operadores op = chatOperadores.getOperadoresMap().get(uid);
if (op != null && !op.getLogin().equals(operador.getLogin()) && op.isProntoConversa()) {
warn("O operador " + op.getLogin() + " já esta em atendimento!");
requestContext.update(":painelAdminForm:msgs");
return;
}
Visitantes v = (Visitantes) CollectionUtils.find(chatVisitantes.getVisitantesList(), new Predicate() {
@Override
public boolean evaluate(Object input) {
Visitantes visitantes = (Visitantes) input;
return visitantes.getUniqueId().equals(uid);
}
});
Object o = chatOperadores.getOperadoresMap().get(uid);
if (o == null) {
Mensagens mensagens = new Mensagens();
mensagens.setMensagem("Pronto, em que posso lhe ajudar!");
mensagens.setOperador(operador);
mensagens.setUniqueId(uid);
ConversaHistorico conversaHistorico = new ConversaHistorico();
conversaHistorico.setNome(operador.getNome());
conversaHistorico.setLogin(operador.getLogin());
conversaHistorico.setDataMensagem(new Date(System.currentTimeMillis()));
conversaHistorico.setDescricaoConversa(mensagens.getMensagem());
conversaHistorico.setUniqueId(v.getUniqueId());
conversaHistoricoSBeanLocal.salvar(conversaHistorico);
chatMensagens.add(mensagens);
}
v.setLoginOperador(operador.getLogin());
visitantesSBeanLocal.alterar(v);
operador.setVisitantes(v);
operador.setIdUnique(v.getUniqueId());
chatVisitantes.addVisistanteUID(uid, v);
operador.setProntoConversa(true);
chatOperadores.addOpMap(uid, operador);
List<Operadores> operadoresList = chatOperadores.getOperadoresList();
for (Operadores operadores : operadoresList) {
if (operadores.getLogin().equals(operador.getLogin())) {
operadores.setProntoConversa(true);
statusChat=true;
break;
}
}
List<Visitantes> visitantesList = chatVisitantes.getVisitantesList();
for (Visitantes visit : visitantesList) {
if (visit.getLoginVisitante().equals(v.getLoginVisitante())) {
visit.setEmAtendimento(true);
break;
}
}
requestContext.execute("abrirJanelaBatePapo('" + uid + "','" + v.getLoginVisitante() + "')");
} catch (Exception ex) {
tratamentoException.tratar(ex);
}
}