package br.com.ec.controller;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import javax.inject.Inject;
import javax.inject.Named;
import org.springframework.context.annotation.Scope;
import br.com.ec.core.generic.GenericService;
import br.com.ec.core.util.DataUtils;
import br.com.ec.domain.dto.ClienteDTO;
import br.com.ec.domain.dto.ComercialPosVendaDTO;
import br.com.ec.domain.dto.PosVendaDTO;
import br.com.ec.domain.dto.VendaDTO;
import br.com.ec.domain.model.PosVenda;
import br.com.ec.domain.model.tipos.TipoNpsPosVenda;
import br.com.ec.domain.model.tipos.TipoPeriodoConsulta;
import br.com.ec.domain.service.LancamentoService;
import br.com.ec.domain.service.NpsPosVendaService;
import br.com.ec.domain.service.PosVendaService;
import br.com.ec.domain.service.TransferenciaService;
import br.com.ec.web.exception.VerificadorLancamentoException;
import br.com.ec.web.exception.VerificadorLancamentoException.CommandBean;
import br.com.ec.web.generic.AbstractBean;
import br.com.ec.web.message.LancadorMensagem;
@Named
@Scope
("view")
public class PosVendaBean
extends AbstractBean
<ComercialPosVendaDTO
> implements Serializable {
private static final long serialVersionUID = 1L
;
private PosVendaService posVendaService
;
private NpsPosVendaService npsPosVendaService
;
private LancamentoService lancamentoService
;
private PosVendaDTO posVendaSelecionado
;
public static class NpsItem
{
private final int nota
;
private final String icone
;
private final String estrelas
;
public NpsItem
(int nota,
String icone,
String estrelas
) {
this.
nota = nota
;
this.
icone = icone
;
this.
estrelas = estrelas
;
}
public int getNota
() { return nota
; }
public String getIcone
() { return icone
; }
public String getEstrelas
() { return estrelas
; }
}
@Inject
public PosVendaBean
(PosVendaService posVendaService, NpsPosVendaService npsPosVendaService, LancamentoService lancamentoService
) {
this.
posVendaService = posVendaService
;
this.
lancamentoService = lancamentoService
;
this.
npsPosVendaService = npsPosVendaService
;
}
@
Override
public GenericService
<ComercialPosVendaDTO
> getService
() {
return null;
}
@
Override
public ComercialPosVendaDTO getId
() {
return null;
}
@
Override
public void preCarregamento
() {
limparEntidade
();
}
@
Override
public void limparEntidade
() {
setEntidade
(iniciarDados
());
}
public PosVendaDTO getPosVendaSelecionado
() {
return posVendaSelecionado
;
}
public void setPosVendaSelecionado
(PosVendaDTO posVendaSelecionado
) {
this.
posVendaSelecionado = posVendaSelecionado
;
}
/**************************************************/
public TipoPeriodoConsulta
[] getTiposPeriodoConsulta
() {
return TipoPeriodoConsulta.
values();
}
/**************************************************/
public void consultarPosVenda
() {
new VerificadorLancamentoException
().
tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean
() {
public void execute
() {
// iniciarDados();
ComercialPosVendaDTO comercialDTO =
new ComercialPosVendaDTO
();
List<PosVendaDTO
> listaPosVendaDTO =
new ArrayList<PosVendaDTO
>();
listaPosVendaDTO.
addAll(posVendaService.
consultarNaoFinalizadas());
comercialDTO.
setListaPosVenda(listaPosVendaDTO
);
setEntidade
(comercialDTO
);
}
});
}
public void selecionarPosVenda
(PosVendaDTO posVenda
/* , TipoPosVendaAtivacao tipoAtivacao */) {
new VerificadorLancamentoException
().
tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean
() {
public void execute
() {
// CONSULTAR DETALHES BASEANDO-SE NO TIPO DE ATIVACAO
posVenda.
getVendaDTO().
setListaLancamentos(lancamentoService.
consultarLancamentosDaVenda(posVenda.
getVendaDTO().
getSequencial()));
// CONSULTAR NPS PÓS-VENDA
posVenda.
setNpsPosVendaAtendimento(npsPosVendaService.
consultarPorPosVendaEeTipo(posVenda.
getSequencial(), TipoNpsPosVenda.
ATENDIMENTO_A.
getValor()));
setPosVendaSelecionado
(posVenda
);
}
});
}
public void iniciarSalvarPosVenda
() {
new VerificadorLancamentoException
().
tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean
() {
public void execute
() {
PosVenda posVendaParaAlterar = posVendaService.
consultarPorId(new PosVenda
(getPosVendaSelecionado
().
getSequencial()));
posVendaParaAlterar.
setDataInicio(DataUtils.
getDataAtual());
posVendaParaAlterar.
setObservacao(getPosVendaSelecionado
().
getObservacao());
posVendaParaAlterar.
setTipoFinalizacao(getPosVendaSelecionado
().
getTipoFinalizacao());
posVendaService.
alterar(posVendaParaAlterar
);
LancadorMensagem.
lancarSucesso("PÓS-VENDA INICIADO COM SUCESSO");
}
});
}
private ComercialPosVendaDTO iniciarDados
() {
ComercialPosVendaDTO comercialDTO =
new ComercialPosVendaDTO
();
List<PosVendaDTO
> listaPosVendaDTO =
new ArrayList<PosVendaDTO
>();
listaPosVendaDTO.
addAll(posVendaService.
consultarNaoFinalizadas());
comercialDTO.
setListaPosVenda(listaPosVendaDTO
);
return comercialDTO
;
/*
ComercialPosVendaDTO comercialDTO = new ComercialPosVendaDTO();
List<PosVendaDTO> listaPosVendaDTO = new ArrayList<PosVendaDTO>();
PosVendaDTO posVendaDTO = new PosVendaDTO();
VendaDTO vendaDTO = new VendaDTO();
vendaDTO.setSequencial(new Long(123456));
Date data = DataUtils.acrescentarDias(new Date(), -5);
vendaDTO.setDataVenda(data);
ClienteDTO clienteDTO = new ClienteDTO();
clienteDTO.setNome("BRUNO LOPES PEIXOTO");
clienteDTO.setCpfCnpj("06256954459");
clienteDTO.setContato("82996062514");
vendaDTO.setCliente(clienteDTO);
posVendaDTO.setVendaDTO(vendaDTO);
posVendaDTO.setDataCadastro(data);
listaPosVendaDTO.add(posVendaDTO);
posVendaDTO = new PosVendaDTO();
vendaDTO = new VendaDTO();
vendaDTO.setSequencial(new Long(321654));
vendaDTO.setDataVenda(new Date());
clienteDTO = new ClienteDTO();
clienteDTO.setNome("BÁRBARA ALVES");
clienteDTO.setCpfCnpj("01234567890");
clienteDTO.setContato("8299990000");
vendaDTO.setCliente(clienteDTO);
posVendaDTO.setVendaDTO(vendaDTO);
posVendaDTO.setDataCadastro(new Date());
listaPosVendaDTO.add(posVendaDTO);
comercialDTO.setListaPosVenda(listaPosVendaDTO);
return comercialDTO;
*/
}
}