package br.com.ec.domain.service.impl;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import br.com.ec.core.exception.NegocioException;
import br.com.ec.core.generic.AbstractService;
import br.com.ec.core.generic.GenericRepository;
import br.com.ec.core.util.DataUtils;
import br.com.ec.core.util.VerificadorUtil;
import br.com.ec.core.validador.Validador;
import br.com.ec.domain.dto.ComercialPosVendaDTO;
import br.com.ec.domain.dto.NpsPosVendaDTO;
import br.com.ec.domain.dto.PosVendaDTO;
import br.com.ec.domain.model.PosVenda;
import br.com.ec.domain.model.tipos.TipoNpsPosVenda;
import br.com.ec.domain.service.NpsPosVendaService;
import br.com.ec.domain.service.PosVendaService;
import br.com.ec.domain.service.VendaService;
import br.com.ec.repository.PosVendaRepository;
@Service
public class PosVendaServiceImpl
extends AbstractService
<PosVenda
> implements PosVendaService
{
private PosVendaRepository posVendaRepository
;
private NpsPosVendaService npsPosVendaService
;
private VendaService vendaService
;
@Autowired
public PosVendaServiceImpl
(Validador validador, PosVendaRepository posVendaRepository, NpsPosVendaService npsPosVendaService,
VendaService vendaService
) {
super(validador
);
this.
posVendaRepository = posVendaRepository
;
this.
npsPosVendaService = npsPosVendaService
;
this.
vendaService = vendaService
;
}
@
Override
protected GenericRepository
<PosVenda
> getRepository
() {
return posVendaRepository
;
}
@
Override
public ComercialPosVendaDTO consultarPosVendaEmAndamento
() {
ComercialPosVendaDTO comercialPosVendaDTO =
new ComercialPosVendaDTO
();
List<PosVendaDTO
> listaPosVendaNaoFinalizadas = posVendaRepository.
consultarNaoFinalizadas();
for (PosVendaDTO posVendaNaoFinalizada : listaPosVendaNaoFinalizadas
) {
if (VerificadorUtil.
naoEstaNulo(posVendaNaoFinalizada.
getSequencialDaVenda())) {
posVendaNaoFinalizada.
setVendaDTO(vendaService.
detalharPorSequencial(posVendaNaoFinalizada.
getSequencialDaVenda()));
}
NpsPosVendaDTO npsPosVendaAgradecimento = npsPosVendaService.
consultarPorPosVendaEeTipo(posVendaNaoFinalizada.
getSequencial(), TipoNpsPosVenda.
ATENDIMENTO_A.
getValor());
if (VerificadorUtil.
naoEstaNulo(npsPosVendaAgradecimento
)) {
if (VerificadorUtil.
estaNulo(npsPosVendaAgradecimento.
getDataFinalizacao())) {
posVendaNaoFinalizada.
setNpsPosVendaAgradecimento(npsPosVendaAgradecimento
);
comercialPosVendaDTO.
getListaPosVendaAgradecimento().
add(posVendaNaoFinalizada
);
}
} else {
comercialPosVendaDTO.
getListaPosVendaAgradecimento().
add(posVendaNaoFinalizada
);
}
posVendaNaoFinalizada.
setNpsPosVendaAgradecimento(npsPosVendaService.
consultarPorPosVendaEeTipo(posVendaNaoFinalizada.
getSequencial(), TipoNpsPosVenda.
ATENDIMENTO_A.
getValor()));
}
comercialPosVendaDTO.
setListaEmAndamento(listaPosVendaNaoFinalizadas
);
return comercialPosVendaDTO
;
}
@
Override
public void iniciarAtendimento
(PosVendaDTO posVendaDTO
) {
try {
PosVenda posVendaParaAlterar =
this.
consultarPorId(new PosVenda
(posVendaDTO.
getSequencial()));
posVendaParaAlterar.
setDataInicio(DataUtils.
getDataAtual());
posVendaParaAlterar.
setObservacao(posVendaDTO.
getObservacao());
posVendaParaAlterar.
setTipoFinalizacao(posVendaDTO.
getTipoFinalizacao());
// NpsPosVendaDTO npsPosVendaDTO = npsPosVendaService.consultarPorPosVendaEeTipo(posVendaDTO.getSequencial(), TipoNpsPosVenda.ATENDIMENTO_A.getValor());
// NpsPosVenda npsPosVenda = npsPosVendaService.consultarPorId(new NpsPosVenda(npsPosVendaDTO.getSequencial()));
// npsPosVendaService.alterar(npsPosVenda);
this.
alterar(posVendaParaAlterar
);
} catch (Exception e
) {
throw new NegocioException
(e.
getMessage());
}
}
}