package br.com.ec.domain.service.marca.impl;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import br.com.ec.domain.model.Marca;
import br.com.ec.domain.service.marca.MarcaService;
import br.com.ec.infrastructure.repository.MarcaRepository;
import br.edu.cesmac.core.generic.AbstractService;
import br.edu.cesmac.core.generic.GenericRepository;
import br.edu.cesmac.core.util.VerificadorUtil;
import br.edu.cesmac.core.validador.Validador;
@Service
public class MarcaServiceImpl
extends AbstractService
<Marca
> implements MarcaService
{
private MarcaRepository marcaRepository
;
@Autowired
public MarcaServiceImpl
(Validador validador, MarcaRepository marcaRepository
) {
super(validador
);
this.
marcaRepository = marcaRepository
;
}
@
Override
protected GenericRepository
<Marca
> getRepository
() {
return marcaRepository
;
}
@
Override
protected void regrasNegocioCadastrar
(Marca marca
) {
marca.
setAtivo(true);
}
@
Override
public List<Marca
> marcasComContagemAtiva
() {
return marcaRepository.
marcasComContagemAtiva();
}
@
Override
public void proximoCiclo
() {
Integer proximoCiclo =
1;
List<Marca
> marcasComContagemAtivas = marcaRepository.
marcasComContagemAtiva();
for (Marca marca : marcasComContagemAtivas
) {
if (VerificadorUtil.
naoEstaNulo(marca.
getCiclo())) {
proximoCiclo = marca.
getCiclo() +
1;
break;
}
}
for (Marca marca : marcasComContagemAtivas
) {
marca.
setIndicadorContagemSolicitada(false);
alterar
(marca
);
}
List<Marca
> marcasProximoCiclo = marcaRepository.
marcasComCiclo(proximoCiclo
);
if (VerificadorUtil.
isListaNulaOuVazia(marcasProximoCiclo
)) {
marcasProximoCiclo = marcaRepository.
marcasComCiclo(1);
}
for (Marca marca : marcasProximoCiclo
) {
marca.
setIndicadorContagemSolicitada(true);
alterar
(marca
);
}
}
}