package br.com.ec.domain.service.categoria.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.validador.Validador;
import br.com.ec.domain.model.Categoria;
import br.com.ec.domain.model.IndicadorDRE;
import br.com.ec.domain.service.categoria.CategoriaService;
import br.com.ec.infrastructure.repository.CategoriaRepository;
@Service
public class CategoriaServiceImpl
extends AbstractService
<Categoria
> implements CategoriaService
{
private CategoriaRepository categoriaRepository
;
@Autowired
public CategoriaServiceImpl
(Validador validador, CategoriaRepository categoriaRepository
) {
super(validador
);
this.
categoriaRepository = categoriaRepository
;
}
@
Override
protected GenericRepository
<Categoria
> getRepository
() {
return categoriaRepository
;
}
@
Override
protected void regrasNegocioCadastrar
(Categoria categoria
) {
categoria.
setAtivo(true);
}
@
Override
protected void regrasNegocioExcluir
(Categoria categoria
) {
if (categoriaRepository.
verificarSeCategoriaTemFilhas(categoria
)) {
throw new NegocioException
("Categoria possui filhas. Não pode ser excluída");
}
if (categoriaRepository.
verificarSeJaExisteContaVinculadaCategoria(categoria
)) {
throw new NegocioException
("Categoria vinculada a uma conta. Não pode ser excluída");
}
super.
regrasNegocioExcluir(categoria
);
}
@
Override
public List<Categoria
> consultarCategoriasPaiAtivas
(String tipoCategoria
) {
return categoriaRepository.
consultarCategoriasPaiAtivas(tipoCategoria
);
}
@
Override
public List<Categoria
> consultarCategoriasFilhasAtivas
(Categoria categoriaPai,
String tipoCategoria
) {
return categoriaRepository.
consultarCategoriasFilhasAtivas(categoriaPai, tipoCategoria
);
}
@
Override
public List<Categoria
> consultarCategoriasDRE
(IndicadorDRE indicadorDRE
) {
return categoriaRepository.
consultarCategoriasDRE(indicadorDRE
);
}
}