Subversion Repositories Integrator Subversion

Rev

Rev 636 | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed

package br.com.ec.domain.dto;

import java.util.Date;
import java.util.List;

import javax.persistence.Transient;

import br.com.ec.core.util.VerificadorUtil;
import br.com.ec.domain.model.NpsPosVenda;

public class PosVendaDTO {
       
        // INICIAR PÓS-VENDA APÓS A REALIZAÇÃO DE UMA VENDA COM O CONTATO DO CLIENTE
        // PARA FINALIZAR, AO MENOS, É PRECISO TER AS DUAS ATIVAÇÕES INICIAIS (AGRADECIMENTO+NPS ATENDIMENTO E NPS DO PRODUTO
       
        private Long sequencial;
        private VendaDTO vendaDTO;
        private ClienteDTO clienteDTO;
        private Date dataCadastro;
        private Date dataInicio;
        private Date dataFinalizacao;
        private String tipoFinalizacao; // A - ATENDIMENTO ENCERRADO // V - NOVA VENDA
        private String observacao;
        private String scriptAtivacaoAgradecimento;
       
        private NpsPosVendaDTO npsPosVendaAgradecimento;
        private NpsPosVendaDTO npsPosVendaProduto;
       
        private List<PosVendaAtivacaoDTO> listaAtivacoes;
       
        public PosVendaDTO() {}
       
        public PosVendaDTO(Long sequencial) {
                this.sequencial = sequencial;
        }
       
        public static String CONSULTA_DTO_SIMPLES = "e.sequencial, "
                        + " (SELECT vd.sequencial FROM Venda vd WHERE vd.sequencial = e.venda.sequencial), "
//                      + "e.venda.sequencial, e.venda.dataVenda, "
                        + "e.cliente.sequencial, e.cliente.nome, e.cliente.cpfCnpj, e.cliente.dataNascimento,"
                        + "e.cliente.contato, e.cliente.telefone, e.dataCadastro, e.dataInicio, e.dataFinalizacao, e.tipoFinalizacao, e.observacao";
        public PosVendaDTO(Long sequencial, Long sequencialVenda, Long sequencialCliente, String nomeCliente, String cpfCnpjCliente,
                        Date dataNascimentoCliente, String contatoCliente, String telefoneCliente, Date dataCadastro, Date dataInicio, Date dataFinalizacao,
                        String tipoFinalizacao, String observacao) {
                super();
                this.sequencial = sequencial;
                VendaDTO vendaDTO = new VendaDTO(sequencialVenda);
                this.vendaDTO = vendaDTO;
                this.clienteDTO = new ClienteDTO(sequencialCliente, nomeCliente, cpfCnpjCliente, dataNascimentoCliente, contatoCliente, telefoneCliente);
                this.dataCadastro = dataCadastro;
                this.dataInicio = dataInicio;
                this.dataFinalizacao = dataFinalizacao;
                this.tipoFinalizacao = tipoFinalizacao;
                this.observacao = observacao;
        }
       
        public Long getSequencial() {
                return sequencial;
        }
        public void setSequencial(Long sequencial) {
                this.sequencial = sequencial;
        }
       
        public VendaDTO getVendaDTO() {
                return vendaDTO;
        }
        public void setVendaDTO(VendaDTO vendaDTO) {
                this.vendaDTO = vendaDTO;
        }
       
        public ClienteDTO getClienteDTO() {
                return clienteDTO;
        }
        public void setClienteDTO(ClienteDTO clienteDTO) {
                this.clienteDTO = clienteDTO;
        }
       
        public Date getDataCadastro() {
                return dataCadastro;
        }
        public void setDataCadastro(Date dataCadastro) {
                this.dataCadastro = dataCadastro;
        }
       
        public Date getDataInicio() {
                return dataInicio;
        }
        public void setDataInicio(Date dataInicio) {
                this.dataInicio = dataInicio;
        }
       
        public Date getDataFinalizacao() {
                return dataFinalizacao;
        }
        public void setDataFinalizacao(Date dataFinalizacao) {
                this.dataFinalizacao = dataFinalizacao;
        }
       
        public String getObservacao() {
                return observacao;
        }
        public void setObservacao(String observacao) {
                this.observacao = observacao;
        }
       
        public String getTipoFinalizacao() {
                return tipoFinalizacao;
        }
        public void setTipoFinalizacao(String tipoFinalizacao) {
                this.tipoFinalizacao = tipoFinalizacao;
        }
       
        public NpsPosVendaDTO getNpsPosVendaAgradecimento() {
                return npsPosVendaAgradecimento;
        }
        public void setNpsPosVendaAgradecimento(NpsPosVendaDTO npsPosVendaAgradecimento) {
                this.npsPosVendaAgradecimento = npsPosVendaAgradecimento;
        }
       
        public NpsPosVendaDTO getNpsPosVendaProduto() {
                return npsPosVendaProduto;
        }
        public void setNpsPosVendaProduto(NpsPosVendaDTO npsPosVendaProduto) {
                this.npsPosVendaProduto = npsPosVendaProduto;
        }
       
        public List<PosVendaAtivacaoDTO> getListaAtivacoes() {
                return listaAtivacoes;
        }
        public void setListaAtivacoes(List<PosVendaAtivacaoDTO> listaAtivacoes) {
                this.listaAtivacoes = listaAtivacoes;
        }
       
        public String getScriptAtivacaoAgradecimento() {
                String scriptAtivacaoAgradecimento = "Olá, [Nome]! 👋"
                                + "\nAgradecemos por comprar na Espaço Case! 💙"
                                + "\nEsperamos que você curta muito o seu novo produto."
                                + "\nSe precisar de ajuda com algo ou quiser dicas de uso, estamos por aqui! 😉"
                                + "\n\n📲 Siga a gente no Instagram para novidades e promoções: @espacocaseoficial"
                                + "\n\nPara melhorar nosso atendimento, que tal responder rapidinho?"
                                + "\nDe 1 a 5, qual a probabilidade de você recomendar nosso atendimento para um amigo?"
                                + "\n*Avalie no link a baixo:*"
                                + "\n👉 [Link]"
                                + "";
                scriptAtivacaoAgradecimento = scriptAtivacaoAgradecimento.replace("[Link]", linkNpsAtendimento());
                if (VerificadorUtil.naoEstaNulo(getClienteDTO())) {
                        scriptAtivacaoAgradecimento = scriptAtivacaoAgradecimento.replace("[Nome]", getClienteDTO().getObterPrimeiroNome());
                }
                return scriptAtivacaoAgradecimento;
        }
        public void setScriptAtivacaoAgradecimento(String scriptAtivacaoAgradecimento) {
                this.scriptAtivacaoAgradecimento = scriptAtivacaoAgradecimento;
        }
       
        public String linkNpsAtendimento() {
                return "https://espacocase.net/novo/sistema/comercial/nps_atendimento.xhtml?sq=" + getSequencial();
        }
       
        public String descricaoDaSituacaoAgradecimento() {
                return VerificadorUtil.estaNulo(getDataInicio())? "PENDENTE" :
                        VerificadorUtil.naoEstaNulo(getNpsPosVendaAgradecimento())?
                                        VerificadorUtil.naoEstaNulo(getNpsPosVendaAgradecimento().getDataFinalizacao())? "REALIZADO" : "EM ANDAMENTO" : "EM ANDAMENTO";
        }
       
        public String corDaSituacaoAgradecimento() {
                return VerificadorUtil.estaNulo(getDataInicio())? "danger" :
                        VerificadorUtil.naoEstaNulo(getNpsPosVendaAgradecimento())?
                                        VerificadorUtil.naoEstaNulo(getNpsPosVendaAgradecimento().getDataFinalizacao())? "success" : "warning" : "warning";
        }
       
        public String notaNpsPosVendaAtendimento() {
                return VerificadorUtil.naoEstaNulo(getNpsPosVendaAgradecimento())? "" + getNpsPosVendaAgradecimento().getNota() : "SEM NOTA!";
        }
       
        public Long getSequencialDaVenda() {
                return VerificadorUtil.naoEstaNulo(getVendaDTO())? VerificadorUtil.naoEstaNulo(getVendaDTO().getSequencial())? getVendaDTO().getSequencial() : null : null;
        }
       
}