Subversion Repositories Integrator Subversion

Rev

Rev 106 | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed

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);
        }
       
}