package br.com.ec.domain.service.pendencia.impl;
import java.util.Date;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
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.validador.Validador;
import br.com.ec.domain.dto.PendenciaDTO;
import br.com.ec.domain.model.Loja;
import br.com.ec.domain.model.Pendencia;
import br.com.ec.domain.model.Perfil;
import br.com.ec.domain.model.Usuario;
import br.com.ec.domain.service.pendencia.PendenciaService;
import br.com.ec.infrastructure.repository.PendenciaRepository;
@Service
public class PendenciaServiceImpl
extends AbstractService
<Pendencia
> implements PendenciaService
{
private PendenciaRepository pendenciaRepository
;
@Autowired
public PendenciaServiceImpl
(Validador validador, PendenciaRepository pendenciaRepository
) {
super(validador
);
this.
pendenciaRepository = pendenciaRepository
;
}
@
Override
protected GenericRepository
<Pendencia
> getRepository
() {
return pendenciaRepository
;
}
@
Override
protected void regrasNegocioCadastrar
(Pendencia pendencia
) {
pendencia.
setData(DataUtils.
getDataAtual());
pendencia.
setIndicadorFinalizado(false);
}
@
Override
public Integer quantidadePendenciasNaoFinalizadas
(Loja loja
) {
Pendencia pendencia =
new Pendencia
();
pendencia.
setLoja(loja
);
pendencia.
setIndicadorFinalizado(false);
return this.
obterQuantidadeDeRegistrosPassandoEntidade(pendencia
);
}
@
Override
public Integer obterQuantidadePendenciasNaoFinalizadasPorLojaPerfilEePeriodo
(Loja loja, Perfil perfil,
Date dataInicial,
Date dataFinal
) {
return pendenciaRepository.
obterQuantidadePendenciasNaoFinalizadasPorLojaPerfilEePeriodo(loja, perfil, dataInicial, dataFinal
);
}
@
Override
public Integer obterQuantidadePendenciasRespondidasNaoLidas
(Usuario solicitante,
Date dataFinalizado
) {
return pendenciaRepository.
obterQuantidadePendenciasRespondidasNaoLidas(solicitante, dataFinalizado
);
}
@
Override
public List<PendenciaDTO
> consultarUltimasPendenciasAtendidas
(Pendencia pendencia
) {
return pendenciaRepository.
consultarUltimasPendenciasAtendidas(pendencia
);
}
@
Override
public void lerRepostaPendencia
(Long sequencialPendencia
) {
pendenciaRepository.
lerRepostaPendencia(sequencialPendencia
);
}
}