GARANTIR DESCONTO

Fórum Sistema Help Desk #460773

11/11/2013

0

Boa noite pessoal,

Estou fazendo o exemplo da revista Java: [url]https://www.devmedia.com.br/help-desk-com-javaserver-faces-2/28713[/url] e gostaria de saber se alguém já conseguiu fazer um modalidade de Help Desk que suportasse vários atendimentos e não somente um por vez. Do mesmo jeito que hoje está o exemplo, porém permitindo atender mais pessoas.

Se alguém puder me ajudar.

Obrigado
Josivan Laskoski

Josivan Laskoski

Responder

Posts

12/11/2013

Josivan Laskoski

Bom dia,

Alguém tem alguma sugestão?

Obrigado
Responder

Gostei + 0

12/11/2013

[desativado] Gonçalves

Josivan,

me dê maiores detalhes para ver se eu consigo te ajudar.

eu não consigo ler o artigo que você falou porque não sou MVP no site. O que você quer exatamente? Criar um sistema de helpdesk?
Responder

Gostei + 0

12/11/2013

Josivan Laskoski

Exato, preciso criar um chat com duas modalidades, atendimento exclusivo, ou seja, voce como atendente so pode atender somente um cliente por vez ou atendimento multiplo, onde o atendente pode atender várias pessoas ao mesmo tempo.

A parte de atender somente um cliente por vez está ok, o proprio exemplo trabalha muito bem, porém preciso agora conseguir trabalhar com multiplos usuarios

O exemplo traz a seguinte classe:

@ManagedBean(name = "chatMb")
@SessionScoped
public class ChatBean implements Serializable {

    @ManagedProperty(value = "#")
    private HelpDeskManagerLocatorBean managerLocator;
    private String message;
    private String chatId;
    private String userName;

    public HelpDeskManagerLocatorBean getManagerLocator() {
        return managerLocator;
    }

    public void setManagerLocator(HelpDeskManagerLocatorBean managerLocator) {
        this.managerLocator = managerLocator;
    }

    public String getMessage() {
        return message;
    }

    public void setMessage(String message) {
        this.message = message;
    }

    public String getChatId() {
        return chatId;
    }

    public void setChatId(String chatId) {
        this.chatId = chatId;
    }

    public String getUserName() {
        return userName;
    }

    public void setUserName(String userName) {
        this.userName = userName;
    }

    public boolean isReady() {
        return managerLocator.getManager().hasChat(getChatId());
    }

    public Chat getChat() {
        return managerLocator.getManager().getChat(getChatId());
    }

    public void close() {
        managerLocator.getManager().closeChat(getChatId());
        reset(null, null);
    }

    public void sendMessage() {
        getChat().addMessage(getMessage(), getUserName());
        setMessage("");
    }

    public List<Message> getMessages() {
        List<Message> result = null;
        if (isReady()) {
            result = getChat().getMessages();
        }
        return result;
    }

    public void reset(String chatId, String userName) {
        setChatId(chatId);
        setUserName(userName);
        setMessage("");
    }
}


E o xhtml que trabalha com o chat é o seguinte

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml" 
      xmlns:h="http://java.sun.com/jsf/html" 
      xmlns:f="http://java.sun.com/jsf/core" 
      xmlns:ui="http://java.sun.com/jsf/facelets" 
      xmlns:p="http://primefaces.org/ui"> 
    <h:head> 
        <title>Chat</title> 
    </h:head> 
    <h:body> 
        <h:form> 
            <p:panel header="Chat"> 
                <p:poll update="pnlMessages pnlChatClosed pnlButtons" interval="1" /> 
                <p:outputPanel id="pnlMessages"> 
                    <p:outputPanel rendered="#{chatMb.ready}"> 
                        <div id="chat" style="height: 250px; width: 100%; overflow: auto; border: 1px solid #000;"> 
                            <ui:repeat var="message" value="#{chatMb.messages}"> 
                                <div class="msg"> <h:outputText value="#{message.date}" /> 
                                    <strong><h:outputText value="#{message.author}" /> </strong>: 
                                    <h:outputText value="#{message.content}" /> 
                                </div> 
                            </ui:repeat> 
                        </div> 
                    </p:outputPanel> 
                </p:outputPanel> 
                <br /> 
                <p:outputPanel id="pnlChat"> 
                    <p:outputPanel> 
                        <h:panelGrid columns="2"> 
                            <p:inputTextarea id="txaMessage" rows="4" cols="40" style="width: 350px" counter="ctrMessage" maxlength="100" value="#{chatMb.message}" counterTemplate=" caracteres restantes." autoResize="false" /> 
                            <h:panelGrid id="pnlButtons" columns="1"> 
                                <p:commandButton value="Enviar!" style="width: 100px;" disabled="#{not chatMb.ready}" action="#{chatMb.sendMessage}" update="txaMessage" /> 
                                <p:commandButton value="Sair" action="#{chatMb.close}" disabled="#{not chatMb.ready}" style="width: 100px;" oncomplete="window.close();" update="pnlChat" /> 
                            </h:panelGrid> 
                            <h:outputText id="ctrMessage" /> 
                        </h:panelGrid> 
                    </p:outputPanel> 
                    <p:outputPanel id="pnlChatClosed"> 
                        <h:outputText value="Chat Fechado!" rendered="#{not chatMb.ready}" /> 
                    </p:outputPanel> 
                </p:outputPanel> 
            </p:panel> 
        </h:form> 
    </h:body> 
</html>


O meu problema nesse exemplo está na seguinte situação: O metodo é invocado toda vez que o atendente quer atender um cliente, ou seja, quando o atendente quer atender um segundo cliente o metodo reset é disparado e limpado as variaveis colocando o nome do ultimo cliente, ou seja, o primeiro cliente que foi atendido "se perdeu" pois a referencia para envio de msg está nesse nome, agora o atendente para de mandar msg para o primeiro cliente so consegue mandar para o segundo cliente.

E o segundo problema é que essa classe é usada na abertura de chat tanto para o cliente quanto para o atendente, ou seja, toda vez que é um novo cliente iniciando um chat, a classe para aquele novo cliente é instanciada do zero.

Então nao sei como faço para manter uma lista de atendente x cliente"S".

Não sei se consegui me explicar, mas esse é o meu problema

Obrigado!
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar