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;
}
}